]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/lib/Target/Hexagon/HexagonDepInstrInfo.td
Merge ^/head r340918 through r341763.
[FreeBSD/FreeBSD.git] / contrib / llvm / lib / Target / Hexagon / HexagonDepInstrInfo.td
1 //===- HexagonDepInstrInfo.td ---------------------------------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 // Automatically generated file, please consult code owner before editing.
10 //===----------------------------------------------------------------------===//
11
12
13 def A2_abs : HInst<
14 (outs IntRegs:$Rd32),
15 (ins IntRegs:$Rs32),
16 "$Rd32 = abs($Rs32)",
17 tc_c2f7d806, TypeS_2op>, Enc_5e2823 {
18 let Inst{13-5} = 0b000000100;
19 let Inst{31-21} = 0b10001100100;
20 let hasNewValue = 1;
21 let opNewValue = 0;
22 let prefersSlot3 = 1;
23 }
24 def A2_absp : HInst<
25 (outs DoubleRegs:$Rdd32),
26 (ins DoubleRegs:$Rss32),
27 "$Rdd32 = abs($Rss32)",
28 tc_c2f7d806, TypeS_2op>, Enc_b9c5fb {
29 let Inst{13-5} = 0b000000110;
30 let Inst{31-21} = 0b10000000100;
31 let prefersSlot3 = 1;
32 }
33 def A2_abssat : HInst<
34 (outs IntRegs:$Rd32),
35 (ins IntRegs:$Rs32),
36 "$Rd32 = abs($Rs32):sat",
37 tc_c2f7d806, TypeS_2op>, Enc_5e2823 {
38 let Inst{13-5} = 0b000000101;
39 let Inst{31-21} = 0b10001100100;
40 let hasNewValue = 1;
41 let opNewValue = 0;
42 let prefersSlot3 = 1;
43 let Defs = [USR_OVF];
44 }
45 def A2_add : HInst<
46 (outs IntRegs:$Rd32),
47 (ins IntRegs:$Rs32, IntRegs:$Rt32),
48 "$Rd32 = add($Rs32,$Rt32)",
49 tc_b9488031, TypeALU32_3op>, Enc_5ab2be, PredNewRel, ImmRegRel {
50 let Inst{7-5} = 0b000;
51 let Inst{13-13} = 0b0;
52 let Inst{31-21} = 0b11110011000;
53 let hasNewValue = 1;
54 let opNewValue = 0;
55 let CextOpcode = "A2_add";
56 let InputType = "reg";
57 let BaseOpcode = "A2_add";
58 let isCommutable = 1;
59 let isPredicable = 1;
60 }
61 def A2_addh_h16_hh : HInst<
62 (outs IntRegs:$Rd32),
63 (ins IntRegs:$Rt32, IntRegs:$Rs32),
64 "$Rd32 = add($Rt32.h,$Rs32.h):<<16",
65 tc_897d1a9d, TypeALU64>, Enc_bd6011 {
66 let Inst{7-5} = 0b011;
67 let Inst{13-13} = 0b0;
68 let Inst{31-21} = 0b11010101010;
69 let hasNewValue = 1;
70 let opNewValue = 0;
71 let prefersSlot3 = 1;
72 }
73 def A2_addh_h16_hl : HInst<
74 (outs IntRegs:$Rd32),
75 (ins IntRegs:$Rt32, IntRegs:$Rs32),
76 "$Rd32 = add($Rt32.h,$Rs32.l):<<16",
77 tc_897d1a9d, TypeALU64>, Enc_bd6011 {
78 let Inst{7-5} = 0b010;
79 let Inst{13-13} = 0b0;
80 let Inst{31-21} = 0b11010101010;
81 let hasNewValue = 1;
82 let opNewValue = 0;
83 let prefersSlot3 = 1;
84 }
85 def A2_addh_h16_lh : HInst<
86 (outs IntRegs:$Rd32),
87 (ins IntRegs:$Rt32, IntRegs:$Rs32),
88 "$Rd32 = add($Rt32.l,$Rs32.h):<<16",
89 tc_897d1a9d, TypeALU64>, Enc_bd6011 {
90 let Inst{7-5} = 0b001;
91 let Inst{13-13} = 0b0;
92 let Inst{31-21} = 0b11010101010;
93 let hasNewValue = 1;
94 let opNewValue = 0;
95 let prefersSlot3 = 1;
96 }
97 def A2_addh_h16_ll : HInst<
98 (outs IntRegs:$Rd32),
99 (ins IntRegs:$Rt32, IntRegs:$Rs32),
100 "$Rd32 = add($Rt32.l,$Rs32.l):<<16",
101 tc_897d1a9d, TypeALU64>, Enc_bd6011 {
102 let Inst{7-5} = 0b000;
103 let Inst{13-13} = 0b0;
104 let Inst{31-21} = 0b11010101010;
105 let hasNewValue = 1;
106 let opNewValue = 0;
107 let prefersSlot3 = 1;
108 }
109 def A2_addh_h16_sat_hh : HInst<
110 (outs IntRegs:$Rd32),
111 (ins IntRegs:$Rt32, IntRegs:$Rs32),
112 "$Rd32 = add($Rt32.h,$Rs32.h):sat:<<16",
113 tc_b44c6e2a, TypeALU64>, Enc_bd6011 {
114 let Inst{7-5} = 0b111;
115 let Inst{13-13} = 0b0;
116 let Inst{31-21} = 0b11010101010;
117 let hasNewValue = 1;
118 let opNewValue = 0;
119 let prefersSlot3 = 1;
120 let Defs = [USR_OVF];
121 }
122 def A2_addh_h16_sat_hl : HInst<
123 (outs IntRegs:$Rd32),
124 (ins IntRegs:$Rt32, IntRegs:$Rs32),
125 "$Rd32 = add($Rt32.h,$Rs32.l):sat:<<16",
126 tc_b44c6e2a, TypeALU64>, Enc_bd6011 {
127 let Inst{7-5} = 0b110;
128 let Inst{13-13} = 0b0;
129 let Inst{31-21} = 0b11010101010;
130 let hasNewValue = 1;
131 let opNewValue = 0;
132 let prefersSlot3 = 1;
133 let Defs = [USR_OVF];
134 }
135 def A2_addh_h16_sat_lh : HInst<
136 (outs IntRegs:$Rd32),
137 (ins IntRegs:$Rt32, IntRegs:$Rs32),
138 "$Rd32 = add($Rt32.l,$Rs32.h):sat:<<16",
139 tc_b44c6e2a, TypeALU64>, Enc_bd6011 {
140 let Inst{7-5} = 0b101;
141 let Inst{13-13} = 0b0;
142 let Inst{31-21} = 0b11010101010;
143 let hasNewValue = 1;
144 let opNewValue = 0;
145 let prefersSlot3 = 1;
146 let Defs = [USR_OVF];
147 }
148 def A2_addh_h16_sat_ll : HInst<
149 (outs IntRegs:$Rd32),
150 (ins IntRegs:$Rt32, IntRegs:$Rs32),
151 "$Rd32 = add($Rt32.l,$Rs32.l):sat:<<16",
152 tc_b44c6e2a, TypeALU64>, Enc_bd6011 {
153 let Inst{7-5} = 0b100;
154 let Inst{13-13} = 0b0;
155 let Inst{31-21} = 0b11010101010;
156 let hasNewValue = 1;
157 let opNewValue = 0;
158 let prefersSlot3 = 1;
159 let Defs = [USR_OVF];
160 }
161 def A2_addh_l16_hl : HInst<
162 (outs IntRegs:$Rd32),
163 (ins IntRegs:$Rt32, IntRegs:$Rs32),
164 "$Rd32 = add($Rt32.l,$Rs32.h)",
165 tc_1b9c9ee5, TypeALU64>, Enc_bd6011 {
166 let Inst{7-5} = 0b010;
167 let Inst{13-13} = 0b0;
168 let Inst{31-21} = 0b11010101000;
169 let hasNewValue = 1;
170 let opNewValue = 0;
171 let prefersSlot3 = 1;
172 }
173 def A2_addh_l16_ll : HInst<
174 (outs IntRegs:$Rd32),
175 (ins IntRegs:$Rt32, IntRegs:$Rs32),
176 "$Rd32 = add($Rt32.l,$Rs32.l)",
177 tc_1b9c9ee5, TypeALU64>, Enc_bd6011 {
178 let Inst{7-5} = 0b000;
179 let Inst{13-13} = 0b0;
180 let Inst{31-21} = 0b11010101000;
181 let hasNewValue = 1;
182 let opNewValue = 0;
183 let prefersSlot3 = 1;
184 }
185 def A2_addh_l16_sat_hl : HInst<
186 (outs IntRegs:$Rd32),
187 (ins IntRegs:$Rt32, IntRegs:$Rs32),
188 "$Rd32 = add($Rt32.l,$Rs32.h):sat",
189 tc_b44c6e2a, TypeALU64>, Enc_bd6011 {
190 let Inst{7-5} = 0b110;
191 let Inst{13-13} = 0b0;
192 let Inst{31-21} = 0b11010101000;
193 let hasNewValue = 1;
194 let opNewValue = 0;
195 let prefersSlot3 = 1;
196 let Defs = [USR_OVF];
197 }
198 def A2_addh_l16_sat_ll : HInst<
199 (outs IntRegs:$Rd32),
200 (ins IntRegs:$Rt32, IntRegs:$Rs32),
201 "$Rd32 = add($Rt32.l,$Rs32.l):sat",
202 tc_b44c6e2a, TypeALU64>, Enc_bd6011 {
203 let Inst{7-5} = 0b100;
204 let Inst{13-13} = 0b0;
205 let Inst{31-21} = 0b11010101000;
206 let hasNewValue = 1;
207 let opNewValue = 0;
208 let prefersSlot3 = 1;
209 let Defs = [USR_OVF];
210 }
211 def A2_addi : HInst<
212 (outs IntRegs:$Rd32),
213 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
214 "$Rd32 = add($Rs32,#$Ii)",
215 tc_b9488031, TypeALU32_ADDI>, Enc_cb9321, PredNewRel, ImmRegRel {
216 let Inst{31-28} = 0b1011;
217 let hasNewValue = 1;
218 let opNewValue = 0;
219 let CextOpcode = "A2_add";
220 let InputType = "imm";
221 let BaseOpcode = "A2_addi";
222 let isPredicable = 1;
223 let isAdd = 1;
224 let isExtendable = 1;
225 let opExtendable = 2;
226 let isExtentSigned = 1;
227 let opExtentBits = 16;
228 let opExtentAlign = 0;
229 }
230 def A2_addp : HInst<
231 (outs DoubleRegs:$Rdd32),
232 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
233 "$Rdd32 = add($Rss32,$Rtt32)",
234 tc_540fdfbc, TypeALU64>, Enc_a56825 {
235 let Inst{7-5} = 0b111;
236 let Inst{13-13} = 0b0;
237 let Inst{31-21} = 0b11010011000;
238 let isCommutable = 1;
239 let isAdd = 1;
240 }
241 def A2_addpsat : HInst<
242 (outs DoubleRegs:$Rdd32),
243 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
244 "$Rdd32 = add($Rss32,$Rtt32):sat",
245 tc_b44c6e2a, TypeALU64>, Enc_a56825 {
246 let Inst{7-5} = 0b101;
247 let Inst{13-13} = 0b0;
248 let Inst{31-21} = 0b11010011011;
249 let prefersSlot3 = 1;
250 let Defs = [USR_OVF];
251 let isCommutable = 1;
252 }
253 def A2_addsat : HInst<
254 (outs IntRegs:$Rd32),
255 (ins IntRegs:$Rs32, IntRegs:$Rt32),
256 "$Rd32 = add($Rs32,$Rt32):sat",
257 tc_5ba5997d, TypeALU32_3op>, Enc_5ab2be {
258 let Inst{7-5} = 0b000;
259 let Inst{13-13} = 0b0;
260 let Inst{31-21} = 0b11110110010;
261 let hasNewValue = 1;
262 let opNewValue = 0;
263 let prefersSlot3 = 1;
264 let Defs = [USR_OVF];
265 let InputType = "reg";
266 let isCommutable = 1;
267 }
268 def A2_addsp : HInst<
269 (outs DoubleRegs:$Rdd32),
270 (ins IntRegs:$Rs32, DoubleRegs:$Rtt32),
271 "$Rdd32 = add($Rs32,$Rtt32)",
272 tc_897d1a9d, TypeALU64> {
273 let isPseudo = 1;
274 }
275 def A2_addsph : HInst<
276 (outs DoubleRegs:$Rdd32),
277 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
278 "$Rdd32 = add($Rss32,$Rtt32):raw:hi",
279 tc_897d1a9d, TypeALU64>, Enc_a56825 {
280 let Inst{7-5} = 0b111;
281 let Inst{13-13} = 0b0;
282 let Inst{31-21} = 0b11010011011;
283 let prefersSlot3 = 1;
284 }
285 def A2_addspl : HInst<
286 (outs DoubleRegs:$Rdd32),
287 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
288 "$Rdd32 = add($Rss32,$Rtt32):raw:lo",
289 tc_897d1a9d, TypeALU64>, Enc_a56825 {
290 let Inst{7-5} = 0b110;
291 let Inst{13-13} = 0b0;
292 let Inst{31-21} = 0b11010011011;
293 let prefersSlot3 = 1;
294 }
295 def A2_and : HInst<
296 (outs IntRegs:$Rd32),
297 (ins IntRegs:$Rs32, IntRegs:$Rt32),
298 "$Rd32 = and($Rs32,$Rt32)",
299 tc_b9488031, TypeALU32_3op>, Enc_5ab2be, PredNewRel, ImmRegRel {
300 let Inst{7-5} = 0b000;
301 let Inst{13-13} = 0b0;
302 let Inst{31-21} = 0b11110001000;
303 let hasNewValue = 1;
304 let opNewValue = 0;
305 let CextOpcode = "A2_and";
306 let InputType = "reg";
307 let BaseOpcode = "A2_and";
308 let isCommutable = 1;
309 let isPredicable = 1;
310 }
311 def A2_andir : HInst<
312 (outs IntRegs:$Rd32),
313 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
314 "$Rd32 = and($Rs32,#$Ii)",
315 tc_b9488031, TypeALU32_2op>, Enc_140c83, ImmRegRel {
316 let Inst{31-22} = 0b0111011000;
317 let hasNewValue = 1;
318 let opNewValue = 0;
319 let CextOpcode = "A2_and";
320 let InputType = "imm";
321 let isExtendable = 1;
322 let opExtendable = 2;
323 let isExtentSigned = 1;
324 let opExtentBits = 10;
325 let opExtentAlign = 0;
326 }
327 def A2_andp : HInst<
328 (outs DoubleRegs:$Rdd32),
329 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
330 "$Rdd32 = and($Rss32,$Rtt32)",
331 tc_540fdfbc, TypeALU64>, Enc_a56825 {
332 let Inst{7-5} = 0b000;
333 let Inst{13-13} = 0b0;
334 let Inst{31-21} = 0b11010011111;
335 let isCommutable = 1;
336 }
337 def A2_aslh : HInst<
338 (outs IntRegs:$Rd32),
339 (ins IntRegs:$Rs32),
340 "$Rd32 = aslh($Rs32)",
341 tc_68cb12ce, TypeALU32_2op>, Enc_5e2823, PredNewRel {
342 let Inst{13-5} = 0b000000000;
343 let Inst{31-21} = 0b01110000000;
344 let hasNewValue = 1;
345 let opNewValue = 0;
346 let BaseOpcode = "A2_aslh";
347 let isPredicable = 1;
348 }
349 def A2_asrh : HInst<
350 (outs IntRegs:$Rd32),
351 (ins IntRegs:$Rs32),
352 "$Rd32 = asrh($Rs32)",
353 tc_68cb12ce, TypeALU32_2op>, Enc_5e2823, PredNewRel {
354 let Inst{13-5} = 0b000000000;
355 let Inst{31-21} = 0b01110000001;
356 let hasNewValue = 1;
357 let opNewValue = 0;
358 let BaseOpcode = "A2_asrh";
359 let isPredicable = 1;
360 }
361 def A2_combine_hh : HInst<
362 (outs IntRegs:$Rd32),
363 (ins IntRegs:$Rt32, IntRegs:$Rs32),
364 "$Rd32 = combine($Rt32.h,$Rs32.h)",
365 tc_b9488031, TypeALU32_3op>, Enc_bd6011 {
366 let Inst{7-5} = 0b000;
367 let Inst{13-13} = 0b0;
368 let Inst{31-21} = 0b11110011100;
369 let hasNewValue = 1;
370 let opNewValue = 0;
371 let InputType = "reg";
372 }
373 def A2_combine_hl : HInst<
374 (outs IntRegs:$Rd32),
375 (ins IntRegs:$Rt32, IntRegs:$Rs32),
376 "$Rd32 = combine($Rt32.h,$Rs32.l)",
377 tc_b9488031, TypeALU32_3op>, Enc_bd6011 {
378 let Inst{7-5} = 0b000;
379 let Inst{13-13} = 0b0;
380 let Inst{31-21} = 0b11110011101;
381 let hasNewValue = 1;
382 let opNewValue = 0;
383 let InputType = "reg";
384 }
385 def A2_combine_lh : HInst<
386 (outs IntRegs:$Rd32),
387 (ins IntRegs:$Rt32, IntRegs:$Rs32),
388 "$Rd32 = combine($Rt32.l,$Rs32.h)",
389 tc_b9488031, TypeALU32_3op>, Enc_bd6011 {
390 let Inst{7-5} = 0b000;
391 let Inst{13-13} = 0b0;
392 let Inst{31-21} = 0b11110011110;
393 let hasNewValue = 1;
394 let opNewValue = 0;
395 let InputType = "reg";
396 }
397 def A2_combine_ll : HInst<
398 (outs IntRegs:$Rd32),
399 (ins IntRegs:$Rt32, IntRegs:$Rs32),
400 "$Rd32 = combine($Rt32.l,$Rs32.l)",
401 tc_b9488031, TypeALU32_3op>, Enc_bd6011 {
402 let Inst{7-5} = 0b000;
403 let Inst{13-13} = 0b0;
404 let Inst{31-21} = 0b11110011111;
405 let hasNewValue = 1;
406 let opNewValue = 0;
407 let InputType = "reg";
408 }
409 def A2_combineii : HInst<
410 (outs DoubleRegs:$Rdd32),
411 (ins s32_0Imm:$Ii, s8_0Imm:$II),
412 "$Rdd32 = combine(#$Ii,#$II)",
413 tc_b9488031, TypeALU32_2op>, Enc_18c338 {
414 let Inst{31-23} = 0b011111000;
415 let isReMaterializable = 1;
416 let isAsCheapAsAMove = 1;
417 let isMoveImm = 1;
418 let isExtendable = 1;
419 let opExtendable = 1;
420 let isExtentSigned = 1;
421 let opExtentBits = 8;
422 let opExtentAlign = 0;
423 }
424 def A2_combinew : HInst<
425 (outs DoubleRegs:$Rdd32),
426 (ins IntRegs:$Rs32, IntRegs:$Rt32),
427 "$Rdd32 = combine($Rs32,$Rt32)",
428 tc_b9488031, TypeALU32_3op>, Enc_be32a5, PredNewRel {
429 let Inst{7-5} = 0b000;
430 let Inst{13-13} = 0b0;
431 let Inst{31-21} = 0b11110101000;
432 let InputType = "reg";
433 let BaseOpcode = "A2_combinew";
434 let isPredicable = 1;
435 }
436 def A2_max : HInst<
437 (outs IntRegs:$Rd32),
438 (ins IntRegs:$Rs32, IntRegs:$Rt32),
439 "$Rd32 = max($Rs32,$Rt32)",
440 tc_b44c6e2a, TypeALU64>, Enc_5ab2be {
441 let Inst{7-5} = 0b000;
442 let Inst{13-13} = 0b0;
443 let Inst{31-21} = 0b11010101110;
444 let hasNewValue = 1;
445 let opNewValue = 0;
446 let prefersSlot3 = 1;
447 }
448 def A2_maxp : HInst<
449 (outs DoubleRegs:$Rdd32),
450 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
451 "$Rdd32 = max($Rss32,$Rtt32)",
452 tc_b44c6e2a, TypeALU64>, Enc_a56825 {
453 let Inst{7-5} = 0b100;
454 let Inst{13-13} = 0b0;
455 let Inst{31-21} = 0b11010011110;
456 let prefersSlot3 = 1;
457 }
458 def A2_maxu : HInst<
459 (outs IntRegs:$Rd32),
460 (ins IntRegs:$Rs32, IntRegs:$Rt32),
461 "$Rd32 = maxu($Rs32,$Rt32)",
462 tc_b44c6e2a, TypeALU64>, Enc_5ab2be {
463 let Inst{7-5} = 0b100;
464 let Inst{13-13} = 0b0;
465 let Inst{31-21} = 0b11010101110;
466 let hasNewValue = 1;
467 let opNewValue = 0;
468 let prefersSlot3 = 1;
469 }
470 def A2_maxup : HInst<
471 (outs DoubleRegs:$Rdd32),
472 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
473 "$Rdd32 = maxu($Rss32,$Rtt32)",
474 tc_b44c6e2a, TypeALU64>, Enc_a56825 {
475 let Inst{7-5} = 0b101;
476 let Inst{13-13} = 0b0;
477 let Inst{31-21} = 0b11010011110;
478 let prefersSlot3 = 1;
479 }
480 def A2_min : HInst<
481 (outs IntRegs:$Rd32),
482 (ins IntRegs:$Rt32, IntRegs:$Rs32),
483 "$Rd32 = min($Rt32,$Rs32)",
484 tc_b44c6e2a, TypeALU64>, Enc_bd6011 {
485 let Inst{7-5} = 0b000;
486 let Inst{13-13} = 0b0;
487 let Inst{31-21} = 0b11010101101;
488 let hasNewValue = 1;
489 let opNewValue = 0;
490 let prefersSlot3 = 1;
491 }
492 def A2_minp : HInst<
493 (outs DoubleRegs:$Rdd32),
494 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
495 "$Rdd32 = min($Rtt32,$Rss32)",
496 tc_b44c6e2a, TypeALU64>, Enc_ea23e4 {
497 let Inst{7-5} = 0b110;
498 let Inst{13-13} = 0b0;
499 let Inst{31-21} = 0b11010011101;
500 let prefersSlot3 = 1;
501 }
502 def A2_minu : HInst<
503 (outs IntRegs:$Rd32),
504 (ins IntRegs:$Rt32, IntRegs:$Rs32),
505 "$Rd32 = minu($Rt32,$Rs32)",
506 tc_b44c6e2a, TypeALU64>, Enc_bd6011 {
507 let Inst{7-5} = 0b100;
508 let Inst{13-13} = 0b0;
509 let Inst{31-21} = 0b11010101101;
510 let hasNewValue = 1;
511 let opNewValue = 0;
512 let prefersSlot3 = 1;
513 }
514 def A2_minup : HInst<
515 (outs DoubleRegs:$Rdd32),
516 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
517 "$Rdd32 = minu($Rtt32,$Rss32)",
518 tc_b44c6e2a, TypeALU64>, Enc_ea23e4 {
519 let Inst{7-5} = 0b111;
520 let Inst{13-13} = 0b0;
521 let Inst{31-21} = 0b11010011101;
522 let prefersSlot3 = 1;
523 }
524 def A2_neg : HInst<
525 (outs IntRegs:$Rd32),
526 (ins IntRegs:$Rs32),
527 "$Rd32 = neg($Rs32)",
528 tc_68cb12ce, TypeALU32_2op> {
529 let hasNewValue = 1;
530 let opNewValue = 0;
531 let isPseudo = 1;
532 let isCodeGenOnly = 1;
533 }
534 def A2_negp : HInst<
535 (outs DoubleRegs:$Rdd32),
536 (ins DoubleRegs:$Rss32),
537 "$Rdd32 = neg($Rss32)",
538 tc_cde8b071, TypeS_2op>, Enc_b9c5fb {
539 let Inst{13-5} = 0b000000101;
540 let Inst{31-21} = 0b10000000100;
541 }
542 def A2_negsat : HInst<
543 (outs IntRegs:$Rd32),
544 (ins IntRegs:$Rs32),
545 "$Rd32 = neg($Rs32):sat",
546 tc_c2f7d806, TypeS_2op>, Enc_5e2823 {
547 let Inst{13-5} = 0b000000110;
548 let Inst{31-21} = 0b10001100100;
549 let hasNewValue = 1;
550 let opNewValue = 0;
551 let prefersSlot3 = 1;
552 let Defs = [USR_OVF];
553 }
554 def A2_nop : HInst<
555 (outs),
556 (ins),
557 "nop",
558 tc_6efc556e, TypeALU32_2op>, Enc_e3b0c4 {
559 let Inst{13-0} = 0b00000000000000;
560 let Inst{31-16} = 0b0111111100000000;
561 }
562 def A2_not : HInst<
563 (outs IntRegs:$Rd32),
564 (ins IntRegs:$Rs32),
565 "$Rd32 = not($Rs32)",
566 tc_68cb12ce, TypeALU32_2op> {
567 let hasNewValue = 1;
568 let opNewValue = 0;
569 let isPseudo = 1;
570 let isCodeGenOnly = 1;
571 }
572 def A2_notp : HInst<
573 (outs DoubleRegs:$Rdd32),
574 (ins DoubleRegs:$Rss32),
575 "$Rdd32 = not($Rss32)",
576 tc_cde8b071, TypeS_2op>, Enc_b9c5fb {
577 let Inst{13-5} = 0b000000100;
578 let Inst{31-21} = 0b10000000100;
579 }
580 def A2_or : HInst<
581 (outs IntRegs:$Rd32),
582 (ins IntRegs:$Rs32, IntRegs:$Rt32),
583 "$Rd32 = or($Rs32,$Rt32)",
584 tc_b9488031, TypeALU32_3op>, Enc_5ab2be, PredNewRel, ImmRegRel {
585 let Inst{7-5} = 0b000;
586 let Inst{13-13} = 0b0;
587 let Inst{31-21} = 0b11110001001;
588 let hasNewValue = 1;
589 let opNewValue = 0;
590 let CextOpcode = "A2_or";
591 let InputType = "reg";
592 let BaseOpcode = "A2_or";
593 let isCommutable = 1;
594 let isPredicable = 1;
595 }
596 def A2_orir : HInst<
597 (outs IntRegs:$Rd32),
598 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
599 "$Rd32 = or($Rs32,#$Ii)",
600 tc_b9488031, TypeALU32_2op>, Enc_140c83, ImmRegRel {
601 let Inst{31-22} = 0b0111011010;
602 let hasNewValue = 1;
603 let opNewValue = 0;
604 let CextOpcode = "A2_or";
605 let InputType = "imm";
606 let isExtendable = 1;
607 let opExtendable = 2;
608 let isExtentSigned = 1;
609 let opExtentBits = 10;
610 let opExtentAlign = 0;
611 }
612 def A2_orp : HInst<
613 (outs DoubleRegs:$Rdd32),
614 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
615 "$Rdd32 = or($Rss32,$Rtt32)",
616 tc_540fdfbc, TypeALU64>, Enc_a56825 {
617 let Inst{7-5} = 0b010;
618 let Inst{13-13} = 0b0;
619 let Inst{31-21} = 0b11010011111;
620 let isCommutable = 1;
621 }
622 def A2_paddf : HInst<
623 (outs IntRegs:$Rd32),
624 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
625 "if (!$Pu4) $Rd32 = add($Rs32,$Rt32)",
626 tc_d6bf0472, TypeALU32_3op>, Enc_ea4c54, PredNewRel, ImmRegRel {
627 let Inst{7-7} = 0b1;
628 let Inst{13-13} = 0b0;
629 let Inst{31-21} = 0b11111011000;
630 let isPredicated = 1;
631 let isPredicatedFalse = 1;
632 let hasNewValue = 1;
633 let opNewValue = 0;
634 let CextOpcode = "A2_add";
635 let InputType = "reg";
636 let BaseOpcode = "A2_add";
637 }
638 def A2_paddfnew : HInst<
639 (outs IntRegs:$Rd32),
640 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
641 "if (!$Pu4.new) $Rd32 = add($Rs32,$Rt32)",
642 tc_2b2f4060, TypeALU32_3op>, Enc_ea4c54, PredNewRel, ImmRegRel {
643 let Inst{7-7} = 0b1;
644 let Inst{13-13} = 0b1;
645 let Inst{31-21} = 0b11111011000;
646 let isPredicated = 1;
647 let isPredicatedFalse = 1;
648 let hasNewValue = 1;
649 let opNewValue = 0;
650 let isPredicatedNew = 1;
651 let CextOpcode = "A2_add";
652 let InputType = "reg";
653 let BaseOpcode = "A2_add";
654 }
655 def A2_paddif : HInst<
656 (outs IntRegs:$Rd32),
657 (ins PredRegs:$Pu4, IntRegs:$Rs32, s32_0Imm:$Ii),
658 "if (!$Pu4) $Rd32 = add($Rs32,#$Ii)",
659 tc_d6bf0472, TypeALU32_2op>, Enc_e38e1f, PredNewRel, ImmRegRel {
660 let Inst{13-13} = 0b0;
661 let Inst{31-23} = 0b011101001;
662 let isPredicated = 1;
663 let isPredicatedFalse = 1;
664 let hasNewValue = 1;
665 let opNewValue = 0;
666 let CextOpcode = "A2_add";
667 let InputType = "imm";
668 let BaseOpcode = "A2_addi";
669 let isExtendable = 1;
670 let opExtendable = 3;
671 let isExtentSigned = 1;
672 let opExtentBits = 8;
673 let opExtentAlign = 0;
674 }
675 def A2_paddifnew : HInst<
676 (outs IntRegs:$Rd32),
677 (ins PredRegs:$Pu4, IntRegs:$Rs32, s32_0Imm:$Ii),
678 "if (!$Pu4.new) $Rd32 = add($Rs32,#$Ii)",
679 tc_2b2f4060, TypeALU32_2op>, Enc_e38e1f, PredNewRel, ImmRegRel {
680 let Inst{13-13} = 0b1;
681 let Inst{31-23} = 0b011101001;
682 let isPredicated = 1;
683 let isPredicatedFalse = 1;
684 let hasNewValue = 1;
685 let opNewValue = 0;
686 let isPredicatedNew = 1;
687 let CextOpcode = "A2_add";
688 let InputType = "imm";
689 let BaseOpcode = "A2_addi";
690 let isExtendable = 1;
691 let opExtendable = 3;
692 let isExtentSigned = 1;
693 let opExtentBits = 8;
694 let opExtentAlign = 0;
695 }
696 def A2_paddit : HInst<
697 (outs IntRegs:$Rd32),
698 (ins PredRegs:$Pu4, IntRegs:$Rs32, s32_0Imm:$Ii),
699 "if ($Pu4) $Rd32 = add($Rs32,#$Ii)",
700 tc_d6bf0472, TypeALU32_2op>, Enc_e38e1f, PredNewRel, ImmRegRel {
701 let Inst{13-13} = 0b0;
702 let Inst{31-23} = 0b011101000;
703 let isPredicated = 1;
704 let hasNewValue = 1;
705 let opNewValue = 0;
706 let CextOpcode = "A2_add";
707 let InputType = "imm";
708 let BaseOpcode = "A2_addi";
709 let isExtendable = 1;
710 let opExtendable = 3;
711 let isExtentSigned = 1;
712 let opExtentBits = 8;
713 let opExtentAlign = 0;
714 }
715 def A2_padditnew : HInst<
716 (outs IntRegs:$Rd32),
717 (ins PredRegs:$Pu4, IntRegs:$Rs32, s32_0Imm:$Ii),
718 "if ($Pu4.new) $Rd32 = add($Rs32,#$Ii)",
719 tc_2b2f4060, TypeALU32_2op>, Enc_e38e1f, PredNewRel, ImmRegRel {
720 let Inst{13-13} = 0b1;
721 let Inst{31-23} = 0b011101000;
722 let isPredicated = 1;
723 let hasNewValue = 1;
724 let opNewValue = 0;
725 let isPredicatedNew = 1;
726 let CextOpcode = "A2_add";
727 let InputType = "imm";
728 let BaseOpcode = "A2_addi";
729 let isExtendable = 1;
730 let opExtendable = 3;
731 let isExtentSigned = 1;
732 let opExtentBits = 8;
733 let opExtentAlign = 0;
734 }
735 def A2_paddt : HInst<
736 (outs IntRegs:$Rd32),
737 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
738 "if ($Pu4) $Rd32 = add($Rs32,$Rt32)",
739 tc_d6bf0472, TypeALU32_3op>, Enc_ea4c54, PredNewRel, ImmRegRel {
740 let Inst{7-7} = 0b0;
741 let Inst{13-13} = 0b0;
742 let Inst{31-21} = 0b11111011000;
743 let isPredicated = 1;
744 let hasNewValue = 1;
745 let opNewValue = 0;
746 let CextOpcode = "A2_add";
747 let InputType = "reg";
748 let BaseOpcode = "A2_add";
749 }
750 def A2_paddtnew : HInst<
751 (outs IntRegs:$Rd32),
752 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
753 "if ($Pu4.new) $Rd32 = add($Rs32,$Rt32)",
754 tc_2b2f4060, TypeALU32_3op>, Enc_ea4c54, PredNewRel, ImmRegRel {
755 let Inst{7-7} = 0b0;
756 let Inst{13-13} = 0b1;
757 let Inst{31-21} = 0b11111011000;
758 let isPredicated = 1;
759 let hasNewValue = 1;
760 let opNewValue = 0;
761 let isPredicatedNew = 1;
762 let CextOpcode = "A2_add";
763 let InputType = "reg";
764 let BaseOpcode = "A2_add";
765 }
766 def A2_pandf : HInst<
767 (outs IntRegs:$Rd32),
768 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
769 "if (!$Pu4) $Rd32 = and($Rs32,$Rt32)",
770 tc_d6bf0472, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
771 let Inst{7-7} = 0b1;
772 let Inst{13-13} = 0b0;
773 let Inst{31-21} = 0b11111001000;
774 let isPredicated = 1;
775 let isPredicatedFalse = 1;
776 let hasNewValue = 1;
777 let opNewValue = 0;
778 let BaseOpcode = "A2_and";
779 }
780 def A2_pandfnew : HInst<
781 (outs IntRegs:$Rd32),
782 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
783 "if (!$Pu4.new) $Rd32 = and($Rs32,$Rt32)",
784 tc_2b2f4060, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
785 let Inst{7-7} = 0b1;
786 let Inst{13-13} = 0b1;
787 let Inst{31-21} = 0b11111001000;
788 let isPredicated = 1;
789 let isPredicatedFalse = 1;
790 let hasNewValue = 1;
791 let opNewValue = 0;
792 let isPredicatedNew = 1;
793 let BaseOpcode = "A2_and";
794 }
795 def A2_pandt : HInst<
796 (outs IntRegs:$Rd32),
797 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
798 "if ($Pu4) $Rd32 = and($Rs32,$Rt32)",
799 tc_d6bf0472, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
800 let Inst{7-7} = 0b0;
801 let Inst{13-13} = 0b0;
802 let Inst{31-21} = 0b11111001000;
803 let isPredicated = 1;
804 let hasNewValue = 1;
805 let opNewValue = 0;
806 let BaseOpcode = "A2_and";
807 }
808 def A2_pandtnew : HInst<
809 (outs IntRegs:$Rd32),
810 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
811 "if ($Pu4.new) $Rd32 = and($Rs32,$Rt32)",
812 tc_2b2f4060, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
813 let Inst{7-7} = 0b0;
814 let Inst{13-13} = 0b1;
815 let Inst{31-21} = 0b11111001000;
816 let isPredicated = 1;
817 let hasNewValue = 1;
818 let opNewValue = 0;
819 let isPredicatedNew = 1;
820 let BaseOpcode = "A2_and";
821 }
822 def A2_porf : HInst<
823 (outs IntRegs:$Rd32),
824 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
825 "if (!$Pu4) $Rd32 = or($Rs32,$Rt32)",
826 tc_d6bf0472, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
827 let Inst{7-7} = 0b1;
828 let Inst{13-13} = 0b0;
829 let Inst{31-21} = 0b11111001001;
830 let isPredicated = 1;
831 let isPredicatedFalse = 1;
832 let hasNewValue = 1;
833 let opNewValue = 0;
834 let BaseOpcode = "A2_or";
835 }
836 def A2_porfnew : HInst<
837 (outs IntRegs:$Rd32),
838 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
839 "if (!$Pu4.new) $Rd32 = or($Rs32,$Rt32)",
840 tc_2b2f4060, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
841 let Inst{7-7} = 0b1;
842 let Inst{13-13} = 0b1;
843 let Inst{31-21} = 0b11111001001;
844 let isPredicated = 1;
845 let isPredicatedFalse = 1;
846 let hasNewValue = 1;
847 let opNewValue = 0;
848 let isPredicatedNew = 1;
849 let BaseOpcode = "A2_or";
850 }
851 def A2_port : HInst<
852 (outs IntRegs:$Rd32),
853 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
854 "if ($Pu4) $Rd32 = or($Rs32,$Rt32)",
855 tc_d6bf0472, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
856 let Inst{7-7} = 0b0;
857 let Inst{13-13} = 0b0;
858 let Inst{31-21} = 0b11111001001;
859 let isPredicated = 1;
860 let hasNewValue = 1;
861 let opNewValue = 0;
862 let BaseOpcode = "A2_or";
863 }
864 def A2_portnew : HInst<
865 (outs IntRegs:$Rd32),
866 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
867 "if ($Pu4.new) $Rd32 = or($Rs32,$Rt32)",
868 tc_2b2f4060, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
869 let Inst{7-7} = 0b0;
870 let Inst{13-13} = 0b1;
871 let Inst{31-21} = 0b11111001001;
872 let isPredicated = 1;
873 let hasNewValue = 1;
874 let opNewValue = 0;
875 let isPredicatedNew = 1;
876 let BaseOpcode = "A2_or";
877 }
878 def A2_psubf : HInst<
879 (outs IntRegs:$Rd32),
880 (ins PredRegs:$Pu4, IntRegs:$Rt32, IntRegs:$Rs32),
881 "if (!$Pu4) $Rd32 = sub($Rt32,$Rs32)",
882 tc_d6bf0472, TypeALU32_3op>, Enc_9b0bc1, PredNewRel {
883 let Inst{7-7} = 0b1;
884 let Inst{13-13} = 0b0;
885 let Inst{31-21} = 0b11111011001;
886 let isPredicated = 1;
887 let isPredicatedFalse = 1;
888 let hasNewValue = 1;
889 let opNewValue = 0;
890 let BaseOpcode = "A2_sub";
891 }
892 def A2_psubfnew : HInst<
893 (outs IntRegs:$Rd32),
894 (ins PredRegs:$Pu4, IntRegs:$Rt32, IntRegs:$Rs32),
895 "if (!$Pu4.new) $Rd32 = sub($Rt32,$Rs32)",
896 tc_2b2f4060, TypeALU32_3op>, Enc_9b0bc1, PredNewRel {
897 let Inst{7-7} = 0b1;
898 let Inst{13-13} = 0b1;
899 let Inst{31-21} = 0b11111011001;
900 let isPredicated = 1;
901 let isPredicatedFalse = 1;
902 let hasNewValue = 1;
903 let opNewValue = 0;
904 let isPredicatedNew = 1;
905 let BaseOpcode = "A2_sub";
906 }
907 def A2_psubt : HInst<
908 (outs IntRegs:$Rd32),
909 (ins PredRegs:$Pu4, IntRegs:$Rt32, IntRegs:$Rs32),
910 "if ($Pu4) $Rd32 = sub($Rt32,$Rs32)",
911 tc_d6bf0472, TypeALU32_3op>, Enc_9b0bc1, PredNewRel {
912 let Inst{7-7} = 0b0;
913 let Inst{13-13} = 0b0;
914 let Inst{31-21} = 0b11111011001;
915 let isPredicated = 1;
916 let hasNewValue = 1;
917 let opNewValue = 0;
918 let BaseOpcode = "A2_sub";
919 }
920 def A2_psubtnew : HInst<
921 (outs IntRegs:$Rd32),
922 (ins PredRegs:$Pu4, IntRegs:$Rt32, IntRegs:$Rs32),
923 "if ($Pu4.new) $Rd32 = sub($Rt32,$Rs32)",
924 tc_2b2f4060, TypeALU32_3op>, Enc_9b0bc1, PredNewRel {
925 let Inst{7-7} = 0b0;
926 let Inst{13-13} = 0b1;
927 let Inst{31-21} = 0b11111011001;
928 let isPredicated = 1;
929 let hasNewValue = 1;
930 let opNewValue = 0;
931 let isPredicatedNew = 1;
932 let BaseOpcode = "A2_sub";
933 }
934 def A2_pxorf : HInst<
935 (outs IntRegs:$Rd32),
936 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
937 "if (!$Pu4) $Rd32 = xor($Rs32,$Rt32)",
938 tc_d6bf0472, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
939 let Inst{7-7} = 0b1;
940 let Inst{13-13} = 0b0;
941 let Inst{31-21} = 0b11111001011;
942 let isPredicated = 1;
943 let isPredicatedFalse = 1;
944 let hasNewValue = 1;
945 let opNewValue = 0;
946 let BaseOpcode = "A2_xor";
947 }
948 def A2_pxorfnew : HInst<
949 (outs IntRegs:$Rd32),
950 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
951 "if (!$Pu4.new) $Rd32 = xor($Rs32,$Rt32)",
952 tc_2b2f4060, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
953 let Inst{7-7} = 0b1;
954 let Inst{13-13} = 0b1;
955 let Inst{31-21} = 0b11111001011;
956 let isPredicated = 1;
957 let isPredicatedFalse = 1;
958 let hasNewValue = 1;
959 let opNewValue = 0;
960 let isPredicatedNew = 1;
961 let BaseOpcode = "A2_xor";
962 }
963 def A2_pxort : HInst<
964 (outs IntRegs:$Rd32),
965 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
966 "if ($Pu4) $Rd32 = xor($Rs32,$Rt32)",
967 tc_d6bf0472, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
968 let Inst{7-7} = 0b0;
969 let Inst{13-13} = 0b0;
970 let Inst{31-21} = 0b11111001011;
971 let isPredicated = 1;
972 let hasNewValue = 1;
973 let opNewValue = 0;
974 let BaseOpcode = "A2_xor";
975 }
976 def A2_pxortnew : HInst<
977 (outs IntRegs:$Rd32),
978 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
979 "if ($Pu4.new) $Rd32 = xor($Rs32,$Rt32)",
980 tc_2b2f4060, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
981 let Inst{7-7} = 0b0;
982 let Inst{13-13} = 0b1;
983 let Inst{31-21} = 0b11111001011;
984 let isPredicated = 1;
985 let hasNewValue = 1;
986 let opNewValue = 0;
987 let isPredicatedNew = 1;
988 let BaseOpcode = "A2_xor";
989 }
990 def A2_roundsat : HInst<
991 (outs IntRegs:$Rd32),
992 (ins DoubleRegs:$Rss32),
993 "$Rd32 = round($Rss32):sat",
994 tc_c2f7d806, TypeS_2op>, Enc_90cd8b, Requires<[HasV5]> {
995 let Inst{13-5} = 0b000000001;
996 let Inst{31-21} = 0b10001000110;
997 let hasNewValue = 1;
998 let opNewValue = 0;
999 let prefersSlot3 = 1;
1000 let Defs = [USR_OVF];
1001 }
1002 def A2_sat : HInst<
1003 (outs IntRegs:$Rd32),
1004 (ins DoubleRegs:$Rss32),
1005 "$Rd32 = sat($Rss32)",
1006 tc_cde8b071, TypeS_2op>, Enc_90cd8b {
1007 let Inst{13-5} = 0b000000000;
1008 let Inst{31-21} = 0b10001000110;
1009 let hasNewValue = 1;
1010 let opNewValue = 0;
1011 let Defs = [USR_OVF];
1012 }
1013 def A2_satb : HInst<
1014 (outs IntRegs:$Rd32),
1015 (ins IntRegs:$Rs32),
1016 "$Rd32 = satb($Rs32)",
1017 tc_cde8b071, TypeS_2op>, Enc_5e2823 {
1018 let Inst{13-5} = 0b000000111;
1019 let Inst{31-21} = 0b10001100110;
1020 let hasNewValue = 1;
1021 let opNewValue = 0;
1022 let Defs = [USR_OVF];
1023 }
1024 def A2_sath : HInst<
1025 (outs IntRegs:$Rd32),
1026 (ins IntRegs:$Rs32),
1027 "$Rd32 = sath($Rs32)",
1028 tc_cde8b071, TypeS_2op>, Enc_5e2823 {
1029 let Inst{13-5} = 0b000000100;
1030 let Inst{31-21} = 0b10001100110;
1031 let hasNewValue = 1;
1032 let opNewValue = 0;
1033 let Defs = [USR_OVF];
1034 }
1035 def A2_satub : HInst<
1036 (outs IntRegs:$Rd32),
1037 (ins IntRegs:$Rs32),
1038 "$Rd32 = satub($Rs32)",
1039 tc_cde8b071, TypeS_2op>, Enc_5e2823 {
1040 let Inst{13-5} = 0b000000110;
1041 let Inst{31-21} = 0b10001100110;
1042 let hasNewValue = 1;
1043 let opNewValue = 0;
1044 let Defs = [USR_OVF];
1045 }
1046 def A2_satuh : HInst<
1047 (outs IntRegs:$Rd32),
1048 (ins IntRegs:$Rs32),
1049 "$Rd32 = satuh($Rs32)",
1050 tc_cde8b071, TypeS_2op>, Enc_5e2823 {
1051 let Inst{13-5} = 0b000000101;
1052 let Inst{31-21} = 0b10001100110;
1053 let hasNewValue = 1;
1054 let opNewValue = 0;
1055 let Defs = [USR_OVF];
1056 }
1057 def A2_sub : HInst<
1058 (outs IntRegs:$Rd32),
1059 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1060 "$Rd32 = sub($Rt32,$Rs32)",
1061 tc_b9488031, TypeALU32_3op>, Enc_bd6011, PredNewRel, ImmRegRel {
1062 let Inst{7-5} = 0b000;
1063 let Inst{13-13} = 0b0;
1064 let Inst{31-21} = 0b11110011001;
1065 let hasNewValue = 1;
1066 let opNewValue = 0;
1067 let CextOpcode = "A2_sub";
1068 let InputType = "reg";
1069 let BaseOpcode = "A2_sub";
1070 let isPredicable = 1;
1071 }
1072 def A2_subh_h16_hh : HInst<
1073 (outs IntRegs:$Rd32),
1074 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1075 "$Rd32 = sub($Rt32.h,$Rs32.h):<<16",
1076 tc_897d1a9d, TypeALU64>, Enc_bd6011 {
1077 let Inst{7-5} = 0b011;
1078 let Inst{13-13} = 0b0;
1079 let Inst{31-21} = 0b11010101011;
1080 let hasNewValue = 1;
1081 let opNewValue = 0;
1082 let prefersSlot3 = 1;
1083 }
1084 def A2_subh_h16_hl : HInst<
1085 (outs IntRegs:$Rd32),
1086 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1087 "$Rd32 = sub($Rt32.h,$Rs32.l):<<16",
1088 tc_897d1a9d, TypeALU64>, Enc_bd6011 {
1089 let Inst{7-5} = 0b010;
1090 let Inst{13-13} = 0b0;
1091 let Inst{31-21} = 0b11010101011;
1092 let hasNewValue = 1;
1093 let opNewValue = 0;
1094 let prefersSlot3 = 1;
1095 }
1096 def A2_subh_h16_lh : HInst<
1097 (outs IntRegs:$Rd32),
1098 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1099 "$Rd32 = sub($Rt32.l,$Rs32.h):<<16",
1100 tc_897d1a9d, TypeALU64>, Enc_bd6011 {
1101 let Inst{7-5} = 0b001;
1102 let Inst{13-13} = 0b0;
1103 let Inst{31-21} = 0b11010101011;
1104 let hasNewValue = 1;
1105 let opNewValue = 0;
1106 let prefersSlot3 = 1;
1107 }
1108 def A2_subh_h16_ll : HInst<
1109 (outs IntRegs:$Rd32),
1110 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1111 "$Rd32 = sub($Rt32.l,$Rs32.l):<<16",
1112 tc_897d1a9d, TypeALU64>, Enc_bd6011 {
1113 let Inst{7-5} = 0b000;
1114 let Inst{13-13} = 0b0;
1115 let Inst{31-21} = 0b11010101011;
1116 let hasNewValue = 1;
1117 let opNewValue = 0;
1118 let prefersSlot3 = 1;
1119 }
1120 def A2_subh_h16_sat_hh : HInst<
1121 (outs IntRegs:$Rd32),
1122 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1123 "$Rd32 = sub($Rt32.h,$Rs32.h):sat:<<16",
1124 tc_b44c6e2a, TypeALU64>, Enc_bd6011 {
1125 let Inst{7-5} = 0b111;
1126 let Inst{13-13} = 0b0;
1127 let Inst{31-21} = 0b11010101011;
1128 let hasNewValue = 1;
1129 let opNewValue = 0;
1130 let prefersSlot3 = 1;
1131 let Defs = [USR_OVF];
1132 }
1133 def A2_subh_h16_sat_hl : HInst<
1134 (outs IntRegs:$Rd32),
1135 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1136 "$Rd32 = sub($Rt32.h,$Rs32.l):sat:<<16",
1137 tc_b44c6e2a, TypeALU64>, Enc_bd6011 {
1138 let Inst{7-5} = 0b110;
1139 let Inst{13-13} = 0b0;
1140 let Inst{31-21} = 0b11010101011;
1141 let hasNewValue = 1;
1142 let opNewValue = 0;
1143 let prefersSlot3 = 1;
1144 let Defs = [USR_OVF];
1145 }
1146 def A2_subh_h16_sat_lh : HInst<
1147 (outs IntRegs:$Rd32),
1148 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1149 "$Rd32 = sub($Rt32.l,$Rs32.h):sat:<<16",
1150 tc_b44c6e2a, TypeALU64>, Enc_bd6011 {
1151 let Inst{7-5} = 0b101;
1152 let Inst{13-13} = 0b0;
1153 let Inst{31-21} = 0b11010101011;
1154 let hasNewValue = 1;
1155 let opNewValue = 0;
1156 let prefersSlot3 = 1;
1157 let Defs = [USR_OVF];
1158 }
1159 def A2_subh_h16_sat_ll : HInst<
1160 (outs IntRegs:$Rd32),
1161 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1162 "$Rd32 = sub($Rt32.l,$Rs32.l):sat:<<16",
1163 tc_b44c6e2a, TypeALU64>, Enc_bd6011 {
1164 let Inst{7-5} = 0b100;
1165 let Inst{13-13} = 0b0;
1166 let Inst{31-21} = 0b11010101011;
1167 let hasNewValue = 1;
1168 let opNewValue = 0;
1169 let prefersSlot3 = 1;
1170 let Defs = [USR_OVF];
1171 }
1172 def A2_subh_l16_hl : HInst<
1173 (outs IntRegs:$Rd32),
1174 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1175 "$Rd32 = sub($Rt32.l,$Rs32.h)",
1176 tc_1b9c9ee5, TypeALU64>, Enc_bd6011 {
1177 let Inst{7-5} = 0b010;
1178 let Inst{13-13} = 0b0;
1179 let Inst{31-21} = 0b11010101001;
1180 let hasNewValue = 1;
1181 let opNewValue = 0;
1182 let prefersSlot3 = 1;
1183 }
1184 def A2_subh_l16_ll : HInst<
1185 (outs IntRegs:$Rd32),
1186 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1187 "$Rd32 = sub($Rt32.l,$Rs32.l)",
1188 tc_1b9c9ee5, TypeALU64>, Enc_bd6011 {
1189 let Inst{7-5} = 0b000;
1190 let Inst{13-13} = 0b0;
1191 let Inst{31-21} = 0b11010101001;
1192 let hasNewValue = 1;
1193 let opNewValue = 0;
1194 let prefersSlot3 = 1;
1195 }
1196 def A2_subh_l16_sat_hl : HInst<
1197 (outs IntRegs:$Rd32),
1198 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1199 "$Rd32 = sub($Rt32.l,$Rs32.h):sat",
1200 tc_b44c6e2a, TypeALU64>, Enc_bd6011 {
1201 let Inst{7-5} = 0b110;
1202 let Inst{13-13} = 0b0;
1203 let Inst{31-21} = 0b11010101001;
1204 let hasNewValue = 1;
1205 let opNewValue = 0;
1206 let prefersSlot3 = 1;
1207 let Defs = [USR_OVF];
1208 }
1209 def A2_subh_l16_sat_ll : HInst<
1210 (outs IntRegs:$Rd32),
1211 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1212 "$Rd32 = sub($Rt32.l,$Rs32.l):sat",
1213 tc_b44c6e2a, TypeALU64>, Enc_bd6011 {
1214 let Inst{7-5} = 0b100;
1215 let Inst{13-13} = 0b0;
1216 let Inst{31-21} = 0b11010101001;
1217 let hasNewValue = 1;
1218 let opNewValue = 0;
1219 let prefersSlot3 = 1;
1220 let Defs = [USR_OVF];
1221 }
1222 def A2_subp : HInst<
1223 (outs DoubleRegs:$Rdd32),
1224 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
1225 "$Rdd32 = sub($Rtt32,$Rss32)",
1226 tc_540fdfbc, TypeALU64>, Enc_ea23e4 {
1227 let Inst{7-5} = 0b111;
1228 let Inst{13-13} = 0b0;
1229 let Inst{31-21} = 0b11010011001;
1230 }
1231 def A2_subri : HInst<
1232 (outs IntRegs:$Rd32),
1233 (ins s32_0Imm:$Ii, IntRegs:$Rs32),
1234 "$Rd32 = sub(#$Ii,$Rs32)",
1235 tc_b9488031, TypeALU32_2op>, Enc_140c83, PredNewRel, ImmRegRel {
1236 let Inst{31-22} = 0b0111011001;
1237 let hasNewValue = 1;
1238 let opNewValue = 0;
1239 let CextOpcode = "A2_sub";
1240 let InputType = "imm";
1241 let isExtendable = 1;
1242 let opExtendable = 1;
1243 let isExtentSigned = 1;
1244 let opExtentBits = 10;
1245 let opExtentAlign = 0;
1246 }
1247 def A2_subsat : HInst<
1248 (outs IntRegs:$Rd32),
1249 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1250 "$Rd32 = sub($Rt32,$Rs32):sat",
1251 tc_5ba5997d, TypeALU32_3op>, Enc_bd6011 {
1252 let Inst{7-5} = 0b000;
1253 let Inst{13-13} = 0b0;
1254 let Inst{31-21} = 0b11110110110;
1255 let hasNewValue = 1;
1256 let opNewValue = 0;
1257 let prefersSlot3 = 1;
1258 let Defs = [USR_OVF];
1259 let InputType = "reg";
1260 }
1261 def A2_svaddh : HInst<
1262 (outs IntRegs:$Rd32),
1263 (ins IntRegs:$Rs32, IntRegs:$Rt32),
1264 "$Rd32 = vaddh($Rs32,$Rt32)",
1265 tc_b9488031, TypeALU32_3op>, Enc_5ab2be {
1266 let Inst{7-5} = 0b000;
1267 let Inst{13-13} = 0b0;
1268 let Inst{31-21} = 0b11110110000;
1269 let hasNewValue = 1;
1270 let opNewValue = 0;
1271 let InputType = "reg";
1272 let isCommutable = 1;
1273 }
1274 def A2_svaddhs : HInst<
1275 (outs IntRegs:$Rd32),
1276 (ins IntRegs:$Rs32, IntRegs:$Rt32),
1277 "$Rd32 = vaddh($Rs32,$Rt32):sat",
1278 tc_5ba5997d, TypeALU32_3op>, Enc_5ab2be {
1279 let Inst{7-5} = 0b000;
1280 let Inst{13-13} = 0b0;
1281 let Inst{31-21} = 0b11110110001;
1282 let hasNewValue = 1;
1283 let opNewValue = 0;
1284 let prefersSlot3 = 1;
1285 let Defs = [USR_OVF];
1286 let InputType = "reg";
1287 let isCommutable = 1;
1288 }
1289 def A2_svadduhs : HInst<
1290 (outs IntRegs:$Rd32),
1291 (ins IntRegs:$Rs32, IntRegs:$Rt32),
1292 "$Rd32 = vadduh($Rs32,$Rt32):sat",
1293 tc_5ba5997d, TypeALU32_3op>, Enc_5ab2be {
1294 let Inst{7-5} = 0b000;
1295 let Inst{13-13} = 0b0;
1296 let Inst{31-21} = 0b11110110011;
1297 let hasNewValue = 1;
1298 let opNewValue = 0;
1299 let prefersSlot3 = 1;
1300 let Defs = [USR_OVF];
1301 let InputType = "reg";
1302 let isCommutable = 1;
1303 }
1304 def A2_svavgh : HInst<
1305 (outs IntRegs:$Rd32),
1306 (ins IntRegs:$Rs32, IntRegs:$Rt32),
1307 "$Rd32 = vavgh($Rs32,$Rt32)",
1308 tc_b9488031, TypeALU32_3op>, Enc_5ab2be {
1309 let Inst{7-5} = 0b000;
1310 let Inst{13-13} = 0b0;
1311 let Inst{31-21} = 0b11110111000;
1312 let hasNewValue = 1;
1313 let opNewValue = 0;
1314 let InputType = "reg";
1315 let isCommutable = 1;
1316 }
1317 def A2_svavghs : HInst<
1318 (outs IntRegs:$Rd32),
1319 (ins IntRegs:$Rs32, IntRegs:$Rt32),
1320 "$Rd32 = vavgh($Rs32,$Rt32):rnd",
1321 tc_8fe6b782, TypeALU32_3op>, Enc_5ab2be {
1322 let Inst{7-5} = 0b000;
1323 let Inst{13-13} = 0b0;
1324 let Inst{31-21} = 0b11110111001;
1325 let hasNewValue = 1;
1326 let opNewValue = 0;
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_b9488031, 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 InputType = "reg";
1341 }
1342 def A2_svsubh : HInst<
1343 (outs IntRegs:$Rd32),
1344 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1345 "$Rd32 = vsubh($Rt32,$Rs32)",
1346 tc_b9488031, TypeALU32_3op>, Enc_bd6011 {
1347 let Inst{7-5} = 0b000;
1348 let Inst{13-13} = 0b0;
1349 let Inst{31-21} = 0b11110110100;
1350 let hasNewValue = 1;
1351 let opNewValue = 0;
1352 let InputType = "reg";
1353 }
1354 def A2_svsubhs : HInst<
1355 (outs IntRegs:$Rd32),
1356 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1357 "$Rd32 = vsubh($Rt32,$Rs32):sat",
1358 tc_5ba5997d, TypeALU32_3op>, Enc_bd6011 {
1359 let Inst{7-5} = 0b000;
1360 let Inst{13-13} = 0b0;
1361 let Inst{31-21} = 0b11110110101;
1362 let hasNewValue = 1;
1363 let opNewValue = 0;
1364 let prefersSlot3 = 1;
1365 let Defs = [USR_OVF];
1366 let InputType = "reg";
1367 }
1368 def A2_svsubuhs : HInst<
1369 (outs IntRegs:$Rd32),
1370 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1371 "$Rd32 = vsubuh($Rt32,$Rs32):sat",
1372 tc_5ba5997d, TypeALU32_3op>, Enc_bd6011 {
1373 let Inst{7-5} = 0b000;
1374 let Inst{13-13} = 0b0;
1375 let Inst{31-21} = 0b11110110111;
1376 let hasNewValue = 1;
1377 let opNewValue = 0;
1378 let prefersSlot3 = 1;
1379 let Defs = [USR_OVF];
1380 let InputType = "reg";
1381 }
1382 def A2_swiz : HInst<
1383 (outs IntRegs:$Rd32),
1384 (ins IntRegs:$Rs32),
1385 "$Rd32 = swiz($Rs32)",
1386 tc_cde8b071, TypeS_2op>, Enc_5e2823 {
1387 let Inst{13-5} = 0b000000111;
1388 let Inst{31-21} = 0b10001100100;
1389 let hasNewValue = 1;
1390 let opNewValue = 0;
1391 }
1392 def A2_sxtb : HInst<
1393 (outs IntRegs:$Rd32),
1394 (ins IntRegs:$Rs32),
1395 "$Rd32 = sxtb($Rs32)",
1396 tc_68cb12ce, TypeALU32_2op>, Enc_5e2823, PredNewRel {
1397 let Inst{13-5} = 0b000000000;
1398 let Inst{31-21} = 0b01110000101;
1399 let hasNewValue = 1;
1400 let opNewValue = 0;
1401 let BaseOpcode = "A2_sxtb";
1402 let isPredicable = 1;
1403 }
1404 def A2_sxth : HInst<
1405 (outs IntRegs:$Rd32),
1406 (ins IntRegs:$Rs32),
1407 "$Rd32 = sxth($Rs32)",
1408 tc_68cb12ce, TypeALU32_2op>, Enc_5e2823, PredNewRel {
1409 let Inst{13-5} = 0b000000000;
1410 let Inst{31-21} = 0b01110000111;
1411 let hasNewValue = 1;
1412 let opNewValue = 0;
1413 let BaseOpcode = "A2_sxth";
1414 let isPredicable = 1;
1415 }
1416 def A2_sxtw : HInst<
1417 (outs DoubleRegs:$Rdd32),
1418 (ins IntRegs:$Rs32),
1419 "$Rdd32 = sxtw($Rs32)",
1420 tc_cde8b071, TypeS_2op>, Enc_3a3d62 {
1421 let Inst{13-5} = 0b000000000;
1422 let Inst{31-21} = 0b10000100010;
1423 }
1424 def A2_tfr : HInst<
1425 (outs IntRegs:$Rd32),
1426 (ins IntRegs:$Rs32),
1427 "$Rd32 = $Rs32",
1428 tc_68cb12ce, TypeALU32_2op>, Enc_5e2823, PredNewRel {
1429 let Inst{13-5} = 0b000000000;
1430 let Inst{31-21} = 0b01110000011;
1431 let hasNewValue = 1;
1432 let opNewValue = 0;
1433 let InputType = "reg";
1434 let BaseOpcode = "A2_tfr";
1435 let isPredicable = 1;
1436 }
1437 def A2_tfrcrr : HInst<
1438 (outs IntRegs:$Rd32),
1439 (ins CtrRegs:$Cs32),
1440 "$Rd32 = $Cs32",
1441 tc_29175780, TypeCR>, Enc_0cb018 {
1442 let Inst{13-5} = 0b000000000;
1443 let Inst{31-21} = 0b01101010000;
1444 let hasNewValue = 1;
1445 let opNewValue = 0;
1446 }
1447 def A2_tfrf : HInst<
1448 (outs IntRegs:$Rd32),
1449 (ins PredRegs:$Pu4, IntRegs:$Rs32),
1450 "if (!$Pu4) $Rd32 = $Rs32",
1451 tc_d6bf0472, TypeALU32_2op>, PredNewRel, ImmRegRel {
1452 let isPredicated = 1;
1453 let isPredicatedFalse = 1;
1454 let hasNewValue = 1;
1455 let opNewValue = 0;
1456 let CextOpcode = "A2_tfr";
1457 let InputType = "reg";
1458 let BaseOpcode = "A2_tfr";
1459 let isPseudo = 1;
1460 let isCodeGenOnly = 1;
1461 }
1462 def A2_tfrfnew : HInst<
1463 (outs IntRegs:$Rd32),
1464 (ins PredRegs:$Pu4, IntRegs:$Rs32),
1465 "if (!$Pu4.new) $Rd32 = $Rs32",
1466 tc_2b2f4060, TypeALU32_2op>, PredNewRel, ImmRegRel {
1467 let isPredicated = 1;
1468 let isPredicatedFalse = 1;
1469 let hasNewValue = 1;
1470 let opNewValue = 0;
1471 let isPredicatedNew = 1;
1472 let CextOpcode = "A2_tfr";
1473 let InputType = "reg";
1474 let BaseOpcode = "A2_tfr";
1475 let isPseudo = 1;
1476 let isCodeGenOnly = 1;
1477 }
1478 def A2_tfrih : HInst<
1479 (outs IntRegs:$Rx32),
1480 (ins IntRegs:$Rx32in, u16_0Imm:$Ii),
1481 "$Rx32.h = #$Ii",
1482 tc_b9488031, TypeALU32_2op>, Enc_51436c {
1483 let Inst{21-21} = 0b1;
1484 let Inst{31-24} = 0b01110010;
1485 let hasNewValue = 1;
1486 let opNewValue = 0;
1487 let Constraints = "$Rx32 = $Rx32in";
1488 }
1489 def A2_tfril : HInst<
1490 (outs IntRegs:$Rx32),
1491 (ins IntRegs:$Rx32in, u16_0Imm:$Ii),
1492 "$Rx32.l = #$Ii",
1493 tc_b9488031, TypeALU32_2op>, Enc_51436c {
1494 let Inst{21-21} = 0b1;
1495 let Inst{31-24} = 0b01110001;
1496 let hasNewValue = 1;
1497 let opNewValue = 0;
1498 let Constraints = "$Rx32 = $Rx32in";
1499 }
1500 def A2_tfrp : HInst<
1501 (outs DoubleRegs:$Rdd32),
1502 (ins DoubleRegs:$Rss32),
1503 "$Rdd32 = $Rss32",
1504 tc_b9488031, TypeALU32_2op>, PredNewRel {
1505 let BaseOpcode = "A2_tfrp";
1506 let isPredicable = 1;
1507 let isPseudo = 1;
1508 }
1509 def A2_tfrpf : HInst<
1510 (outs DoubleRegs:$Rdd32),
1511 (ins PredRegs:$Pu4, DoubleRegs:$Rss32),
1512 "if (!$Pu4) $Rdd32 = $Rss32",
1513 tc_b9488031, TypeALU32_2op>, PredNewRel {
1514 let isPredicated = 1;
1515 let isPredicatedFalse = 1;
1516 let BaseOpcode = "A2_tfrp";
1517 let isPseudo = 1;
1518 }
1519 def A2_tfrpfnew : HInst<
1520 (outs DoubleRegs:$Rdd32),
1521 (ins PredRegs:$Pu4, DoubleRegs:$Rss32),
1522 "if (!$Pu4.new) $Rdd32 = $Rss32",
1523 tc_5f6847a1, TypeALU32_2op>, PredNewRel {
1524 let isPredicated = 1;
1525 let isPredicatedFalse = 1;
1526 let isPredicatedNew = 1;
1527 let BaseOpcode = "A2_tfrp";
1528 let isPseudo = 1;
1529 }
1530 def A2_tfrpi : HInst<
1531 (outs DoubleRegs:$Rdd32),
1532 (ins s8_0Imm:$Ii),
1533 "$Rdd32 = #$Ii",
1534 tc_b9488031, TypeALU64> {
1535 let isReMaterializable = 1;
1536 let isAsCheapAsAMove = 1;
1537 let isMoveImm = 1;
1538 let isPseudo = 1;
1539 }
1540 def A2_tfrpt : HInst<
1541 (outs DoubleRegs:$Rdd32),
1542 (ins PredRegs:$Pu4, DoubleRegs:$Rss32),
1543 "if ($Pu4) $Rdd32 = $Rss32",
1544 tc_b9488031, TypeALU32_2op>, PredNewRel {
1545 let isPredicated = 1;
1546 let BaseOpcode = "A2_tfrp";
1547 let isPseudo = 1;
1548 }
1549 def A2_tfrptnew : HInst<
1550 (outs DoubleRegs:$Rdd32),
1551 (ins PredRegs:$Pu4, DoubleRegs:$Rss32),
1552 "if ($Pu4.new) $Rdd32 = $Rss32",
1553 tc_5f6847a1, TypeALU32_2op>, PredNewRel {
1554 let isPredicated = 1;
1555 let isPredicatedNew = 1;
1556 let BaseOpcode = "A2_tfrp";
1557 let isPseudo = 1;
1558 }
1559 def A2_tfrrcr : HInst<
1560 (outs CtrRegs:$Cd32),
1561 (ins IntRegs:$Rs32),
1562 "$Cd32 = $Rs32",
1563 tc_a21dc435, TypeCR>, Enc_bd811a {
1564 let Inst{13-5} = 0b000000000;
1565 let Inst{31-21} = 0b01100010001;
1566 let hasNewValue = 1;
1567 let opNewValue = 0;
1568 }
1569 def A2_tfrsi : HInst<
1570 (outs IntRegs:$Rd32),
1571 (ins s32_0Imm:$Ii),
1572 "$Rd32 = #$Ii",
1573 tc_68cb12ce, TypeALU32_2op>, Enc_5e87ce, PredNewRel, ImmRegRel {
1574 let Inst{21-21} = 0b0;
1575 let Inst{31-24} = 0b01111000;
1576 let hasNewValue = 1;
1577 let opNewValue = 0;
1578 let CextOpcode = "A2_tfr";
1579 let InputType = "imm";
1580 let BaseOpcode = "A2_tfrsi";
1581 let isPredicable = 1;
1582 let isReMaterializable = 1;
1583 let isAsCheapAsAMove = 1;
1584 let isMoveImm = 1;
1585 let isExtendable = 1;
1586 let opExtendable = 1;
1587 let isExtentSigned = 1;
1588 let opExtentBits = 16;
1589 let opExtentAlign = 0;
1590 }
1591 def A2_tfrt : HInst<
1592 (outs IntRegs:$Rd32),
1593 (ins PredRegs:$Pu4, IntRegs:$Rs32),
1594 "if ($Pu4) $Rd32 = $Rs32",
1595 tc_d6bf0472, TypeALU32_2op>, PredNewRel, ImmRegRel {
1596 let isPredicated = 1;
1597 let hasNewValue = 1;
1598 let opNewValue = 0;
1599 let CextOpcode = "A2_tfr";
1600 let InputType = "reg";
1601 let BaseOpcode = "A2_tfr";
1602 let isPseudo = 1;
1603 let isCodeGenOnly = 1;
1604 }
1605 def A2_tfrtnew : HInst<
1606 (outs IntRegs:$Rd32),
1607 (ins PredRegs:$Pu4, IntRegs:$Rs32),
1608 "if ($Pu4.new) $Rd32 = $Rs32",
1609 tc_2b2f4060, TypeALU32_2op>, PredNewRel, ImmRegRel {
1610 let isPredicated = 1;
1611 let hasNewValue = 1;
1612 let opNewValue = 0;
1613 let isPredicatedNew = 1;
1614 let CextOpcode = "A2_tfr";
1615 let InputType = "reg";
1616 let BaseOpcode = "A2_tfr";
1617 let isPseudo = 1;
1618 let isCodeGenOnly = 1;
1619 }
1620 def A2_vabsh : HInst<
1621 (outs DoubleRegs:$Rdd32),
1622 (ins DoubleRegs:$Rss32),
1623 "$Rdd32 = vabsh($Rss32)",
1624 tc_c2f7d806, TypeS_2op>, Enc_b9c5fb {
1625 let Inst{13-5} = 0b000000100;
1626 let Inst{31-21} = 0b10000000010;
1627 let prefersSlot3 = 1;
1628 }
1629 def A2_vabshsat : HInst<
1630 (outs DoubleRegs:$Rdd32),
1631 (ins DoubleRegs:$Rss32),
1632 "$Rdd32 = vabsh($Rss32):sat",
1633 tc_c2f7d806, TypeS_2op>, Enc_b9c5fb {
1634 let Inst{13-5} = 0b000000101;
1635 let Inst{31-21} = 0b10000000010;
1636 let prefersSlot3 = 1;
1637 let Defs = [USR_OVF];
1638 }
1639 def A2_vabsw : HInst<
1640 (outs DoubleRegs:$Rdd32),
1641 (ins DoubleRegs:$Rss32),
1642 "$Rdd32 = vabsw($Rss32)",
1643 tc_c2f7d806, TypeS_2op>, Enc_b9c5fb {
1644 let Inst{13-5} = 0b000000110;
1645 let Inst{31-21} = 0b10000000010;
1646 let prefersSlot3 = 1;
1647 }
1648 def A2_vabswsat : HInst<
1649 (outs DoubleRegs:$Rdd32),
1650 (ins DoubleRegs:$Rss32),
1651 "$Rdd32 = vabsw($Rss32):sat",
1652 tc_c2f7d806, TypeS_2op>, Enc_b9c5fb {
1653 let Inst{13-5} = 0b000000111;
1654 let Inst{31-21} = 0b10000000010;
1655 let prefersSlot3 = 1;
1656 let Defs = [USR_OVF];
1657 }
1658 def A2_vaddb_map : HInst<
1659 (outs DoubleRegs:$Rdd32),
1660 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1661 "$Rdd32 = vaddb($Rss32,$Rtt32)",
1662 tc_540fdfbc, TypeMAPPING> {
1663 let isPseudo = 1;
1664 let isCodeGenOnly = 1;
1665 }
1666 def A2_vaddh : HInst<
1667 (outs DoubleRegs:$Rdd32),
1668 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1669 "$Rdd32 = vaddh($Rss32,$Rtt32)",
1670 tc_540fdfbc, TypeALU64>, Enc_a56825 {
1671 let Inst{7-5} = 0b010;
1672 let Inst{13-13} = 0b0;
1673 let Inst{31-21} = 0b11010011000;
1674 }
1675 def A2_vaddhs : HInst<
1676 (outs DoubleRegs:$Rdd32),
1677 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1678 "$Rdd32 = vaddh($Rss32,$Rtt32):sat",
1679 tc_b44c6e2a, TypeALU64>, Enc_a56825 {
1680 let Inst{7-5} = 0b011;
1681 let Inst{13-13} = 0b0;
1682 let Inst{31-21} = 0b11010011000;
1683 let prefersSlot3 = 1;
1684 let Defs = [USR_OVF];
1685 }
1686 def A2_vaddub : HInst<
1687 (outs DoubleRegs:$Rdd32),
1688 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1689 "$Rdd32 = vaddub($Rss32,$Rtt32)",
1690 tc_540fdfbc, TypeALU64>, Enc_a56825 {
1691 let Inst{7-5} = 0b000;
1692 let Inst{13-13} = 0b0;
1693 let Inst{31-21} = 0b11010011000;
1694 }
1695 def A2_vaddubs : HInst<
1696 (outs DoubleRegs:$Rdd32),
1697 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1698 "$Rdd32 = vaddub($Rss32,$Rtt32):sat",
1699 tc_b44c6e2a, TypeALU64>, Enc_a56825 {
1700 let Inst{7-5} = 0b001;
1701 let Inst{13-13} = 0b0;
1702 let Inst{31-21} = 0b11010011000;
1703 let prefersSlot3 = 1;
1704 let Defs = [USR_OVF];
1705 }
1706 def A2_vadduhs : HInst<
1707 (outs DoubleRegs:$Rdd32),
1708 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1709 "$Rdd32 = vadduh($Rss32,$Rtt32):sat",
1710 tc_b44c6e2a, TypeALU64>, Enc_a56825 {
1711 let Inst{7-5} = 0b100;
1712 let Inst{13-13} = 0b0;
1713 let Inst{31-21} = 0b11010011000;
1714 let prefersSlot3 = 1;
1715 let Defs = [USR_OVF];
1716 }
1717 def A2_vaddw : HInst<
1718 (outs DoubleRegs:$Rdd32),
1719 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1720 "$Rdd32 = vaddw($Rss32,$Rtt32)",
1721 tc_540fdfbc, TypeALU64>, Enc_a56825 {
1722 let Inst{7-5} = 0b101;
1723 let Inst{13-13} = 0b0;
1724 let Inst{31-21} = 0b11010011000;
1725 }
1726 def A2_vaddws : HInst<
1727 (outs DoubleRegs:$Rdd32),
1728 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1729 "$Rdd32 = vaddw($Rss32,$Rtt32):sat",
1730 tc_b44c6e2a, TypeALU64>, Enc_a56825 {
1731 let Inst{7-5} = 0b110;
1732 let Inst{13-13} = 0b0;
1733 let Inst{31-21} = 0b11010011000;
1734 let prefersSlot3 = 1;
1735 let Defs = [USR_OVF];
1736 }
1737 def A2_vavgh : HInst<
1738 (outs DoubleRegs:$Rdd32),
1739 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1740 "$Rdd32 = vavgh($Rss32,$Rtt32)",
1741 tc_540fdfbc, TypeALU64>, Enc_a56825 {
1742 let Inst{7-5} = 0b010;
1743 let Inst{13-13} = 0b0;
1744 let Inst{31-21} = 0b11010011010;
1745 }
1746 def A2_vavghcr : HInst<
1747 (outs DoubleRegs:$Rdd32),
1748 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1749 "$Rdd32 = vavgh($Rss32,$Rtt32):crnd",
1750 tc_2b6f77c6, TypeALU64>, Enc_a56825 {
1751 let Inst{7-5} = 0b100;
1752 let Inst{13-13} = 0b0;
1753 let Inst{31-21} = 0b11010011010;
1754 let prefersSlot3 = 1;
1755 }
1756 def A2_vavghr : HInst<
1757 (outs DoubleRegs:$Rdd32),
1758 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1759 "$Rdd32 = vavgh($Rss32,$Rtt32):rnd",
1760 tc_dbdffe3d, TypeALU64>, Enc_a56825 {
1761 let Inst{7-5} = 0b011;
1762 let Inst{13-13} = 0b0;
1763 let Inst{31-21} = 0b11010011010;
1764 }
1765 def A2_vavgub : HInst<
1766 (outs DoubleRegs:$Rdd32),
1767 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1768 "$Rdd32 = vavgub($Rss32,$Rtt32)",
1769 tc_540fdfbc, TypeALU64>, Enc_a56825 {
1770 let Inst{7-5} = 0b000;
1771 let Inst{13-13} = 0b0;
1772 let Inst{31-21} = 0b11010011010;
1773 }
1774 def A2_vavgubr : HInst<
1775 (outs DoubleRegs:$Rdd32),
1776 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1777 "$Rdd32 = vavgub($Rss32,$Rtt32):rnd",
1778 tc_dbdffe3d, TypeALU64>, Enc_a56825 {
1779 let Inst{7-5} = 0b001;
1780 let Inst{13-13} = 0b0;
1781 let Inst{31-21} = 0b11010011010;
1782 }
1783 def A2_vavguh : HInst<
1784 (outs DoubleRegs:$Rdd32),
1785 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1786 "$Rdd32 = vavguh($Rss32,$Rtt32)",
1787 tc_540fdfbc, TypeALU64>, Enc_a56825 {
1788 let Inst{7-5} = 0b101;
1789 let Inst{13-13} = 0b0;
1790 let Inst{31-21} = 0b11010011010;
1791 }
1792 def A2_vavguhr : HInst<
1793 (outs DoubleRegs:$Rdd32),
1794 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1795 "$Rdd32 = vavguh($Rss32,$Rtt32):rnd",
1796 tc_dbdffe3d, TypeALU64>, Enc_a56825 {
1797 let Inst{7-5} = 0b110;
1798 let Inst{13-13} = 0b0;
1799 let Inst{31-21} = 0b11010011010;
1800 }
1801 def A2_vavguw : HInst<
1802 (outs DoubleRegs:$Rdd32),
1803 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1804 "$Rdd32 = vavguw($Rss32,$Rtt32)",
1805 tc_540fdfbc, TypeALU64>, Enc_a56825 {
1806 let Inst{7-5} = 0b011;
1807 let Inst{13-13} = 0b0;
1808 let Inst{31-21} = 0b11010011011;
1809 }
1810 def A2_vavguwr : HInst<
1811 (outs DoubleRegs:$Rdd32),
1812 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1813 "$Rdd32 = vavguw($Rss32,$Rtt32):rnd",
1814 tc_dbdffe3d, TypeALU64>, Enc_a56825 {
1815 let Inst{7-5} = 0b100;
1816 let Inst{13-13} = 0b0;
1817 let Inst{31-21} = 0b11010011011;
1818 }
1819 def A2_vavgw : HInst<
1820 (outs DoubleRegs:$Rdd32),
1821 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1822 "$Rdd32 = vavgw($Rss32,$Rtt32)",
1823 tc_540fdfbc, TypeALU64>, Enc_a56825 {
1824 let Inst{7-5} = 0b000;
1825 let Inst{13-13} = 0b0;
1826 let Inst{31-21} = 0b11010011011;
1827 }
1828 def A2_vavgwcr : HInst<
1829 (outs DoubleRegs:$Rdd32),
1830 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1831 "$Rdd32 = vavgw($Rss32,$Rtt32):crnd",
1832 tc_2b6f77c6, TypeALU64>, Enc_a56825 {
1833 let Inst{7-5} = 0b010;
1834 let Inst{13-13} = 0b0;
1835 let Inst{31-21} = 0b11010011011;
1836 let prefersSlot3 = 1;
1837 }
1838 def A2_vavgwr : HInst<
1839 (outs DoubleRegs:$Rdd32),
1840 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1841 "$Rdd32 = vavgw($Rss32,$Rtt32):rnd",
1842 tc_dbdffe3d, TypeALU64>, Enc_a56825 {
1843 let Inst{7-5} = 0b001;
1844 let Inst{13-13} = 0b0;
1845 let Inst{31-21} = 0b11010011011;
1846 }
1847 def A2_vcmpbeq : HInst<
1848 (outs PredRegs:$Pd4),
1849 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1850 "$Pd4 = vcmpb.eq($Rss32,$Rtt32)",
1851 tc_1e856f58, TypeALU64>, Enc_fcf7a7 {
1852 let Inst{7-2} = 0b110000;
1853 let Inst{13-13} = 0b0;
1854 let Inst{31-21} = 0b11010010000;
1855 }
1856 def A2_vcmpbgtu : HInst<
1857 (outs PredRegs:$Pd4),
1858 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1859 "$Pd4 = vcmpb.gtu($Rss32,$Rtt32)",
1860 tc_1e856f58, TypeALU64>, Enc_fcf7a7 {
1861 let Inst{7-2} = 0b111000;
1862 let Inst{13-13} = 0b0;
1863 let Inst{31-21} = 0b11010010000;
1864 }
1865 def A2_vcmpheq : HInst<
1866 (outs PredRegs:$Pd4),
1867 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1868 "$Pd4 = vcmph.eq($Rss32,$Rtt32)",
1869 tc_1e856f58, TypeALU64>, Enc_fcf7a7 {
1870 let Inst{7-2} = 0b011000;
1871 let Inst{13-13} = 0b0;
1872 let Inst{31-21} = 0b11010010000;
1873 }
1874 def A2_vcmphgt : HInst<
1875 (outs PredRegs:$Pd4),
1876 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1877 "$Pd4 = vcmph.gt($Rss32,$Rtt32)",
1878 tc_1e856f58, TypeALU64>, Enc_fcf7a7 {
1879 let Inst{7-2} = 0b100000;
1880 let Inst{13-13} = 0b0;
1881 let Inst{31-21} = 0b11010010000;
1882 }
1883 def A2_vcmphgtu : HInst<
1884 (outs PredRegs:$Pd4),
1885 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1886 "$Pd4 = vcmph.gtu($Rss32,$Rtt32)",
1887 tc_1e856f58, TypeALU64>, Enc_fcf7a7 {
1888 let Inst{7-2} = 0b101000;
1889 let Inst{13-13} = 0b0;
1890 let Inst{31-21} = 0b11010010000;
1891 }
1892 def A2_vcmpweq : HInst<
1893 (outs PredRegs:$Pd4),
1894 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1895 "$Pd4 = vcmpw.eq($Rss32,$Rtt32)",
1896 tc_1e856f58, TypeALU64>, Enc_fcf7a7 {
1897 let Inst{7-2} = 0b000000;
1898 let Inst{13-13} = 0b0;
1899 let Inst{31-21} = 0b11010010000;
1900 }
1901 def A2_vcmpwgt : HInst<
1902 (outs PredRegs:$Pd4),
1903 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1904 "$Pd4 = vcmpw.gt($Rss32,$Rtt32)",
1905 tc_1e856f58, TypeALU64>, Enc_fcf7a7 {
1906 let Inst{7-2} = 0b001000;
1907 let Inst{13-13} = 0b0;
1908 let Inst{31-21} = 0b11010010000;
1909 }
1910 def A2_vcmpwgtu : HInst<
1911 (outs PredRegs:$Pd4),
1912 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1913 "$Pd4 = vcmpw.gtu($Rss32,$Rtt32)",
1914 tc_1e856f58, TypeALU64>, Enc_fcf7a7 {
1915 let Inst{7-2} = 0b010000;
1916 let Inst{13-13} = 0b0;
1917 let Inst{31-21} = 0b11010010000;
1918 }
1919 def A2_vconj : HInst<
1920 (outs DoubleRegs:$Rdd32),
1921 (ins DoubleRegs:$Rss32),
1922 "$Rdd32 = vconj($Rss32):sat",
1923 tc_c2f7d806, TypeS_2op>, Enc_b9c5fb {
1924 let Inst{13-5} = 0b000000111;
1925 let Inst{31-21} = 0b10000000100;
1926 let prefersSlot3 = 1;
1927 let Defs = [USR_OVF];
1928 }
1929 def A2_vmaxb : HInst<
1930 (outs DoubleRegs:$Rdd32),
1931 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
1932 "$Rdd32 = vmaxb($Rtt32,$Rss32)",
1933 tc_b44c6e2a, TypeALU64>, Enc_ea23e4 {
1934 let Inst{7-5} = 0b110;
1935 let Inst{13-13} = 0b0;
1936 let Inst{31-21} = 0b11010011110;
1937 let prefersSlot3 = 1;
1938 }
1939 def A2_vmaxh : HInst<
1940 (outs DoubleRegs:$Rdd32),
1941 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
1942 "$Rdd32 = vmaxh($Rtt32,$Rss32)",
1943 tc_b44c6e2a, TypeALU64>, Enc_ea23e4 {
1944 let Inst{7-5} = 0b001;
1945 let Inst{13-13} = 0b0;
1946 let Inst{31-21} = 0b11010011110;
1947 let prefersSlot3 = 1;
1948 }
1949 def A2_vmaxub : HInst<
1950 (outs DoubleRegs:$Rdd32),
1951 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
1952 "$Rdd32 = vmaxub($Rtt32,$Rss32)",
1953 tc_b44c6e2a, TypeALU64>, Enc_ea23e4 {
1954 let Inst{7-5} = 0b000;
1955 let Inst{13-13} = 0b0;
1956 let Inst{31-21} = 0b11010011110;
1957 let prefersSlot3 = 1;
1958 }
1959 def A2_vmaxuh : HInst<
1960 (outs DoubleRegs:$Rdd32),
1961 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
1962 "$Rdd32 = vmaxuh($Rtt32,$Rss32)",
1963 tc_b44c6e2a, TypeALU64>, Enc_ea23e4 {
1964 let Inst{7-5} = 0b010;
1965 let Inst{13-13} = 0b0;
1966 let Inst{31-21} = 0b11010011110;
1967 let prefersSlot3 = 1;
1968 }
1969 def A2_vmaxuw : HInst<
1970 (outs DoubleRegs:$Rdd32),
1971 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
1972 "$Rdd32 = vmaxuw($Rtt32,$Rss32)",
1973 tc_b44c6e2a, TypeALU64>, Enc_ea23e4 {
1974 let Inst{7-5} = 0b101;
1975 let Inst{13-13} = 0b0;
1976 let Inst{31-21} = 0b11010011101;
1977 let prefersSlot3 = 1;
1978 }
1979 def A2_vmaxw : HInst<
1980 (outs DoubleRegs:$Rdd32),
1981 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
1982 "$Rdd32 = vmaxw($Rtt32,$Rss32)",
1983 tc_b44c6e2a, TypeALU64>, Enc_ea23e4 {
1984 let Inst{7-5} = 0b011;
1985 let Inst{13-13} = 0b0;
1986 let Inst{31-21} = 0b11010011110;
1987 let prefersSlot3 = 1;
1988 }
1989 def A2_vminb : HInst<
1990 (outs DoubleRegs:$Rdd32),
1991 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
1992 "$Rdd32 = vminb($Rtt32,$Rss32)",
1993 tc_b44c6e2a, TypeALU64>, Enc_ea23e4 {
1994 let Inst{7-5} = 0b111;
1995 let Inst{13-13} = 0b0;
1996 let Inst{31-21} = 0b11010011110;
1997 let prefersSlot3 = 1;
1998 }
1999 def A2_vminh : HInst<
2000 (outs DoubleRegs:$Rdd32),
2001 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2002 "$Rdd32 = vminh($Rtt32,$Rss32)",
2003 tc_b44c6e2a, TypeALU64>, Enc_ea23e4 {
2004 let Inst{7-5} = 0b001;
2005 let Inst{13-13} = 0b0;
2006 let Inst{31-21} = 0b11010011101;
2007 let prefersSlot3 = 1;
2008 }
2009 def A2_vminub : HInst<
2010 (outs DoubleRegs:$Rdd32),
2011 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2012 "$Rdd32 = vminub($Rtt32,$Rss32)",
2013 tc_b44c6e2a, TypeALU64>, Enc_ea23e4 {
2014 let Inst{7-5} = 0b000;
2015 let Inst{13-13} = 0b0;
2016 let Inst{31-21} = 0b11010011101;
2017 let prefersSlot3 = 1;
2018 }
2019 def A2_vminuh : HInst<
2020 (outs DoubleRegs:$Rdd32),
2021 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2022 "$Rdd32 = vminuh($Rtt32,$Rss32)",
2023 tc_b44c6e2a, TypeALU64>, Enc_ea23e4 {
2024 let Inst{7-5} = 0b010;
2025 let Inst{13-13} = 0b0;
2026 let Inst{31-21} = 0b11010011101;
2027 let prefersSlot3 = 1;
2028 }
2029 def A2_vminuw : HInst<
2030 (outs DoubleRegs:$Rdd32),
2031 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2032 "$Rdd32 = vminuw($Rtt32,$Rss32)",
2033 tc_b44c6e2a, TypeALU64>, Enc_ea23e4 {
2034 let Inst{7-5} = 0b100;
2035 let Inst{13-13} = 0b0;
2036 let Inst{31-21} = 0b11010011101;
2037 let prefersSlot3 = 1;
2038 }
2039 def A2_vminw : HInst<
2040 (outs DoubleRegs:$Rdd32),
2041 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2042 "$Rdd32 = vminw($Rtt32,$Rss32)",
2043 tc_b44c6e2a, TypeALU64>, Enc_ea23e4 {
2044 let Inst{7-5} = 0b011;
2045 let Inst{13-13} = 0b0;
2046 let Inst{31-21} = 0b11010011101;
2047 let prefersSlot3 = 1;
2048 }
2049 def A2_vnavgh : HInst<
2050 (outs DoubleRegs:$Rdd32),
2051 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2052 "$Rdd32 = vnavgh($Rtt32,$Rss32)",
2053 tc_540fdfbc, TypeALU64>, Enc_ea23e4 {
2054 let Inst{7-5} = 0b000;
2055 let Inst{13-13} = 0b0;
2056 let Inst{31-21} = 0b11010011100;
2057 }
2058 def A2_vnavghcr : HInst<
2059 (outs DoubleRegs:$Rdd32),
2060 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2061 "$Rdd32 = vnavgh($Rtt32,$Rss32):crnd:sat",
2062 tc_2b6f77c6, TypeALU64>, Enc_ea23e4 {
2063 let Inst{7-5} = 0b010;
2064 let Inst{13-13} = 0b0;
2065 let Inst{31-21} = 0b11010011100;
2066 let prefersSlot3 = 1;
2067 let Defs = [USR_OVF];
2068 }
2069 def A2_vnavghr : HInst<
2070 (outs DoubleRegs:$Rdd32),
2071 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2072 "$Rdd32 = vnavgh($Rtt32,$Rss32):rnd:sat",
2073 tc_2b6f77c6, TypeALU64>, Enc_ea23e4 {
2074 let Inst{7-5} = 0b001;
2075 let Inst{13-13} = 0b0;
2076 let Inst{31-21} = 0b11010011100;
2077 let prefersSlot3 = 1;
2078 let Defs = [USR_OVF];
2079 }
2080 def A2_vnavgw : HInst<
2081 (outs DoubleRegs:$Rdd32),
2082 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2083 "$Rdd32 = vnavgw($Rtt32,$Rss32)",
2084 tc_540fdfbc, TypeALU64>, Enc_ea23e4 {
2085 let Inst{7-5} = 0b011;
2086 let Inst{13-13} = 0b0;
2087 let Inst{31-21} = 0b11010011100;
2088 }
2089 def A2_vnavgwcr : HInst<
2090 (outs DoubleRegs:$Rdd32),
2091 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2092 "$Rdd32 = vnavgw($Rtt32,$Rss32):crnd:sat",
2093 tc_2b6f77c6, TypeALU64>, Enc_ea23e4 {
2094 let Inst{7-5} = 0b110;
2095 let Inst{13-13} = 0b0;
2096 let Inst{31-21} = 0b11010011100;
2097 let prefersSlot3 = 1;
2098 let Defs = [USR_OVF];
2099 }
2100 def A2_vnavgwr : HInst<
2101 (outs DoubleRegs:$Rdd32),
2102 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2103 "$Rdd32 = vnavgw($Rtt32,$Rss32):rnd:sat",
2104 tc_2b6f77c6, TypeALU64>, Enc_ea23e4 {
2105 let Inst{7-5} = 0b100;
2106 let Inst{13-13} = 0b0;
2107 let Inst{31-21} = 0b11010011100;
2108 let prefersSlot3 = 1;
2109 let Defs = [USR_OVF];
2110 }
2111 def A2_vraddub : HInst<
2112 (outs DoubleRegs:$Rdd32),
2113 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
2114 "$Rdd32 = vraddub($Rss32,$Rtt32)",
2115 tc_8fd5f294, TypeM>, Enc_a56825 {
2116 let Inst{7-5} = 0b001;
2117 let Inst{13-13} = 0b0;
2118 let Inst{31-21} = 0b11101000010;
2119 let prefersSlot3 = 1;
2120 }
2121 def A2_vraddub_acc : HInst<
2122 (outs DoubleRegs:$Rxx32),
2123 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
2124 "$Rxx32 += vraddub($Rss32,$Rtt32)",
2125 tc_e913dc32, TypeM>, Enc_88c16c {
2126 let Inst{7-5} = 0b001;
2127 let Inst{13-13} = 0b0;
2128 let Inst{31-21} = 0b11101010010;
2129 let prefersSlot3 = 1;
2130 let Constraints = "$Rxx32 = $Rxx32in";
2131 }
2132 def A2_vrsadub : HInst<
2133 (outs DoubleRegs:$Rdd32),
2134 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
2135 "$Rdd32 = vrsadub($Rss32,$Rtt32)",
2136 tc_8fd5f294, TypeM>, Enc_a56825 {
2137 let Inst{7-5} = 0b010;
2138 let Inst{13-13} = 0b0;
2139 let Inst{31-21} = 0b11101000010;
2140 let prefersSlot3 = 1;
2141 }
2142 def A2_vrsadub_acc : HInst<
2143 (outs DoubleRegs:$Rxx32),
2144 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
2145 "$Rxx32 += vrsadub($Rss32,$Rtt32)",
2146 tc_e913dc32, TypeM>, Enc_88c16c {
2147 let Inst{7-5} = 0b010;
2148 let Inst{13-13} = 0b0;
2149 let Inst{31-21} = 0b11101010010;
2150 let prefersSlot3 = 1;
2151 let Constraints = "$Rxx32 = $Rxx32in";
2152 }
2153 def A2_vsubb_map : HInst<
2154 (outs DoubleRegs:$Rdd32),
2155 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
2156 "$Rdd32 = vsubb($Rss32,$Rtt32)",
2157 tc_540fdfbc, TypeMAPPING> {
2158 let isPseudo = 1;
2159 let isCodeGenOnly = 1;
2160 }
2161 def A2_vsubh : HInst<
2162 (outs DoubleRegs:$Rdd32),
2163 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2164 "$Rdd32 = vsubh($Rtt32,$Rss32)",
2165 tc_540fdfbc, TypeALU64>, Enc_ea23e4 {
2166 let Inst{7-5} = 0b010;
2167 let Inst{13-13} = 0b0;
2168 let Inst{31-21} = 0b11010011001;
2169 }
2170 def A2_vsubhs : HInst<
2171 (outs DoubleRegs:$Rdd32),
2172 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2173 "$Rdd32 = vsubh($Rtt32,$Rss32):sat",
2174 tc_b44c6e2a, TypeALU64>, Enc_ea23e4 {
2175 let Inst{7-5} = 0b011;
2176 let Inst{13-13} = 0b0;
2177 let Inst{31-21} = 0b11010011001;
2178 let prefersSlot3 = 1;
2179 let Defs = [USR_OVF];
2180 }
2181 def A2_vsubub : HInst<
2182 (outs DoubleRegs:$Rdd32),
2183 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2184 "$Rdd32 = vsubub($Rtt32,$Rss32)",
2185 tc_540fdfbc, TypeALU64>, Enc_ea23e4 {
2186 let Inst{7-5} = 0b000;
2187 let Inst{13-13} = 0b0;
2188 let Inst{31-21} = 0b11010011001;
2189 }
2190 def A2_vsububs : HInst<
2191 (outs DoubleRegs:$Rdd32),
2192 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2193 "$Rdd32 = vsubub($Rtt32,$Rss32):sat",
2194 tc_b44c6e2a, TypeALU64>, Enc_ea23e4 {
2195 let Inst{7-5} = 0b001;
2196 let Inst{13-13} = 0b0;
2197 let Inst{31-21} = 0b11010011001;
2198 let prefersSlot3 = 1;
2199 let Defs = [USR_OVF];
2200 }
2201 def A2_vsubuhs : HInst<
2202 (outs DoubleRegs:$Rdd32),
2203 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2204 "$Rdd32 = vsubuh($Rtt32,$Rss32):sat",
2205 tc_b44c6e2a, TypeALU64>, Enc_ea23e4 {
2206 let Inst{7-5} = 0b100;
2207 let Inst{13-13} = 0b0;
2208 let Inst{31-21} = 0b11010011001;
2209 let prefersSlot3 = 1;
2210 let Defs = [USR_OVF];
2211 }
2212 def A2_vsubw : HInst<
2213 (outs DoubleRegs:$Rdd32),
2214 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2215 "$Rdd32 = vsubw($Rtt32,$Rss32)",
2216 tc_540fdfbc, TypeALU64>, Enc_ea23e4 {
2217 let Inst{7-5} = 0b101;
2218 let Inst{13-13} = 0b0;
2219 let Inst{31-21} = 0b11010011001;
2220 }
2221 def A2_vsubws : HInst<
2222 (outs DoubleRegs:$Rdd32),
2223 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2224 "$Rdd32 = vsubw($Rtt32,$Rss32):sat",
2225 tc_b44c6e2a, TypeALU64>, Enc_ea23e4 {
2226 let Inst{7-5} = 0b110;
2227 let Inst{13-13} = 0b0;
2228 let Inst{31-21} = 0b11010011001;
2229 let prefersSlot3 = 1;
2230 let Defs = [USR_OVF];
2231 }
2232 def A2_xor : HInst<
2233 (outs IntRegs:$Rd32),
2234 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2235 "$Rd32 = xor($Rs32,$Rt32)",
2236 tc_b9488031, TypeALU32_3op>, Enc_5ab2be, PredNewRel {
2237 let Inst{7-5} = 0b000;
2238 let Inst{13-13} = 0b0;
2239 let Inst{31-21} = 0b11110001011;
2240 let hasNewValue = 1;
2241 let opNewValue = 0;
2242 let InputType = "reg";
2243 let BaseOpcode = "A2_xor";
2244 let isCommutable = 1;
2245 let isPredicable = 1;
2246 }
2247 def A2_xorp : HInst<
2248 (outs DoubleRegs:$Rdd32),
2249 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
2250 "$Rdd32 = xor($Rss32,$Rtt32)",
2251 tc_540fdfbc, TypeALU64>, Enc_a56825 {
2252 let Inst{7-5} = 0b100;
2253 let Inst{13-13} = 0b0;
2254 let Inst{31-21} = 0b11010011111;
2255 let isCommutable = 1;
2256 }
2257 def A2_zxtb : HInst<
2258 (outs IntRegs:$Rd32),
2259 (ins IntRegs:$Rs32),
2260 "$Rd32 = zxtb($Rs32)",
2261 tc_b9488031, TypeALU32_2op>, PredNewRel {
2262 let hasNewValue = 1;
2263 let opNewValue = 0;
2264 let BaseOpcode = "A2_zxtb";
2265 let isPredicable = 1;
2266 let isPseudo = 1;
2267 let isCodeGenOnly = 1;
2268 }
2269 def A2_zxth : HInst<
2270 (outs IntRegs:$Rd32),
2271 (ins IntRegs:$Rs32),
2272 "$Rd32 = zxth($Rs32)",
2273 tc_68cb12ce, TypeALU32_2op>, Enc_5e2823, PredNewRel {
2274 let Inst{13-5} = 0b000000000;
2275 let Inst{31-21} = 0b01110000110;
2276 let hasNewValue = 1;
2277 let opNewValue = 0;
2278 let BaseOpcode = "A2_zxth";
2279 let isPredicable = 1;
2280 }
2281 def A4_addp_c : HInst<
2282 (outs DoubleRegs:$Rdd32, PredRegs:$Px4),
2283 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32, PredRegs:$Px4in),
2284 "$Rdd32 = add($Rss32,$Rtt32,$Px4):carry",
2285 tc_523fcf30, TypeS_3op>, Enc_2b3f60 {
2286 let Inst{7-7} = 0b0;
2287 let Inst{13-13} = 0b0;
2288 let Inst{31-21} = 0b11000010110;
2289 let isPredicateLate = 1;
2290 let Constraints = "$Px4 = $Px4in";
2291 }
2292 def A4_andn : HInst<
2293 (outs IntRegs:$Rd32),
2294 (ins IntRegs:$Rt32, IntRegs:$Rs32),
2295 "$Rd32 = and($Rt32,~$Rs32)",
2296 tc_b9488031, TypeALU32_3op>, Enc_bd6011 {
2297 let Inst{7-5} = 0b000;
2298 let Inst{13-13} = 0b0;
2299 let Inst{31-21} = 0b11110001100;
2300 let hasNewValue = 1;
2301 let opNewValue = 0;
2302 let InputType = "reg";
2303 }
2304 def A4_andnp : HInst<
2305 (outs DoubleRegs:$Rdd32),
2306 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2307 "$Rdd32 = and($Rtt32,~$Rss32)",
2308 tc_540fdfbc, TypeALU64>, Enc_ea23e4 {
2309 let Inst{7-5} = 0b001;
2310 let Inst{13-13} = 0b0;
2311 let Inst{31-21} = 0b11010011111;
2312 }
2313 def A4_bitsplit : HInst<
2314 (outs DoubleRegs:$Rdd32),
2315 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2316 "$Rdd32 = bitsplit($Rs32,$Rt32)",
2317 tc_1b9c9ee5, TypeALU64>, Enc_be32a5 {
2318 let Inst{7-5} = 0b000;
2319 let Inst{13-13} = 0b0;
2320 let Inst{31-21} = 0b11010100001;
2321 let prefersSlot3 = 1;
2322 }
2323 def A4_bitspliti : HInst<
2324 (outs DoubleRegs:$Rdd32),
2325 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
2326 "$Rdd32 = bitsplit($Rs32,#$Ii)",
2327 tc_1b9c9ee5, TypeS_2op>, Enc_311abd {
2328 let Inst{7-5} = 0b100;
2329 let Inst{13-13} = 0b0;
2330 let Inst{31-21} = 0b10001000110;
2331 let prefersSlot3 = 1;
2332 }
2333 def A4_boundscheck : HInst<
2334 (outs PredRegs:$Pd4),
2335 (ins IntRegs:$Rs32, DoubleRegs:$Rtt32),
2336 "$Pd4 = boundscheck($Rs32,$Rtt32)",
2337 tc_1e856f58, TypeALU64> {
2338 let isPseudo = 1;
2339 }
2340 def A4_boundscheck_hi : HInst<
2341 (outs PredRegs:$Pd4),
2342 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
2343 "$Pd4 = boundscheck($Rss32,$Rtt32):raw:hi",
2344 tc_1e856f58, TypeALU64>, Enc_fcf7a7 {
2345 let Inst{7-2} = 0b101000;
2346 let Inst{13-13} = 0b1;
2347 let Inst{31-21} = 0b11010010000;
2348 }
2349 def A4_boundscheck_lo : HInst<
2350 (outs PredRegs:$Pd4),
2351 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
2352 "$Pd4 = boundscheck($Rss32,$Rtt32):raw:lo",
2353 tc_1e856f58, TypeALU64>, Enc_fcf7a7 {
2354 let Inst{7-2} = 0b100000;
2355 let Inst{13-13} = 0b1;
2356 let Inst{31-21} = 0b11010010000;
2357 }
2358 def A4_cmpbeq : HInst<
2359 (outs PredRegs:$Pd4),
2360 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2361 "$Pd4 = cmpb.eq($Rs32,$Rt32)",
2362 tc_1e856f58, TypeS_3op>, Enc_c2b48e, ImmRegRel {
2363 let Inst{7-2} = 0b110000;
2364 let Inst{13-13} = 0b0;
2365 let Inst{31-21} = 0b11000111110;
2366 let CextOpcode = "A4_cmpbeq";
2367 let InputType = "reg";
2368 let isCommutable = 1;
2369 let isCompare = 1;
2370 }
2371 def A4_cmpbeqi : HInst<
2372 (outs PredRegs:$Pd4),
2373 (ins IntRegs:$Rs32, u8_0Imm:$Ii),
2374 "$Pd4 = cmpb.eq($Rs32,#$Ii)",
2375 tc_7a830544, TypeALU64>, Enc_08d755, ImmRegRel {
2376 let Inst{4-2} = 0b000;
2377 let Inst{13-13} = 0b0;
2378 let Inst{31-21} = 0b11011101000;
2379 let CextOpcode = "A4_cmpbeq";
2380 let InputType = "imm";
2381 let isCommutable = 1;
2382 let isCompare = 1;
2383 }
2384 def A4_cmpbgt : HInst<
2385 (outs PredRegs:$Pd4),
2386 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2387 "$Pd4 = cmpb.gt($Rs32,$Rt32)",
2388 tc_1e856f58, TypeS_3op>, Enc_c2b48e, ImmRegRel {
2389 let Inst{7-2} = 0b010000;
2390 let Inst{13-13} = 0b0;
2391 let Inst{31-21} = 0b11000111110;
2392 let CextOpcode = "A4_cmpbgt";
2393 let InputType = "reg";
2394 let isCompare = 1;
2395 }
2396 def A4_cmpbgti : HInst<
2397 (outs PredRegs:$Pd4),
2398 (ins IntRegs:$Rs32, s8_0Imm:$Ii),
2399 "$Pd4 = cmpb.gt($Rs32,#$Ii)",
2400 tc_7a830544, TypeALU64>, Enc_08d755, ImmRegRel {
2401 let Inst{4-2} = 0b000;
2402 let Inst{13-13} = 0b0;
2403 let Inst{31-21} = 0b11011101001;
2404 let CextOpcode = "A4_cmpbgt";
2405 let InputType = "imm";
2406 let isCompare = 1;
2407 }
2408 def A4_cmpbgtu : HInst<
2409 (outs PredRegs:$Pd4),
2410 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2411 "$Pd4 = cmpb.gtu($Rs32,$Rt32)",
2412 tc_1e856f58, TypeS_3op>, Enc_c2b48e, ImmRegRel {
2413 let Inst{7-2} = 0b111000;
2414 let Inst{13-13} = 0b0;
2415 let Inst{31-21} = 0b11000111110;
2416 let CextOpcode = "A4_cmpbgtu";
2417 let InputType = "reg";
2418 let isCompare = 1;
2419 }
2420 def A4_cmpbgtui : HInst<
2421 (outs PredRegs:$Pd4),
2422 (ins IntRegs:$Rs32, u32_0Imm:$Ii),
2423 "$Pd4 = cmpb.gtu($Rs32,#$Ii)",
2424 tc_7a830544, TypeALU64>, Enc_02553a, ImmRegRel {
2425 let Inst{4-2} = 0b000;
2426 let Inst{13-12} = 0b00;
2427 let Inst{31-21} = 0b11011101010;
2428 let CextOpcode = "A4_cmpbgtu";
2429 let InputType = "imm";
2430 let isCompare = 1;
2431 let isExtendable = 1;
2432 let opExtendable = 2;
2433 let isExtentSigned = 0;
2434 let opExtentBits = 7;
2435 let opExtentAlign = 0;
2436 }
2437 def A4_cmpheq : HInst<
2438 (outs PredRegs:$Pd4),
2439 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2440 "$Pd4 = cmph.eq($Rs32,$Rt32)",
2441 tc_1e856f58, TypeS_3op>, Enc_c2b48e, ImmRegRel {
2442 let Inst{7-2} = 0b011000;
2443 let Inst{13-13} = 0b0;
2444 let Inst{31-21} = 0b11000111110;
2445 let CextOpcode = "A4_cmpheq";
2446 let InputType = "reg";
2447 let isCommutable = 1;
2448 let isCompare = 1;
2449 }
2450 def A4_cmpheqi : HInst<
2451 (outs PredRegs:$Pd4),
2452 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
2453 "$Pd4 = cmph.eq($Rs32,#$Ii)",
2454 tc_7a830544, TypeALU64>, Enc_08d755, ImmRegRel {
2455 let Inst{4-2} = 0b010;
2456 let Inst{13-13} = 0b0;
2457 let Inst{31-21} = 0b11011101000;
2458 let CextOpcode = "A4_cmpheq";
2459 let InputType = "imm";
2460 let isCommutable = 1;
2461 let isCompare = 1;
2462 let isExtendable = 1;
2463 let opExtendable = 2;
2464 let isExtentSigned = 1;
2465 let opExtentBits = 8;
2466 let opExtentAlign = 0;
2467 }
2468 def A4_cmphgt : HInst<
2469 (outs PredRegs:$Pd4),
2470 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2471 "$Pd4 = cmph.gt($Rs32,$Rt32)",
2472 tc_1e856f58, TypeS_3op>, Enc_c2b48e, ImmRegRel {
2473 let Inst{7-2} = 0b100000;
2474 let Inst{13-13} = 0b0;
2475 let Inst{31-21} = 0b11000111110;
2476 let CextOpcode = "A4_cmphgt";
2477 let InputType = "reg";
2478 let isCompare = 1;
2479 }
2480 def A4_cmphgti : HInst<
2481 (outs PredRegs:$Pd4),
2482 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
2483 "$Pd4 = cmph.gt($Rs32,#$Ii)",
2484 tc_7a830544, TypeALU64>, Enc_08d755, ImmRegRel {
2485 let Inst{4-2} = 0b010;
2486 let Inst{13-13} = 0b0;
2487 let Inst{31-21} = 0b11011101001;
2488 let CextOpcode = "A4_cmphgt";
2489 let InputType = "imm";
2490 let isCompare = 1;
2491 let isExtendable = 1;
2492 let opExtendable = 2;
2493 let isExtentSigned = 1;
2494 let opExtentBits = 8;
2495 let opExtentAlign = 0;
2496 }
2497 def A4_cmphgtu : HInst<
2498 (outs PredRegs:$Pd4),
2499 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2500 "$Pd4 = cmph.gtu($Rs32,$Rt32)",
2501 tc_1e856f58, TypeS_3op>, Enc_c2b48e, ImmRegRel {
2502 let Inst{7-2} = 0b101000;
2503 let Inst{13-13} = 0b0;
2504 let Inst{31-21} = 0b11000111110;
2505 let CextOpcode = "A4_cmphgtu";
2506 let InputType = "reg";
2507 let isCompare = 1;
2508 }
2509 def A4_cmphgtui : HInst<
2510 (outs PredRegs:$Pd4),
2511 (ins IntRegs:$Rs32, u32_0Imm:$Ii),
2512 "$Pd4 = cmph.gtu($Rs32,#$Ii)",
2513 tc_7a830544, TypeALU64>, Enc_02553a, ImmRegRel {
2514 let Inst{4-2} = 0b010;
2515 let Inst{13-12} = 0b00;
2516 let Inst{31-21} = 0b11011101010;
2517 let CextOpcode = "A4_cmphgtu";
2518 let InputType = "imm";
2519 let isCompare = 1;
2520 let isExtendable = 1;
2521 let opExtendable = 2;
2522 let isExtentSigned = 0;
2523 let opExtentBits = 7;
2524 let opExtentAlign = 0;
2525 }
2526 def A4_combineii : HInst<
2527 (outs DoubleRegs:$Rdd32),
2528 (ins s8_0Imm:$Ii, u32_0Imm:$II),
2529 "$Rdd32 = combine(#$Ii,#$II)",
2530 tc_b9488031, TypeALU32_2op>, Enc_f0cca7 {
2531 let Inst{31-21} = 0b01111100100;
2532 let isExtendable = 1;
2533 let opExtendable = 2;
2534 let isExtentSigned = 0;
2535 let opExtentBits = 6;
2536 let opExtentAlign = 0;
2537 }
2538 def A4_combineir : HInst<
2539 (outs DoubleRegs:$Rdd32),
2540 (ins s32_0Imm:$Ii, IntRegs:$Rs32),
2541 "$Rdd32 = combine(#$Ii,$Rs32)",
2542 tc_b9488031, TypeALU32_2op>, Enc_9cdba7 {
2543 let Inst{13-13} = 0b1;
2544 let Inst{31-21} = 0b01110011001;
2545 let isExtendable = 1;
2546 let opExtendable = 1;
2547 let isExtentSigned = 1;
2548 let opExtentBits = 8;
2549 let opExtentAlign = 0;
2550 }
2551 def A4_combineri : HInst<
2552 (outs DoubleRegs:$Rdd32),
2553 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
2554 "$Rdd32 = combine($Rs32,#$Ii)",
2555 tc_b9488031, TypeALU32_2op>, Enc_9cdba7 {
2556 let Inst{13-13} = 0b1;
2557 let Inst{31-21} = 0b01110011000;
2558 let isExtendable = 1;
2559 let opExtendable = 2;
2560 let isExtentSigned = 1;
2561 let opExtentBits = 8;
2562 let opExtentAlign = 0;
2563 }
2564 def A4_cround_ri : HInst<
2565 (outs IntRegs:$Rd32),
2566 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
2567 "$Rd32 = cround($Rs32,#$Ii)",
2568 tc_2b6f77c6, TypeS_2op>, Enc_a05677 {
2569 let Inst{7-5} = 0b000;
2570 let Inst{13-13} = 0b0;
2571 let Inst{31-21} = 0b10001100111;
2572 let hasNewValue = 1;
2573 let opNewValue = 0;
2574 let prefersSlot3 = 1;
2575 }
2576 def A4_cround_rr : HInst<
2577 (outs IntRegs:$Rd32),
2578 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2579 "$Rd32 = cround($Rs32,$Rt32)",
2580 tc_2b6f77c6, TypeS_3op>, Enc_5ab2be {
2581 let Inst{7-5} = 0b000;
2582 let Inst{13-13} = 0b0;
2583 let Inst{31-21} = 0b11000110110;
2584 let hasNewValue = 1;
2585 let opNewValue = 0;
2586 let prefersSlot3 = 1;
2587 }
2588 def A4_ext : HInst<
2589 (outs),
2590 (ins u26_6Imm:$Ii),
2591 "immext(#$Ii)",
2592 tc_452f85af, TypeEXTENDER>, Enc_2b518f {
2593 let Inst{31-28} = 0b0000;
2594 }
2595 def A4_modwrapu : HInst<
2596 (outs IntRegs:$Rd32),
2597 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2598 "$Rd32 = modwrap($Rs32,$Rt32)",
2599 tc_b44c6e2a, TypeALU64>, Enc_5ab2be {
2600 let Inst{7-5} = 0b111;
2601 let Inst{13-13} = 0b0;
2602 let Inst{31-21} = 0b11010011111;
2603 let hasNewValue = 1;
2604 let opNewValue = 0;
2605 let prefersSlot3 = 1;
2606 }
2607 def A4_orn : HInst<
2608 (outs IntRegs:$Rd32),
2609 (ins IntRegs:$Rt32, IntRegs:$Rs32),
2610 "$Rd32 = or($Rt32,~$Rs32)",
2611 tc_b9488031, TypeALU32_3op>, Enc_bd6011 {
2612 let Inst{7-5} = 0b000;
2613 let Inst{13-13} = 0b0;
2614 let Inst{31-21} = 0b11110001101;
2615 let hasNewValue = 1;
2616 let opNewValue = 0;
2617 let InputType = "reg";
2618 }
2619 def A4_ornp : HInst<
2620 (outs DoubleRegs:$Rdd32),
2621 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2622 "$Rdd32 = or($Rtt32,~$Rss32)",
2623 tc_540fdfbc, TypeALU64>, Enc_ea23e4 {
2624 let Inst{7-5} = 0b011;
2625 let Inst{13-13} = 0b0;
2626 let Inst{31-21} = 0b11010011111;
2627 }
2628 def A4_paslhf : HInst<
2629 (outs IntRegs:$Rd32),
2630 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2631 "if (!$Pu4) $Rd32 = aslh($Rs32)",
2632 tc_b9488031, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2633 let Inst{7-5} = 0b000;
2634 let Inst{13-10} = 0b1010;
2635 let Inst{31-21} = 0b01110000000;
2636 let isPredicated = 1;
2637 let isPredicatedFalse = 1;
2638 let hasNewValue = 1;
2639 let opNewValue = 0;
2640 let BaseOpcode = "A2_aslh";
2641 }
2642 def A4_paslhfnew : HInst<
2643 (outs IntRegs:$Rd32),
2644 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2645 "if (!$Pu4.new) $Rd32 = aslh($Rs32)",
2646 tc_5f6847a1, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2647 let Inst{7-5} = 0b000;
2648 let Inst{13-10} = 0b1011;
2649 let Inst{31-21} = 0b01110000000;
2650 let isPredicated = 1;
2651 let isPredicatedFalse = 1;
2652 let hasNewValue = 1;
2653 let opNewValue = 0;
2654 let isPredicatedNew = 1;
2655 let BaseOpcode = "A2_aslh";
2656 }
2657 def A4_paslht : HInst<
2658 (outs IntRegs:$Rd32),
2659 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2660 "if ($Pu4) $Rd32 = aslh($Rs32)",
2661 tc_b9488031, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2662 let Inst{7-5} = 0b000;
2663 let Inst{13-10} = 0b1000;
2664 let Inst{31-21} = 0b01110000000;
2665 let isPredicated = 1;
2666 let hasNewValue = 1;
2667 let opNewValue = 0;
2668 let BaseOpcode = "A2_aslh";
2669 }
2670 def A4_paslhtnew : HInst<
2671 (outs IntRegs:$Rd32),
2672 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2673 "if ($Pu4.new) $Rd32 = aslh($Rs32)",
2674 tc_5f6847a1, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2675 let Inst{7-5} = 0b000;
2676 let Inst{13-10} = 0b1001;
2677 let Inst{31-21} = 0b01110000000;
2678 let isPredicated = 1;
2679 let hasNewValue = 1;
2680 let opNewValue = 0;
2681 let isPredicatedNew = 1;
2682 let BaseOpcode = "A2_aslh";
2683 }
2684 def A4_pasrhf : HInst<
2685 (outs IntRegs:$Rd32),
2686 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2687 "if (!$Pu4) $Rd32 = asrh($Rs32)",
2688 tc_b9488031, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2689 let Inst{7-5} = 0b000;
2690 let Inst{13-10} = 0b1010;
2691 let Inst{31-21} = 0b01110000001;
2692 let isPredicated = 1;
2693 let isPredicatedFalse = 1;
2694 let hasNewValue = 1;
2695 let opNewValue = 0;
2696 let BaseOpcode = "A2_asrh";
2697 }
2698 def A4_pasrhfnew : HInst<
2699 (outs IntRegs:$Rd32),
2700 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2701 "if (!$Pu4.new) $Rd32 = asrh($Rs32)",
2702 tc_5f6847a1, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2703 let Inst{7-5} = 0b000;
2704 let Inst{13-10} = 0b1011;
2705 let Inst{31-21} = 0b01110000001;
2706 let isPredicated = 1;
2707 let isPredicatedFalse = 1;
2708 let hasNewValue = 1;
2709 let opNewValue = 0;
2710 let isPredicatedNew = 1;
2711 let BaseOpcode = "A2_asrh";
2712 }
2713 def A4_pasrht : HInst<
2714 (outs IntRegs:$Rd32),
2715 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2716 "if ($Pu4) $Rd32 = asrh($Rs32)",
2717 tc_b9488031, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2718 let Inst{7-5} = 0b000;
2719 let Inst{13-10} = 0b1000;
2720 let Inst{31-21} = 0b01110000001;
2721 let isPredicated = 1;
2722 let hasNewValue = 1;
2723 let opNewValue = 0;
2724 let BaseOpcode = "A2_asrh";
2725 }
2726 def A4_pasrhtnew : HInst<
2727 (outs IntRegs:$Rd32),
2728 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2729 "if ($Pu4.new) $Rd32 = asrh($Rs32)",
2730 tc_5f6847a1, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2731 let Inst{7-5} = 0b000;
2732 let Inst{13-10} = 0b1001;
2733 let Inst{31-21} = 0b01110000001;
2734 let isPredicated = 1;
2735 let hasNewValue = 1;
2736 let opNewValue = 0;
2737 let isPredicatedNew = 1;
2738 let BaseOpcode = "A2_asrh";
2739 }
2740 def A4_psxtbf : HInst<
2741 (outs IntRegs:$Rd32),
2742 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2743 "if (!$Pu4) $Rd32 = sxtb($Rs32)",
2744 tc_b9488031, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2745 let Inst{7-5} = 0b000;
2746 let Inst{13-10} = 0b1010;
2747 let Inst{31-21} = 0b01110000101;
2748 let isPredicated = 1;
2749 let isPredicatedFalse = 1;
2750 let hasNewValue = 1;
2751 let opNewValue = 0;
2752 let BaseOpcode = "A2_sxtb";
2753 }
2754 def A4_psxtbfnew : HInst<
2755 (outs IntRegs:$Rd32),
2756 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2757 "if (!$Pu4.new) $Rd32 = sxtb($Rs32)",
2758 tc_5f6847a1, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2759 let Inst{7-5} = 0b000;
2760 let Inst{13-10} = 0b1011;
2761 let Inst{31-21} = 0b01110000101;
2762 let isPredicated = 1;
2763 let isPredicatedFalse = 1;
2764 let hasNewValue = 1;
2765 let opNewValue = 0;
2766 let isPredicatedNew = 1;
2767 let BaseOpcode = "A2_sxtb";
2768 }
2769 def A4_psxtbt : HInst<
2770 (outs IntRegs:$Rd32),
2771 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2772 "if ($Pu4) $Rd32 = sxtb($Rs32)",
2773 tc_b9488031, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2774 let Inst{7-5} = 0b000;
2775 let Inst{13-10} = 0b1000;
2776 let Inst{31-21} = 0b01110000101;
2777 let isPredicated = 1;
2778 let hasNewValue = 1;
2779 let opNewValue = 0;
2780 let BaseOpcode = "A2_sxtb";
2781 }
2782 def A4_psxtbtnew : HInst<
2783 (outs IntRegs:$Rd32),
2784 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2785 "if ($Pu4.new) $Rd32 = sxtb($Rs32)",
2786 tc_5f6847a1, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2787 let Inst{7-5} = 0b000;
2788 let Inst{13-10} = 0b1001;
2789 let Inst{31-21} = 0b01110000101;
2790 let isPredicated = 1;
2791 let hasNewValue = 1;
2792 let opNewValue = 0;
2793 let isPredicatedNew = 1;
2794 let BaseOpcode = "A2_sxtb";
2795 }
2796 def A4_psxthf : HInst<
2797 (outs IntRegs:$Rd32),
2798 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2799 "if (!$Pu4) $Rd32 = sxth($Rs32)",
2800 tc_b9488031, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2801 let Inst{7-5} = 0b000;
2802 let Inst{13-10} = 0b1010;
2803 let Inst{31-21} = 0b01110000111;
2804 let isPredicated = 1;
2805 let isPredicatedFalse = 1;
2806 let hasNewValue = 1;
2807 let opNewValue = 0;
2808 let BaseOpcode = "A2_sxth";
2809 }
2810 def A4_psxthfnew : HInst<
2811 (outs IntRegs:$Rd32),
2812 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2813 "if (!$Pu4.new) $Rd32 = sxth($Rs32)",
2814 tc_5f6847a1, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2815 let Inst{7-5} = 0b000;
2816 let Inst{13-10} = 0b1011;
2817 let Inst{31-21} = 0b01110000111;
2818 let isPredicated = 1;
2819 let isPredicatedFalse = 1;
2820 let hasNewValue = 1;
2821 let opNewValue = 0;
2822 let isPredicatedNew = 1;
2823 let BaseOpcode = "A2_sxth";
2824 }
2825 def A4_psxtht : HInst<
2826 (outs IntRegs:$Rd32),
2827 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2828 "if ($Pu4) $Rd32 = sxth($Rs32)",
2829 tc_b9488031, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2830 let Inst{7-5} = 0b000;
2831 let Inst{13-10} = 0b1000;
2832 let Inst{31-21} = 0b01110000111;
2833 let isPredicated = 1;
2834 let hasNewValue = 1;
2835 let opNewValue = 0;
2836 let BaseOpcode = "A2_sxth";
2837 }
2838 def A4_psxthtnew : HInst<
2839 (outs IntRegs:$Rd32),
2840 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2841 "if ($Pu4.new) $Rd32 = sxth($Rs32)",
2842 tc_5f6847a1, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2843 let Inst{7-5} = 0b000;
2844 let Inst{13-10} = 0b1001;
2845 let Inst{31-21} = 0b01110000111;
2846 let isPredicated = 1;
2847 let hasNewValue = 1;
2848 let opNewValue = 0;
2849 let isPredicatedNew = 1;
2850 let BaseOpcode = "A2_sxth";
2851 }
2852 def A4_pzxtbf : HInst<
2853 (outs IntRegs:$Rd32),
2854 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2855 "if (!$Pu4) $Rd32 = zxtb($Rs32)",
2856 tc_b9488031, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2857 let Inst{7-5} = 0b000;
2858 let Inst{13-10} = 0b1010;
2859 let Inst{31-21} = 0b01110000100;
2860 let isPredicated = 1;
2861 let isPredicatedFalse = 1;
2862 let hasNewValue = 1;
2863 let opNewValue = 0;
2864 let BaseOpcode = "A2_zxtb";
2865 }
2866 def A4_pzxtbfnew : HInst<
2867 (outs IntRegs:$Rd32),
2868 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2869 "if (!$Pu4.new) $Rd32 = zxtb($Rs32)",
2870 tc_5f6847a1, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2871 let Inst{7-5} = 0b000;
2872 let Inst{13-10} = 0b1011;
2873 let Inst{31-21} = 0b01110000100;
2874 let isPredicated = 1;
2875 let isPredicatedFalse = 1;
2876 let hasNewValue = 1;
2877 let opNewValue = 0;
2878 let isPredicatedNew = 1;
2879 let BaseOpcode = "A2_zxtb";
2880 }
2881 def A4_pzxtbt : HInst<
2882 (outs IntRegs:$Rd32),
2883 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2884 "if ($Pu4) $Rd32 = zxtb($Rs32)",
2885 tc_b9488031, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2886 let Inst{7-5} = 0b000;
2887 let Inst{13-10} = 0b1000;
2888 let Inst{31-21} = 0b01110000100;
2889 let isPredicated = 1;
2890 let hasNewValue = 1;
2891 let opNewValue = 0;
2892 let BaseOpcode = "A2_zxtb";
2893 }
2894 def A4_pzxtbtnew : HInst<
2895 (outs IntRegs:$Rd32),
2896 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2897 "if ($Pu4.new) $Rd32 = zxtb($Rs32)",
2898 tc_5f6847a1, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2899 let Inst{7-5} = 0b000;
2900 let Inst{13-10} = 0b1001;
2901 let Inst{31-21} = 0b01110000100;
2902 let isPredicated = 1;
2903 let hasNewValue = 1;
2904 let opNewValue = 0;
2905 let isPredicatedNew = 1;
2906 let BaseOpcode = "A2_zxtb";
2907 }
2908 def A4_pzxthf : HInst<
2909 (outs IntRegs:$Rd32),
2910 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2911 "if (!$Pu4) $Rd32 = zxth($Rs32)",
2912 tc_b9488031, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2913 let Inst{7-5} = 0b000;
2914 let Inst{13-10} = 0b1010;
2915 let Inst{31-21} = 0b01110000110;
2916 let isPredicated = 1;
2917 let isPredicatedFalse = 1;
2918 let hasNewValue = 1;
2919 let opNewValue = 0;
2920 let BaseOpcode = "A2_zxth";
2921 }
2922 def A4_pzxthfnew : HInst<
2923 (outs IntRegs:$Rd32),
2924 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2925 "if (!$Pu4.new) $Rd32 = zxth($Rs32)",
2926 tc_5f6847a1, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2927 let Inst{7-5} = 0b000;
2928 let Inst{13-10} = 0b1011;
2929 let Inst{31-21} = 0b01110000110;
2930 let isPredicated = 1;
2931 let isPredicatedFalse = 1;
2932 let hasNewValue = 1;
2933 let opNewValue = 0;
2934 let isPredicatedNew = 1;
2935 let BaseOpcode = "A2_zxth";
2936 }
2937 def A4_pzxtht : HInst<
2938 (outs IntRegs:$Rd32),
2939 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2940 "if ($Pu4) $Rd32 = zxth($Rs32)",
2941 tc_b9488031, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2942 let Inst{7-5} = 0b000;
2943 let Inst{13-10} = 0b1000;
2944 let Inst{31-21} = 0b01110000110;
2945 let isPredicated = 1;
2946 let hasNewValue = 1;
2947 let opNewValue = 0;
2948 let BaseOpcode = "A2_zxth";
2949 }
2950 def A4_pzxthtnew : HInst<
2951 (outs IntRegs:$Rd32),
2952 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2953 "if ($Pu4.new) $Rd32 = zxth($Rs32)",
2954 tc_5f6847a1, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2955 let Inst{7-5} = 0b000;
2956 let Inst{13-10} = 0b1001;
2957 let Inst{31-21} = 0b01110000110;
2958 let isPredicated = 1;
2959 let hasNewValue = 1;
2960 let opNewValue = 0;
2961 let isPredicatedNew = 1;
2962 let BaseOpcode = "A2_zxth";
2963 }
2964 def A4_rcmpeq : HInst<
2965 (outs IntRegs:$Rd32),
2966 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2967 "$Rd32 = cmp.eq($Rs32,$Rt32)",
2968 tc_b9488031, TypeALU32_3op>, Enc_5ab2be, ImmRegRel {
2969 let Inst{7-5} = 0b000;
2970 let Inst{13-13} = 0b0;
2971 let Inst{31-21} = 0b11110011010;
2972 let hasNewValue = 1;
2973 let opNewValue = 0;
2974 let CextOpcode = "A4_rcmpeq";
2975 let InputType = "reg";
2976 let isCommutable = 1;
2977 }
2978 def A4_rcmpeqi : HInst<
2979 (outs IntRegs:$Rd32),
2980 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
2981 "$Rd32 = cmp.eq($Rs32,#$Ii)",
2982 tc_b9488031, TypeALU32_2op>, Enc_b8c967, ImmRegRel {
2983 let Inst{13-13} = 0b1;
2984 let Inst{31-21} = 0b01110011010;
2985 let hasNewValue = 1;
2986 let opNewValue = 0;
2987 let CextOpcode = "A4_rcmpeqi";
2988 let InputType = "imm";
2989 let isExtendable = 1;
2990 let opExtendable = 2;
2991 let isExtentSigned = 1;
2992 let opExtentBits = 8;
2993 let opExtentAlign = 0;
2994 }
2995 def A4_rcmpneq : HInst<
2996 (outs IntRegs:$Rd32),
2997 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2998 "$Rd32 = !cmp.eq($Rs32,$Rt32)",
2999 tc_b9488031, TypeALU32_3op>, Enc_5ab2be, ImmRegRel {
3000 let Inst{7-5} = 0b000;
3001 let Inst{13-13} = 0b0;
3002 let Inst{31-21} = 0b11110011011;
3003 let hasNewValue = 1;
3004 let opNewValue = 0;
3005 let CextOpcode = "A4_rcmpneq";
3006 let InputType = "reg";
3007 let isCommutable = 1;
3008 }
3009 def A4_rcmpneqi : HInst<
3010 (outs IntRegs:$Rd32),
3011 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
3012 "$Rd32 = !cmp.eq($Rs32,#$Ii)",
3013 tc_b9488031, TypeALU32_2op>, Enc_b8c967, ImmRegRel {
3014 let Inst{13-13} = 0b1;
3015 let Inst{31-21} = 0b01110011011;
3016 let hasNewValue = 1;
3017 let opNewValue = 0;
3018 let CextOpcode = "A4_rcmpeqi";
3019 let InputType = "imm";
3020 let isExtendable = 1;
3021 let opExtendable = 2;
3022 let isExtentSigned = 1;
3023 let opExtentBits = 8;
3024 let opExtentAlign = 0;
3025 }
3026 def A4_round_ri : HInst<
3027 (outs IntRegs:$Rd32),
3028 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
3029 "$Rd32 = round($Rs32,#$Ii)",
3030 tc_2b6f77c6, TypeS_2op>, Enc_a05677 {
3031 let Inst{7-5} = 0b100;
3032 let Inst{13-13} = 0b0;
3033 let Inst{31-21} = 0b10001100111;
3034 let hasNewValue = 1;
3035 let opNewValue = 0;
3036 let prefersSlot3 = 1;
3037 }
3038 def A4_round_ri_sat : HInst<
3039 (outs IntRegs:$Rd32),
3040 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
3041 "$Rd32 = round($Rs32,#$Ii):sat",
3042 tc_2b6f77c6, TypeS_2op>, Enc_a05677 {
3043 let Inst{7-5} = 0b110;
3044 let Inst{13-13} = 0b0;
3045 let Inst{31-21} = 0b10001100111;
3046 let hasNewValue = 1;
3047 let opNewValue = 0;
3048 let prefersSlot3 = 1;
3049 let Defs = [USR_OVF];
3050 }
3051 def A4_round_rr : HInst<
3052 (outs IntRegs:$Rd32),
3053 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3054 "$Rd32 = round($Rs32,$Rt32)",
3055 tc_2b6f77c6, TypeS_3op>, Enc_5ab2be {
3056 let Inst{7-5} = 0b100;
3057 let Inst{13-13} = 0b0;
3058 let Inst{31-21} = 0b11000110110;
3059 let hasNewValue = 1;
3060 let opNewValue = 0;
3061 let prefersSlot3 = 1;
3062 }
3063 def A4_round_rr_sat : HInst<
3064 (outs IntRegs:$Rd32),
3065 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3066 "$Rd32 = round($Rs32,$Rt32):sat",
3067 tc_2b6f77c6, TypeS_3op>, Enc_5ab2be {
3068 let Inst{7-5} = 0b110;
3069 let Inst{13-13} = 0b0;
3070 let Inst{31-21} = 0b11000110110;
3071 let hasNewValue = 1;
3072 let opNewValue = 0;
3073 let prefersSlot3 = 1;
3074 let Defs = [USR_OVF];
3075 }
3076 def A4_subp_c : HInst<
3077 (outs DoubleRegs:$Rdd32, PredRegs:$Px4),
3078 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32, PredRegs:$Px4in),
3079 "$Rdd32 = sub($Rss32,$Rtt32,$Px4):carry",
3080 tc_523fcf30, TypeS_3op>, Enc_2b3f60 {
3081 let Inst{7-7} = 0b0;
3082 let Inst{13-13} = 0b0;
3083 let Inst{31-21} = 0b11000010111;
3084 let isPredicateLate = 1;
3085 let Constraints = "$Px4 = $Px4in";
3086 }
3087 def A4_tfrcpp : HInst<
3088 (outs DoubleRegs:$Rdd32),
3089 (ins CtrRegs64:$Css32),
3090 "$Rdd32 = $Css32",
3091 tc_29175780, TypeCR>, Enc_667b39 {
3092 let Inst{13-5} = 0b000000000;
3093 let Inst{31-21} = 0b01101000000;
3094 }
3095 def A4_tfrpcp : HInst<
3096 (outs CtrRegs64:$Cdd32),
3097 (ins DoubleRegs:$Rss32),
3098 "$Cdd32 = $Rss32",
3099 tc_a21dc435, TypeCR>, Enc_0ed752 {
3100 let Inst{13-5} = 0b000000000;
3101 let Inst{31-21} = 0b01100011001;
3102 }
3103 def A4_tlbmatch : HInst<
3104 (outs PredRegs:$Pd4),
3105 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
3106 "$Pd4 = tlbmatch($Rss32,$Rt32)",
3107 tc_04c9decc, TypeALU64>, Enc_03833b {
3108 let Inst{7-2} = 0b011000;
3109 let Inst{13-13} = 0b1;
3110 let Inst{31-21} = 0b11010010000;
3111 let isPredicateLate = 1;
3112 }
3113 def A4_vcmpbeq_any : HInst<
3114 (outs PredRegs:$Pd4),
3115 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3116 "$Pd4 = any8(vcmpb.eq($Rss32,$Rtt32))",
3117 tc_1e856f58, TypeALU64>, Enc_fcf7a7 {
3118 let Inst{7-2} = 0b000000;
3119 let Inst{13-13} = 0b1;
3120 let Inst{31-21} = 0b11010010000;
3121 }
3122 def A4_vcmpbeqi : HInst<
3123 (outs PredRegs:$Pd4),
3124 (ins DoubleRegs:$Rss32, u8_0Imm:$Ii),
3125 "$Pd4 = vcmpb.eq($Rss32,#$Ii)",
3126 tc_7a830544, TypeALU64>, Enc_0d8adb {
3127 let Inst{4-2} = 0b000;
3128 let Inst{13-13} = 0b0;
3129 let Inst{31-21} = 0b11011100000;
3130 }
3131 def A4_vcmpbgt : HInst<
3132 (outs PredRegs:$Pd4),
3133 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3134 "$Pd4 = vcmpb.gt($Rss32,$Rtt32)",
3135 tc_1e856f58, TypeALU64>, Enc_fcf7a7 {
3136 let Inst{7-2} = 0b010000;
3137 let Inst{13-13} = 0b1;
3138 let Inst{31-21} = 0b11010010000;
3139 }
3140 def A4_vcmpbgti : HInst<
3141 (outs PredRegs:$Pd4),
3142 (ins DoubleRegs:$Rss32, s8_0Imm:$Ii),
3143 "$Pd4 = vcmpb.gt($Rss32,#$Ii)",
3144 tc_7a830544, TypeALU64>, Enc_0d8adb {
3145 let Inst{4-2} = 0b000;
3146 let Inst{13-13} = 0b0;
3147 let Inst{31-21} = 0b11011100001;
3148 }
3149 def A4_vcmpbgtui : HInst<
3150 (outs PredRegs:$Pd4),
3151 (ins DoubleRegs:$Rss32, u7_0Imm:$Ii),
3152 "$Pd4 = vcmpb.gtu($Rss32,#$Ii)",
3153 tc_7a830544, TypeALU64>, Enc_3680c2 {
3154 let Inst{4-2} = 0b000;
3155 let Inst{13-12} = 0b00;
3156 let Inst{31-21} = 0b11011100010;
3157 }
3158 def A4_vcmpheqi : HInst<
3159 (outs PredRegs:$Pd4),
3160 (ins DoubleRegs:$Rss32, s8_0Imm:$Ii),
3161 "$Pd4 = vcmph.eq($Rss32,#$Ii)",
3162 tc_7a830544, TypeALU64>, Enc_0d8adb {
3163 let Inst{4-2} = 0b010;
3164 let Inst{13-13} = 0b0;
3165 let Inst{31-21} = 0b11011100000;
3166 }
3167 def A4_vcmphgti : HInst<
3168 (outs PredRegs:$Pd4),
3169 (ins DoubleRegs:$Rss32, s8_0Imm:$Ii),
3170 "$Pd4 = vcmph.gt($Rss32,#$Ii)",
3171 tc_7a830544, TypeALU64>, Enc_0d8adb {
3172 let Inst{4-2} = 0b010;
3173 let Inst{13-13} = 0b0;
3174 let Inst{31-21} = 0b11011100001;
3175 }
3176 def A4_vcmphgtui : HInst<
3177 (outs PredRegs:$Pd4),
3178 (ins DoubleRegs:$Rss32, u7_0Imm:$Ii),
3179 "$Pd4 = vcmph.gtu($Rss32,#$Ii)",
3180 tc_7a830544, TypeALU64>, Enc_3680c2 {
3181 let Inst{4-2} = 0b010;
3182 let Inst{13-12} = 0b00;
3183 let Inst{31-21} = 0b11011100010;
3184 }
3185 def A4_vcmpweqi : HInst<
3186 (outs PredRegs:$Pd4),
3187 (ins DoubleRegs:$Rss32, s8_0Imm:$Ii),
3188 "$Pd4 = vcmpw.eq($Rss32,#$Ii)",
3189 tc_7a830544, TypeALU64>, Enc_0d8adb {
3190 let Inst{4-2} = 0b100;
3191 let Inst{13-13} = 0b0;
3192 let Inst{31-21} = 0b11011100000;
3193 }
3194 def A4_vcmpwgti : HInst<
3195 (outs PredRegs:$Pd4),
3196 (ins DoubleRegs:$Rss32, s8_0Imm:$Ii),
3197 "$Pd4 = vcmpw.gt($Rss32,#$Ii)",
3198 tc_7a830544, TypeALU64>, Enc_0d8adb {
3199 let Inst{4-2} = 0b100;
3200 let Inst{13-13} = 0b0;
3201 let Inst{31-21} = 0b11011100001;
3202 }
3203 def A4_vcmpwgtui : HInst<
3204 (outs PredRegs:$Pd4),
3205 (ins DoubleRegs:$Rss32, u7_0Imm:$Ii),
3206 "$Pd4 = vcmpw.gtu($Rss32,#$Ii)",
3207 tc_7a830544, TypeALU64>, Enc_3680c2 {
3208 let Inst{4-2} = 0b100;
3209 let Inst{13-12} = 0b00;
3210 let Inst{31-21} = 0b11011100010;
3211 }
3212 def A4_vrmaxh : HInst<
3213 (outs DoubleRegs:$Rxx32),
3214 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Ru32),
3215 "$Rxx32 = vrmaxh($Rss32,$Ru32)",
3216 tc_c6ce9b3f, TypeS_3op>, Enc_412ff0 {
3217 let Inst{7-5} = 0b001;
3218 let Inst{13-13} = 0b0;
3219 let Inst{31-21} = 0b11001011001;
3220 let prefersSlot3 = 1;
3221 let Constraints = "$Rxx32 = $Rxx32in";
3222 }
3223 def A4_vrmaxuh : HInst<
3224 (outs DoubleRegs:$Rxx32),
3225 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Ru32),
3226 "$Rxx32 = vrmaxuh($Rss32,$Ru32)",
3227 tc_c6ce9b3f, TypeS_3op>, Enc_412ff0 {
3228 let Inst{7-5} = 0b001;
3229 let Inst{13-13} = 0b1;
3230 let Inst{31-21} = 0b11001011001;
3231 let prefersSlot3 = 1;
3232 let Constraints = "$Rxx32 = $Rxx32in";
3233 }
3234 def A4_vrmaxuw : HInst<
3235 (outs DoubleRegs:$Rxx32),
3236 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Ru32),
3237 "$Rxx32 = vrmaxuw($Rss32,$Ru32)",
3238 tc_c6ce9b3f, TypeS_3op>, Enc_412ff0 {
3239 let Inst{7-5} = 0b010;
3240 let Inst{13-13} = 0b1;
3241 let Inst{31-21} = 0b11001011001;
3242 let prefersSlot3 = 1;
3243 let Constraints = "$Rxx32 = $Rxx32in";
3244 }
3245 def A4_vrmaxw : HInst<
3246 (outs DoubleRegs:$Rxx32),
3247 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Ru32),
3248 "$Rxx32 = vrmaxw($Rss32,$Ru32)",
3249 tc_c6ce9b3f, TypeS_3op>, Enc_412ff0 {
3250 let Inst{7-5} = 0b010;
3251 let Inst{13-13} = 0b0;
3252 let Inst{31-21} = 0b11001011001;
3253 let prefersSlot3 = 1;
3254 let Constraints = "$Rxx32 = $Rxx32in";
3255 }
3256 def A4_vrminh : HInst<
3257 (outs DoubleRegs:$Rxx32),
3258 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Ru32),
3259 "$Rxx32 = vrminh($Rss32,$Ru32)",
3260 tc_c6ce9b3f, TypeS_3op>, Enc_412ff0 {
3261 let Inst{7-5} = 0b101;
3262 let Inst{13-13} = 0b0;
3263 let Inst{31-21} = 0b11001011001;
3264 let prefersSlot3 = 1;
3265 let Constraints = "$Rxx32 = $Rxx32in";
3266 }
3267 def A4_vrminuh : HInst<
3268 (outs DoubleRegs:$Rxx32),
3269 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Ru32),
3270 "$Rxx32 = vrminuh($Rss32,$Ru32)",
3271 tc_c6ce9b3f, TypeS_3op>, Enc_412ff0 {
3272 let Inst{7-5} = 0b101;
3273 let Inst{13-13} = 0b1;
3274 let Inst{31-21} = 0b11001011001;
3275 let prefersSlot3 = 1;
3276 let Constraints = "$Rxx32 = $Rxx32in";
3277 }
3278 def A4_vrminuw : HInst<
3279 (outs DoubleRegs:$Rxx32),
3280 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Ru32),
3281 "$Rxx32 = vrminuw($Rss32,$Ru32)",
3282 tc_c6ce9b3f, TypeS_3op>, Enc_412ff0 {
3283 let Inst{7-5} = 0b110;
3284 let Inst{13-13} = 0b1;
3285 let Inst{31-21} = 0b11001011001;
3286 let prefersSlot3 = 1;
3287 let Constraints = "$Rxx32 = $Rxx32in";
3288 }
3289 def A4_vrminw : HInst<
3290 (outs DoubleRegs:$Rxx32),
3291 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Ru32),
3292 "$Rxx32 = vrminw($Rss32,$Ru32)",
3293 tc_c6ce9b3f, TypeS_3op>, Enc_412ff0 {
3294 let Inst{7-5} = 0b110;
3295 let Inst{13-13} = 0b0;
3296 let Inst{31-21} = 0b11001011001;
3297 let prefersSlot3 = 1;
3298 let Constraints = "$Rxx32 = $Rxx32in";
3299 }
3300 def A5_ACS : HInst<
3301 (outs DoubleRegs:$Rxx32, PredRegs:$Pe4),
3302 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3303 "$Rxx32,$Pe4 = vacsh($Rss32,$Rtt32)",
3304 tc_caaebcba, TypeM>, Enc_831a7d, Requires<[HasV55]> {
3305 let Inst{7-7} = 0b0;
3306 let Inst{13-13} = 0b0;
3307 let Inst{31-21} = 0b11101010101;
3308 let isPredicateLate = 1;
3309 let prefersSlot3 = 1;
3310 let Defs = [USR_OVF];
3311 let Constraints = "$Rxx32 = $Rxx32in";
3312 }
3313 def A5_vaddhubs : HInst<
3314 (outs IntRegs:$Rd32),
3315 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3316 "$Rd32 = vaddhub($Rss32,$Rtt32):sat",
3317 tc_2b6f77c6, TypeS_3op>, Enc_d2216a, Requires<[HasV5]> {
3318 let Inst{7-5} = 0b001;
3319 let Inst{13-13} = 0b0;
3320 let Inst{31-21} = 0b11000001010;
3321 let hasNewValue = 1;
3322 let opNewValue = 0;
3323 let prefersSlot3 = 1;
3324 let Defs = [USR_OVF];
3325 }
3326 def A6_vcmpbeq_notany : HInst<
3327 (outs PredRegs:$Pd4),
3328 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3329 "$Pd4 = !any8(vcmpb.eq($Rss32,$Rtt32))",
3330 tc_55050d58, TypeALU64>, Enc_fcf7a7, Requires<[HasV65]> {
3331 let Inst{7-2} = 0b001000;
3332 let Inst{13-13} = 0b1;
3333 let Inst{31-21} = 0b11010010000;
3334 }
3335 def A6_vminub_RdP : HInst<
3336 (outs DoubleRegs:$Rdd32, PredRegs:$Pe4),
3337 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
3338 "$Rdd32,$Pe4 = vminub($Rtt32,$Rss32)",
3339 tc_ef84f62f, TypeM>, Enc_d2c7f1, Requires<[HasV62]> {
3340 let Inst{7-7} = 0b0;
3341 let Inst{13-13} = 0b0;
3342 let Inst{31-21} = 0b11101010111;
3343 let isPredicateLate = 1;
3344 let prefersSlot3 = 1;
3345 }
3346 def C2_all8 : HInst<
3347 (outs PredRegs:$Pd4),
3348 (ins PredRegs:$Ps4),
3349 "$Pd4 = all8($Ps4)",
3350 tc_f2704b9a, TypeCR>, Enc_65d691 {
3351 let Inst{13-2} = 0b000000000000;
3352 let Inst{31-18} = 0b01101011101000;
3353 }
3354 def C2_and : HInst<
3355 (outs PredRegs:$Pd4),
3356 (ins PredRegs:$Pt4, PredRegs:$Ps4),
3357 "$Pd4 = and($Pt4,$Ps4)",
3358 tc_53bc8a6a, TypeCR>, Enc_454a26 {
3359 let Inst{7-2} = 0b000000;
3360 let Inst{13-10} = 0b0000;
3361 let Inst{31-18} = 0b01101011000000;
3362 }
3363 def C2_andn : HInst<
3364 (outs PredRegs:$Pd4),
3365 (ins PredRegs:$Pt4, PredRegs:$Ps4),
3366 "$Pd4 = and($Pt4,!$Ps4)",
3367 tc_53bc8a6a, TypeCR>, Enc_454a26 {
3368 let Inst{7-2} = 0b000000;
3369 let Inst{13-10} = 0b0000;
3370 let Inst{31-18} = 0b01101011011000;
3371 }
3372 def C2_any8 : HInst<
3373 (outs PredRegs:$Pd4),
3374 (ins PredRegs:$Ps4),
3375 "$Pd4 = any8($Ps4)",
3376 tc_f2704b9a, TypeCR>, Enc_65d691 {
3377 let Inst{13-2} = 0b000000000000;
3378 let Inst{31-18} = 0b01101011100000;
3379 }
3380 def C2_bitsclr : HInst<
3381 (outs PredRegs:$Pd4),
3382 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3383 "$Pd4 = bitsclr($Rs32,$Rt32)",
3384 tc_1e856f58, TypeS_3op>, Enc_c2b48e {
3385 let Inst{7-2} = 0b000000;
3386 let Inst{13-13} = 0b0;
3387 let Inst{31-21} = 0b11000111100;
3388 }
3389 def C2_bitsclri : HInst<
3390 (outs PredRegs:$Pd4),
3391 (ins IntRegs:$Rs32, u6_0Imm:$Ii),
3392 "$Pd4 = bitsclr($Rs32,#$Ii)",
3393 tc_7a830544, TypeS_2op>, Enc_5d6c34 {
3394 let Inst{7-2} = 0b000000;
3395 let Inst{31-21} = 0b10000101100;
3396 }
3397 def C2_bitsset : HInst<
3398 (outs PredRegs:$Pd4),
3399 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3400 "$Pd4 = bitsset($Rs32,$Rt32)",
3401 tc_1e856f58, TypeS_3op>, Enc_c2b48e {
3402 let Inst{7-2} = 0b000000;
3403 let Inst{13-13} = 0b0;
3404 let Inst{31-21} = 0b11000111010;
3405 }
3406 def C2_ccombinewf : HInst<
3407 (outs DoubleRegs:$Rdd32),
3408 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
3409 "if (!$Pu4) $Rdd32 = combine($Rs32,$Rt32)",
3410 tc_d6bf0472, TypeALU32_3op>, Enc_cb4b4e, PredNewRel {
3411 let Inst{7-7} = 0b1;
3412 let Inst{13-13} = 0b0;
3413 let Inst{31-21} = 0b11111101000;
3414 let isPredicated = 1;
3415 let isPredicatedFalse = 1;
3416 let BaseOpcode = "A2_combinew";
3417 }
3418 def C2_ccombinewnewf : HInst<
3419 (outs DoubleRegs:$Rdd32),
3420 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
3421 "if (!$Pu4.new) $Rdd32 = combine($Rs32,$Rt32)",
3422 tc_2b2f4060, TypeALU32_3op>, Enc_cb4b4e, PredNewRel {
3423 let Inst{7-7} = 0b1;
3424 let Inst{13-13} = 0b1;
3425 let Inst{31-21} = 0b11111101000;
3426 let isPredicated = 1;
3427 let isPredicatedFalse = 1;
3428 let isPredicatedNew = 1;
3429 let BaseOpcode = "A2_combinew";
3430 }
3431 def C2_ccombinewnewt : HInst<
3432 (outs DoubleRegs:$Rdd32),
3433 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
3434 "if ($Pu4.new) $Rdd32 = combine($Rs32,$Rt32)",
3435 tc_2b2f4060, TypeALU32_3op>, Enc_cb4b4e, PredNewRel {
3436 let Inst{7-7} = 0b0;
3437 let Inst{13-13} = 0b1;
3438 let Inst{31-21} = 0b11111101000;
3439 let isPredicated = 1;
3440 let isPredicatedNew = 1;
3441 let BaseOpcode = "A2_combinew";
3442 }
3443 def C2_ccombinewt : HInst<
3444 (outs DoubleRegs:$Rdd32),
3445 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
3446 "if ($Pu4) $Rdd32 = combine($Rs32,$Rt32)",
3447 tc_d6bf0472, TypeALU32_3op>, Enc_cb4b4e, PredNewRel {
3448 let Inst{7-7} = 0b0;
3449 let Inst{13-13} = 0b0;
3450 let Inst{31-21} = 0b11111101000;
3451 let isPredicated = 1;
3452 let BaseOpcode = "A2_combinew";
3453 }
3454 def C2_cmoveif : HInst<
3455 (outs IntRegs:$Rd32),
3456 (ins PredRegs:$Pu4, s32_0Imm:$Ii),
3457 "if (!$Pu4) $Rd32 = #$Ii",
3458 tc_b9488031, TypeALU32_2op>, Enc_cda00a, PredNewRel, ImmRegRel {
3459 let Inst{13-13} = 0b0;
3460 let Inst{20-20} = 0b0;
3461 let Inst{31-23} = 0b011111101;
3462 let isPredicated = 1;
3463 let isPredicatedFalse = 1;
3464 let hasNewValue = 1;
3465 let opNewValue = 0;
3466 let CextOpcode = "A2_tfr";
3467 let InputType = "imm";
3468 let BaseOpcode = "A2_tfrsi";
3469 let isMoveImm = 1;
3470 let isExtendable = 1;
3471 let opExtendable = 2;
3472 let isExtentSigned = 1;
3473 let opExtentBits = 12;
3474 let opExtentAlign = 0;
3475 }
3476 def C2_cmoveit : HInst<
3477 (outs IntRegs:$Rd32),
3478 (ins PredRegs:$Pu4, s32_0Imm:$Ii),
3479 "if ($Pu4) $Rd32 = #$Ii",
3480 tc_b9488031, TypeALU32_2op>, Enc_cda00a, PredNewRel, ImmRegRel {
3481 let Inst{13-13} = 0b0;
3482 let Inst{20-20} = 0b0;
3483 let Inst{31-23} = 0b011111100;
3484 let isPredicated = 1;
3485 let hasNewValue = 1;
3486 let opNewValue = 0;
3487 let CextOpcode = "A2_tfr";
3488 let InputType = "imm";
3489 let BaseOpcode = "A2_tfrsi";
3490 let isMoveImm = 1;
3491 let isExtendable = 1;
3492 let opExtendable = 2;
3493 let isExtentSigned = 1;
3494 let opExtentBits = 12;
3495 let opExtentAlign = 0;
3496 }
3497 def C2_cmovenewif : HInst<
3498 (outs IntRegs:$Rd32),
3499 (ins PredRegs:$Pu4, s32_0Imm:$Ii),
3500 "if (!$Pu4.new) $Rd32 = #$Ii",
3501 tc_5f6847a1, TypeALU32_2op>, Enc_cda00a, PredNewRel, ImmRegRel {
3502 let Inst{13-13} = 0b1;
3503 let Inst{20-20} = 0b0;
3504 let Inst{31-23} = 0b011111101;
3505 let isPredicated = 1;
3506 let isPredicatedFalse = 1;
3507 let hasNewValue = 1;
3508 let opNewValue = 0;
3509 let isPredicatedNew = 1;
3510 let CextOpcode = "A2_tfr";
3511 let InputType = "imm";
3512 let BaseOpcode = "A2_tfrsi";
3513 let isMoveImm = 1;
3514 let isExtendable = 1;
3515 let opExtendable = 2;
3516 let isExtentSigned = 1;
3517 let opExtentBits = 12;
3518 let opExtentAlign = 0;
3519 }
3520 def C2_cmovenewit : HInst<
3521 (outs IntRegs:$Rd32),
3522 (ins PredRegs:$Pu4, s32_0Imm:$Ii),
3523 "if ($Pu4.new) $Rd32 = #$Ii",
3524 tc_5f6847a1, TypeALU32_2op>, Enc_cda00a, PredNewRel, ImmRegRel {
3525 let Inst{13-13} = 0b1;
3526 let Inst{20-20} = 0b0;
3527 let Inst{31-23} = 0b011111100;
3528 let isPredicated = 1;
3529 let hasNewValue = 1;
3530 let opNewValue = 0;
3531 let isPredicatedNew = 1;
3532 let CextOpcode = "A2_tfr";
3533 let InputType = "imm";
3534 let BaseOpcode = "A2_tfrsi";
3535 let isMoveImm = 1;
3536 let isExtendable = 1;
3537 let opExtendable = 2;
3538 let isExtentSigned = 1;
3539 let opExtentBits = 12;
3540 let opExtentAlign = 0;
3541 }
3542 def C2_cmpeq : HInst<
3543 (outs PredRegs:$Pd4),
3544 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3545 "$Pd4 = cmp.eq($Rs32,$Rt32)",
3546 tc_c6aa82f7, TypeALU32_3op>, Enc_c2b48e, ImmRegRel {
3547 let Inst{7-2} = 0b000000;
3548 let Inst{13-13} = 0b0;
3549 let Inst{31-21} = 0b11110010000;
3550 let CextOpcode = "C2_cmpeq";
3551 let InputType = "reg";
3552 let isCommutable = 1;
3553 let isCompare = 1;
3554 }
3555 def C2_cmpeqi : HInst<
3556 (outs PredRegs:$Pd4),
3557 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
3558 "$Pd4 = cmp.eq($Rs32,#$Ii)",
3559 tc_6ebb4a12, TypeALU32_2op>, Enc_bd0b33, ImmRegRel {
3560 let Inst{4-2} = 0b000;
3561 let Inst{31-22} = 0b0111010100;
3562 let CextOpcode = "C2_cmpeq";
3563 let InputType = "imm";
3564 let isCompare = 1;
3565 let isExtendable = 1;
3566 let opExtendable = 2;
3567 let isExtentSigned = 1;
3568 let opExtentBits = 10;
3569 let opExtentAlign = 0;
3570 }
3571 def C2_cmpeqp : HInst<
3572 (outs PredRegs:$Pd4),
3573 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3574 "$Pd4 = cmp.eq($Rss32,$Rtt32)",
3575 tc_1e856f58, TypeALU64>, Enc_fcf7a7 {
3576 let Inst{7-2} = 0b000000;
3577 let Inst{13-13} = 0b0;
3578 let Inst{31-21} = 0b11010010100;
3579 let isCommutable = 1;
3580 let isCompare = 1;
3581 }
3582 def C2_cmpgei : HInst<
3583 (outs PredRegs:$Pd4),
3584 (ins IntRegs:$Rs32, s8_0Imm:$Ii),
3585 "$Pd4 = cmp.ge($Rs32,#$Ii)",
3586 tc_6ebb4a12, TypeALU32_2op> {
3587 let isCompare = 1;
3588 let isPseudo = 1;
3589 }
3590 def C2_cmpgeui : HInst<
3591 (outs PredRegs:$Pd4),
3592 (ins IntRegs:$Rs32, u8_0Imm:$Ii),
3593 "$Pd4 = cmp.geu($Rs32,#$Ii)",
3594 tc_6ebb4a12, TypeALU32_2op> {
3595 let isCompare = 1;
3596 let isPseudo = 1;
3597 }
3598 def C2_cmpgt : HInst<
3599 (outs PredRegs:$Pd4),
3600 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3601 "$Pd4 = cmp.gt($Rs32,$Rt32)",
3602 tc_c6aa82f7, TypeALU32_3op>, Enc_c2b48e, ImmRegRel {
3603 let Inst{7-2} = 0b000000;
3604 let Inst{13-13} = 0b0;
3605 let Inst{31-21} = 0b11110010010;
3606 let CextOpcode = "C2_cmpgt";
3607 let InputType = "reg";
3608 let isCompare = 1;
3609 }
3610 def C2_cmpgti : HInst<
3611 (outs PredRegs:$Pd4),
3612 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
3613 "$Pd4 = cmp.gt($Rs32,#$Ii)",
3614 tc_6ebb4a12, TypeALU32_2op>, Enc_bd0b33, ImmRegRel {
3615 let Inst{4-2} = 0b000;
3616 let Inst{31-22} = 0b0111010101;
3617 let CextOpcode = "C2_cmpgt";
3618 let InputType = "imm";
3619 let isCompare = 1;
3620 let isExtendable = 1;
3621 let opExtendable = 2;
3622 let isExtentSigned = 1;
3623 let opExtentBits = 10;
3624 let opExtentAlign = 0;
3625 }
3626 def C2_cmpgtp : HInst<
3627 (outs PredRegs:$Pd4),
3628 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3629 "$Pd4 = cmp.gt($Rss32,$Rtt32)",
3630 tc_1e856f58, TypeALU64>, Enc_fcf7a7 {
3631 let Inst{7-2} = 0b010000;
3632 let Inst{13-13} = 0b0;
3633 let Inst{31-21} = 0b11010010100;
3634 let isCompare = 1;
3635 }
3636 def C2_cmpgtu : HInst<
3637 (outs PredRegs:$Pd4),
3638 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3639 "$Pd4 = cmp.gtu($Rs32,$Rt32)",
3640 tc_c6aa82f7, TypeALU32_3op>, Enc_c2b48e, ImmRegRel {
3641 let Inst{7-2} = 0b000000;
3642 let Inst{13-13} = 0b0;
3643 let Inst{31-21} = 0b11110010011;
3644 let CextOpcode = "C2_cmpgtu";
3645 let InputType = "reg";
3646 let isCompare = 1;
3647 }
3648 def C2_cmpgtui : HInst<
3649 (outs PredRegs:$Pd4),
3650 (ins IntRegs:$Rs32, u32_0Imm:$Ii),
3651 "$Pd4 = cmp.gtu($Rs32,#$Ii)",
3652 tc_6ebb4a12, TypeALU32_2op>, Enc_c0cdde, ImmRegRel {
3653 let Inst{4-2} = 0b000;
3654 let Inst{31-21} = 0b01110101100;
3655 let CextOpcode = "C2_cmpgtu";
3656 let InputType = "imm";
3657 let isCompare = 1;
3658 let isExtendable = 1;
3659 let opExtendable = 2;
3660 let isExtentSigned = 0;
3661 let opExtentBits = 9;
3662 let opExtentAlign = 0;
3663 }
3664 def C2_cmpgtup : HInst<
3665 (outs PredRegs:$Pd4),
3666 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3667 "$Pd4 = cmp.gtu($Rss32,$Rtt32)",
3668 tc_1e856f58, TypeALU64>, Enc_fcf7a7 {
3669 let Inst{7-2} = 0b100000;
3670 let Inst{13-13} = 0b0;
3671 let Inst{31-21} = 0b11010010100;
3672 let isCompare = 1;
3673 }
3674 def C2_cmplt : HInst<
3675 (outs PredRegs:$Pd4),
3676 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3677 "$Pd4 = cmp.lt($Rs32,$Rt32)",
3678 tc_6ebb4a12, TypeALU32_3op> {
3679 let isCompare = 1;
3680 let isPseudo = 1;
3681 let isCodeGenOnly = 1;
3682 }
3683 def C2_cmpltu : HInst<
3684 (outs PredRegs:$Pd4),
3685 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3686 "$Pd4 = cmp.ltu($Rs32,$Rt32)",
3687 tc_6ebb4a12, TypeALU32_3op> {
3688 let isCompare = 1;
3689 let isPseudo = 1;
3690 let isCodeGenOnly = 1;
3691 }
3692 def C2_mask : HInst<
3693 (outs DoubleRegs:$Rdd32),
3694 (ins PredRegs:$Pt4),
3695 "$Rdd32 = mask($Pt4)",
3696 tc_cde8b071, TypeS_2op>, Enc_78e566 {
3697 let Inst{7-5} = 0b000;
3698 let Inst{13-10} = 0b0000;
3699 let Inst{31-16} = 0b1000011000000000;
3700 }
3701 def C2_mux : HInst<
3702 (outs IntRegs:$Rd32),
3703 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
3704 "$Rd32 = mux($Pu4,$Rs32,$Rt32)",
3705 tc_d6bf0472, TypeALU32_3op>, Enc_ea4c54 {
3706 let Inst{7-7} = 0b0;
3707 let Inst{13-13} = 0b0;
3708 let Inst{31-21} = 0b11110100000;
3709 let hasNewValue = 1;
3710 let opNewValue = 0;
3711 let InputType = "reg";
3712 }
3713 def C2_muxii : HInst<
3714 (outs IntRegs:$Rd32),
3715 (ins PredRegs:$Pu4, s32_0Imm:$Ii, s8_0Imm:$II),
3716 "$Rd32 = mux($Pu4,#$Ii,#$II)",
3717 tc_d6bf0472, TypeALU32_2op>, Enc_830e5d {
3718 let Inst{31-25} = 0b0111101;
3719 let hasNewValue = 1;
3720 let opNewValue = 0;
3721 let isExtendable = 1;
3722 let opExtendable = 2;
3723 let isExtentSigned = 1;
3724 let opExtentBits = 8;
3725 let opExtentAlign = 0;
3726 }
3727 def C2_muxir : HInst<
3728 (outs IntRegs:$Rd32),
3729 (ins PredRegs:$Pu4, IntRegs:$Rs32, s32_0Imm:$Ii),
3730 "$Rd32 = mux($Pu4,$Rs32,#$Ii)",
3731 tc_d6bf0472, TypeALU32_2op>, Enc_e38e1f {
3732 let Inst{13-13} = 0b0;
3733 let Inst{31-23} = 0b011100110;
3734 let hasNewValue = 1;
3735 let opNewValue = 0;
3736 let InputType = "imm";
3737 let isExtendable = 1;
3738 let opExtendable = 3;
3739 let isExtentSigned = 1;
3740 let opExtentBits = 8;
3741 let opExtentAlign = 0;
3742 }
3743 def C2_muxri : HInst<
3744 (outs IntRegs:$Rd32),
3745 (ins PredRegs:$Pu4, s32_0Imm:$Ii, IntRegs:$Rs32),
3746 "$Rd32 = mux($Pu4,#$Ii,$Rs32)",
3747 tc_d6bf0472, TypeALU32_2op>, Enc_e38e1f {
3748 let Inst{13-13} = 0b0;
3749 let Inst{31-23} = 0b011100111;
3750 let hasNewValue = 1;
3751 let opNewValue = 0;
3752 let InputType = "imm";
3753 let isExtendable = 1;
3754 let opExtendable = 2;
3755 let isExtentSigned = 1;
3756 let opExtentBits = 8;
3757 let opExtentAlign = 0;
3758 }
3759 def C2_not : HInst<
3760 (outs PredRegs:$Pd4),
3761 (ins PredRegs:$Ps4),
3762 "$Pd4 = not($Ps4)",
3763 tc_f2704b9a, TypeCR>, Enc_65d691 {
3764 let Inst{13-2} = 0b000000000000;
3765 let Inst{31-18} = 0b01101011110000;
3766 }
3767 def C2_or : HInst<
3768 (outs PredRegs:$Pd4),
3769 (ins PredRegs:$Pt4, PredRegs:$Ps4),
3770 "$Pd4 = or($Pt4,$Ps4)",
3771 tc_53bc8a6a, TypeCR>, Enc_454a26 {
3772 let Inst{7-2} = 0b000000;
3773 let Inst{13-10} = 0b0000;
3774 let Inst{31-18} = 0b01101011001000;
3775 }
3776 def C2_orn : HInst<
3777 (outs PredRegs:$Pd4),
3778 (ins PredRegs:$Pt4, PredRegs:$Ps4),
3779 "$Pd4 = or($Pt4,!$Ps4)",
3780 tc_53bc8a6a, TypeCR>, Enc_454a26 {
3781 let Inst{7-2} = 0b000000;
3782 let Inst{13-10} = 0b0000;
3783 let Inst{31-18} = 0b01101011111000;
3784 }
3785 def C2_pxfer_map : HInst<
3786 (outs PredRegs:$Pd4),
3787 (ins PredRegs:$Ps4),
3788 "$Pd4 = $Ps4",
3789 tc_53bc8a6a, TypeMAPPING> {
3790 let isPseudo = 1;
3791 let isCodeGenOnly = 1;
3792 }
3793 def C2_tfrpr : HInst<
3794 (outs IntRegs:$Rd32),
3795 (ins PredRegs:$Ps4),
3796 "$Rd32 = $Ps4",
3797 tc_cde8b071, TypeS_2op>, Enc_f5e933 {
3798 let Inst{13-5} = 0b000000000;
3799 let Inst{31-18} = 0b10001001010000;
3800 let hasNewValue = 1;
3801 let opNewValue = 0;
3802 }
3803 def C2_tfrrp : HInst<
3804 (outs PredRegs:$Pd4),
3805 (ins IntRegs:$Rs32),
3806 "$Pd4 = $Rs32",
3807 tc_351fed2d, TypeS_2op>, Enc_48b75f {
3808 let Inst{13-2} = 0b000000000000;
3809 let Inst{31-21} = 0b10000101010;
3810 }
3811 def C2_vitpack : HInst<
3812 (outs IntRegs:$Rd32),
3813 (ins PredRegs:$Ps4, PredRegs:$Pt4),
3814 "$Rd32 = vitpack($Ps4,$Pt4)",
3815 tc_1b9c9ee5, TypeS_2op>, Enc_527412 {
3816 let Inst{7-5} = 0b000;
3817 let Inst{13-10} = 0b0000;
3818 let Inst{31-18} = 0b10001001000000;
3819 let hasNewValue = 1;
3820 let opNewValue = 0;
3821 let prefersSlot3 = 1;
3822 }
3823 def C2_vmux : HInst<
3824 (outs DoubleRegs:$Rdd32),
3825 (ins PredRegs:$Pu4, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3826 "$Rdd32 = vmux($Pu4,$Rss32,$Rtt32)",
3827 tc_f8eeed7a, TypeALU64>, Enc_329361 {
3828 let Inst{7-7} = 0b0;
3829 let Inst{13-13} = 0b0;
3830 let Inst{31-21} = 0b11010001000;
3831 }
3832 def C2_xor : HInst<
3833 (outs PredRegs:$Pd4),
3834 (ins PredRegs:$Ps4, PredRegs:$Pt4),
3835 "$Pd4 = xor($Ps4,$Pt4)",
3836 tc_53bc8a6a, TypeCR>, Enc_284ebb {
3837 let Inst{7-2} = 0b000000;
3838 let Inst{13-10} = 0b0000;
3839 let Inst{31-18} = 0b01101011010000;
3840 }
3841 def C4_addipc : HInst<
3842 (outs IntRegs:$Rd32),
3843 (ins u32_0Imm:$Ii),
3844 "$Rd32 = add(pc,#$Ii)",
3845 tc_b9c4623f, TypeCR>, Enc_607661 {
3846 let Inst{6-5} = 0b00;
3847 let Inst{13-13} = 0b0;
3848 let Inst{31-16} = 0b0110101001001001;
3849 let hasNewValue = 1;
3850 let opNewValue = 0;
3851 let isExtendable = 1;
3852 let opExtendable = 1;
3853 let isExtentSigned = 0;
3854 let opExtentBits = 6;
3855 let opExtentAlign = 0;
3856 }
3857 def C4_and_and : HInst<
3858 (outs PredRegs:$Pd4),
3859 (ins PredRegs:$Ps4, PredRegs:$Pt4, PredRegs:$Pu4),
3860 "$Pd4 = and($Ps4,and($Pt4,$Pu4))",
3861 tc_481e5e5c, TypeCR>, Enc_9ac432 {
3862 let Inst{5-2} = 0b0000;
3863 let Inst{13-10} = 0b0000;
3864 let Inst{31-18} = 0b01101011000100;
3865 }
3866 def C4_and_andn : HInst<
3867 (outs PredRegs:$Pd4),
3868 (ins PredRegs:$Ps4, PredRegs:$Pt4, PredRegs:$Pu4),
3869 "$Pd4 = and($Ps4,and($Pt4,!$Pu4))",
3870 tc_481e5e5c, TypeCR>, Enc_9ac432 {
3871 let Inst{5-2} = 0b0000;
3872 let Inst{13-10} = 0b0000;
3873 let Inst{31-18} = 0b01101011100100;
3874 }
3875 def C4_and_or : HInst<
3876 (outs PredRegs:$Pd4),
3877 (ins PredRegs:$Ps4, PredRegs:$Pt4, PredRegs:$Pu4),
3878 "$Pd4 = and($Ps4,or($Pt4,$Pu4))",
3879 tc_481e5e5c, TypeCR>, Enc_9ac432 {
3880 let Inst{5-2} = 0b0000;
3881 let Inst{13-10} = 0b0000;
3882 let Inst{31-18} = 0b01101011001100;
3883 }
3884 def C4_and_orn : HInst<
3885 (outs PredRegs:$Pd4),
3886 (ins PredRegs:$Ps4, PredRegs:$Pt4, PredRegs:$Pu4),
3887 "$Pd4 = and($Ps4,or($Pt4,!$Pu4))",
3888 tc_481e5e5c, TypeCR>, Enc_9ac432 {
3889 let Inst{5-2} = 0b0000;
3890 let Inst{13-10} = 0b0000;
3891 let Inst{31-18} = 0b01101011101100;
3892 }
3893 def C4_cmplte : HInst<
3894 (outs PredRegs:$Pd4),
3895 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3896 "$Pd4 = !cmp.gt($Rs32,$Rt32)",
3897 tc_c6aa82f7, TypeALU32_3op>, Enc_c2b48e, ImmRegRel {
3898 let Inst{7-2} = 0b000100;
3899 let Inst{13-13} = 0b0;
3900 let Inst{31-21} = 0b11110010010;
3901 let CextOpcode = "C4_cmplte";
3902 let InputType = "reg";
3903 let isCompare = 1;
3904 }
3905 def C4_cmpltei : HInst<
3906 (outs PredRegs:$Pd4),
3907 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
3908 "$Pd4 = !cmp.gt($Rs32,#$Ii)",
3909 tc_6ebb4a12, TypeALU32_2op>, Enc_bd0b33, ImmRegRel {
3910 let Inst{4-2} = 0b100;
3911 let Inst{31-22} = 0b0111010101;
3912 let CextOpcode = "C4_cmplte";
3913 let InputType = "imm";
3914 let isCompare = 1;
3915 let isExtendable = 1;
3916 let opExtendable = 2;
3917 let isExtentSigned = 1;
3918 let opExtentBits = 10;
3919 let opExtentAlign = 0;
3920 }
3921 def C4_cmplteu : HInst<
3922 (outs PredRegs:$Pd4),
3923 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3924 "$Pd4 = !cmp.gtu($Rs32,$Rt32)",
3925 tc_c6aa82f7, TypeALU32_3op>, Enc_c2b48e, ImmRegRel {
3926 let Inst{7-2} = 0b000100;
3927 let Inst{13-13} = 0b0;
3928 let Inst{31-21} = 0b11110010011;
3929 let CextOpcode = "C4_cmplteu";
3930 let InputType = "reg";
3931 let isCompare = 1;
3932 }
3933 def C4_cmplteui : HInst<
3934 (outs PredRegs:$Pd4),
3935 (ins IntRegs:$Rs32, u32_0Imm:$Ii),
3936 "$Pd4 = !cmp.gtu($Rs32,#$Ii)",
3937 tc_6ebb4a12, TypeALU32_2op>, Enc_c0cdde, ImmRegRel {
3938 let Inst{4-2} = 0b100;
3939 let Inst{31-21} = 0b01110101100;
3940 let CextOpcode = "C4_cmplteu";
3941 let InputType = "imm";
3942 let isCompare = 1;
3943 let isExtendable = 1;
3944 let opExtendable = 2;
3945 let isExtentSigned = 0;
3946 let opExtentBits = 9;
3947 let opExtentAlign = 0;
3948 }
3949 def C4_cmpneq : HInst<
3950 (outs PredRegs:$Pd4),
3951 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3952 "$Pd4 = !cmp.eq($Rs32,$Rt32)",
3953 tc_c6aa82f7, TypeALU32_3op>, Enc_c2b48e, ImmRegRel {
3954 let Inst{7-2} = 0b000100;
3955 let Inst{13-13} = 0b0;
3956 let Inst{31-21} = 0b11110010000;
3957 let CextOpcode = "C4_cmpneq";
3958 let InputType = "reg";
3959 let isCommutable = 1;
3960 let isCompare = 1;
3961 }
3962 def C4_cmpneqi : HInst<
3963 (outs PredRegs:$Pd4),
3964 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
3965 "$Pd4 = !cmp.eq($Rs32,#$Ii)",
3966 tc_6ebb4a12, TypeALU32_2op>, Enc_bd0b33, ImmRegRel {
3967 let Inst{4-2} = 0b100;
3968 let Inst{31-22} = 0b0111010100;
3969 let CextOpcode = "C4_cmpneq";
3970 let InputType = "imm";
3971 let isCompare = 1;
3972 let isExtendable = 1;
3973 let opExtendable = 2;
3974 let isExtentSigned = 1;
3975 let opExtentBits = 10;
3976 let opExtentAlign = 0;
3977 }
3978 def C4_fastcorner9 : HInst<
3979 (outs PredRegs:$Pd4),
3980 (ins PredRegs:$Ps4, PredRegs:$Pt4),
3981 "$Pd4 = fastcorner9($Ps4,$Pt4)",
3982 tc_53bc8a6a, TypeCR>, Enc_284ebb {
3983 let Inst{7-2} = 0b100100;
3984 let Inst{13-10} = 0b1000;
3985 let Inst{31-18} = 0b01101011000000;
3986 }
3987 def C4_fastcorner9_not : HInst<
3988 (outs PredRegs:$Pd4),
3989 (ins PredRegs:$Ps4, PredRegs:$Pt4),
3990 "$Pd4 = !fastcorner9($Ps4,$Pt4)",
3991 tc_53bc8a6a, TypeCR>, Enc_284ebb {
3992 let Inst{7-2} = 0b100100;
3993 let Inst{13-10} = 0b1000;
3994 let Inst{31-18} = 0b01101011000100;
3995 }
3996 def C4_nbitsclr : HInst<
3997 (outs PredRegs:$Pd4),
3998 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3999 "$Pd4 = !bitsclr($Rs32,$Rt32)",
4000 tc_1e856f58, TypeS_3op>, Enc_c2b48e {
4001 let Inst{7-2} = 0b000000;
4002 let Inst{13-13} = 0b0;
4003 let Inst{31-21} = 0b11000111101;
4004 }
4005 def C4_nbitsclri : HInst<
4006 (outs PredRegs:$Pd4),
4007 (ins IntRegs:$Rs32, u6_0Imm:$Ii),
4008 "$Pd4 = !bitsclr($Rs32,#$Ii)",
4009 tc_7a830544, TypeS_2op>, Enc_5d6c34 {
4010 let Inst{7-2} = 0b000000;
4011 let Inst{31-21} = 0b10000101101;
4012 }
4013 def C4_nbitsset : HInst<
4014 (outs PredRegs:$Pd4),
4015 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4016 "$Pd4 = !bitsset($Rs32,$Rt32)",
4017 tc_1e856f58, TypeS_3op>, Enc_c2b48e {
4018 let Inst{7-2} = 0b000000;
4019 let Inst{13-13} = 0b0;
4020 let Inst{31-21} = 0b11000111011;
4021 }
4022 def C4_or_and : HInst<
4023 (outs PredRegs:$Pd4),
4024 (ins PredRegs:$Ps4, PredRegs:$Pt4, PredRegs:$Pu4),
4025 "$Pd4 = or($Ps4,and($Pt4,$Pu4))",
4026 tc_481e5e5c, TypeCR>, Enc_9ac432 {
4027 let Inst{5-2} = 0b0000;
4028 let Inst{13-10} = 0b0000;
4029 let Inst{31-18} = 0b01101011010100;
4030 }
4031 def C4_or_andn : HInst<
4032 (outs PredRegs:$Pd4),
4033 (ins PredRegs:$Ps4, PredRegs:$Pt4, PredRegs:$Pu4),
4034 "$Pd4 = or($Ps4,and($Pt4,!$Pu4))",
4035 tc_481e5e5c, TypeCR>, Enc_9ac432 {
4036 let Inst{5-2} = 0b0000;
4037 let Inst{13-10} = 0b0000;
4038 let Inst{31-18} = 0b01101011110100;
4039 }
4040 def C4_or_or : HInst<
4041 (outs PredRegs:$Pd4),
4042 (ins PredRegs:$Ps4, PredRegs:$Pt4, PredRegs:$Pu4),
4043 "$Pd4 = or($Ps4,or($Pt4,$Pu4))",
4044 tc_481e5e5c, TypeCR>, Enc_9ac432 {
4045 let Inst{5-2} = 0b0000;
4046 let Inst{13-10} = 0b0000;
4047 let Inst{31-18} = 0b01101011011100;
4048 }
4049 def C4_or_orn : HInst<
4050 (outs PredRegs:$Pd4),
4051 (ins PredRegs:$Ps4, PredRegs:$Pt4, PredRegs:$Pu4),
4052 "$Pd4 = or($Ps4,or($Pt4,!$Pu4))",
4053 tc_481e5e5c, TypeCR>, Enc_9ac432 {
4054 let Inst{5-2} = 0b0000;
4055 let Inst{13-10} = 0b0000;
4056 let Inst{31-18} = 0b01101011111100;
4057 }
4058 def F2_conv_d2df : HInst<
4059 (outs DoubleRegs:$Rdd32),
4060 (ins DoubleRegs:$Rss32),
4061 "$Rdd32 = convert_d2df($Rss32)",
4062 tc_f3eaa14b, TypeS_2op>, Enc_b9c5fb, Requires<[HasV5]> {
4063 let Inst{13-5} = 0b000000011;
4064 let Inst{31-21} = 0b10000000111;
4065 let isFP = 1;
4066 let Uses = [USR];
4067 }
4068 def F2_conv_d2sf : HInst<
4069 (outs IntRegs:$Rd32),
4070 (ins DoubleRegs:$Rss32),
4071 "$Rd32 = convert_d2sf($Rss32)",
4072 tc_f3eaa14b, TypeS_2op>, Enc_90cd8b, Requires<[HasV5]> {
4073 let Inst{13-5} = 0b000000001;
4074 let Inst{31-21} = 0b10001000010;
4075 let hasNewValue = 1;
4076 let opNewValue = 0;
4077 let isFP = 1;
4078 let Uses = [USR];
4079 }
4080 def F2_conv_df2d : HInst<
4081 (outs DoubleRegs:$Rdd32),
4082 (ins DoubleRegs:$Rss32),
4083 "$Rdd32 = convert_df2d($Rss32)",
4084 tc_f3eaa14b, TypeS_2op>, Enc_b9c5fb, Requires<[HasV5]> {
4085 let Inst{13-5} = 0b000000000;
4086 let Inst{31-21} = 0b10000000111;
4087 let isFP = 1;
4088 let Uses = [USR];
4089 }
4090 def F2_conv_df2d_chop : HInst<
4091 (outs DoubleRegs:$Rdd32),
4092 (ins DoubleRegs:$Rss32),
4093 "$Rdd32 = convert_df2d($Rss32):chop",
4094 tc_f3eaa14b, TypeS_2op>, Enc_b9c5fb, Requires<[HasV5]> {
4095 let Inst{13-5} = 0b000000110;
4096 let Inst{31-21} = 0b10000000111;
4097 let isFP = 1;
4098 let Uses = [USR];
4099 }
4100 def F2_conv_df2sf : HInst<
4101 (outs IntRegs:$Rd32),
4102 (ins DoubleRegs:$Rss32),
4103 "$Rd32 = convert_df2sf($Rss32)",
4104 tc_f3eaa14b, TypeS_2op>, Enc_90cd8b, Requires<[HasV5]> {
4105 let Inst{13-5} = 0b000000001;
4106 let Inst{31-21} = 0b10001000000;
4107 let hasNewValue = 1;
4108 let opNewValue = 0;
4109 let isFP = 1;
4110 let Uses = [USR];
4111 }
4112 def F2_conv_df2ud : HInst<
4113 (outs DoubleRegs:$Rdd32),
4114 (ins DoubleRegs:$Rss32),
4115 "$Rdd32 = convert_df2ud($Rss32)",
4116 tc_f3eaa14b, TypeS_2op>, Enc_b9c5fb, Requires<[HasV5]> {
4117 let Inst{13-5} = 0b000000001;
4118 let Inst{31-21} = 0b10000000111;
4119 let isFP = 1;
4120 let Uses = [USR];
4121 }
4122 def F2_conv_df2ud_chop : HInst<
4123 (outs DoubleRegs:$Rdd32),
4124 (ins DoubleRegs:$Rss32),
4125 "$Rdd32 = convert_df2ud($Rss32):chop",
4126 tc_f3eaa14b, TypeS_2op>, Enc_b9c5fb, Requires<[HasV5]> {
4127 let Inst{13-5} = 0b000000111;
4128 let Inst{31-21} = 0b10000000111;
4129 let isFP = 1;
4130 let Uses = [USR];
4131 }
4132 def F2_conv_df2uw : HInst<
4133 (outs IntRegs:$Rd32),
4134 (ins DoubleRegs:$Rss32),
4135 "$Rd32 = convert_df2uw($Rss32)",
4136 tc_f3eaa14b, TypeS_2op>, Enc_90cd8b, Requires<[HasV5]> {
4137 let Inst{13-5} = 0b000000001;
4138 let Inst{31-21} = 0b10001000011;
4139 let hasNewValue = 1;
4140 let opNewValue = 0;
4141 let isFP = 1;
4142 let Uses = [USR];
4143 }
4144 def F2_conv_df2uw_chop : HInst<
4145 (outs IntRegs:$Rd32),
4146 (ins DoubleRegs:$Rss32),
4147 "$Rd32 = convert_df2uw($Rss32):chop",
4148 tc_f3eaa14b, TypeS_2op>, Enc_90cd8b, Requires<[HasV5]> {
4149 let Inst{13-5} = 0b000000001;
4150 let Inst{31-21} = 0b10001000101;
4151 let hasNewValue = 1;
4152 let opNewValue = 0;
4153 let isFP = 1;
4154 let Uses = [USR];
4155 }
4156 def F2_conv_df2w : HInst<
4157 (outs IntRegs:$Rd32),
4158 (ins DoubleRegs:$Rss32),
4159 "$Rd32 = convert_df2w($Rss32)",
4160 tc_f3eaa14b, TypeS_2op>, Enc_90cd8b, Requires<[HasV5]> {
4161 let Inst{13-5} = 0b000000001;
4162 let Inst{31-21} = 0b10001000100;
4163 let hasNewValue = 1;
4164 let opNewValue = 0;
4165 let isFP = 1;
4166 let Uses = [USR];
4167 }
4168 def F2_conv_df2w_chop : HInst<
4169 (outs IntRegs:$Rd32),
4170 (ins DoubleRegs:$Rss32),
4171 "$Rd32 = convert_df2w($Rss32):chop",
4172 tc_f3eaa14b, TypeS_2op>, Enc_90cd8b, Requires<[HasV5]> {
4173 let Inst{13-5} = 0b000000001;
4174 let Inst{31-21} = 0b10001000111;
4175 let hasNewValue = 1;
4176 let opNewValue = 0;
4177 let isFP = 1;
4178 let Uses = [USR];
4179 }
4180 def F2_conv_sf2d : HInst<
4181 (outs DoubleRegs:$Rdd32),
4182 (ins IntRegs:$Rs32),
4183 "$Rdd32 = convert_sf2d($Rs32)",
4184 tc_f3eaa14b, TypeS_2op>, Enc_3a3d62, Requires<[HasV5]> {
4185 let Inst{13-5} = 0b000000100;
4186 let Inst{31-21} = 0b10000100100;
4187 let isFP = 1;
4188 let Uses = [USR];
4189 }
4190 def F2_conv_sf2d_chop : HInst<
4191 (outs DoubleRegs:$Rdd32),
4192 (ins IntRegs:$Rs32),
4193 "$Rdd32 = convert_sf2d($Rs32):chop",
4194 tc_f3eaa14b, TypeS_2op>, Enc_3a3d62, Requires<[HasV5]> {
4195 let Inst{13-5} = 0b000000110;
4196 let Inst{31-21} = 0b10000100100;
4197 let isFP = 1;
4198 let Uses = [USR];
4199 }
4200 def F2_conv_sf2df : HInst<
4201 (outs DoubleRegs:$Rdd32),
4202 (ins IntRegs:$Rs32),
4203 "$Rdd32 = convert_sf2df($Rs32)",
4204 tc_f3eaa14b, TypeS_2op>, Enc_3a3d62, Requires<[HasV5]> {
4205 let Inst{13-5} = 0b000000000;
4206 let Inst{31-21} = 0b10000100100;
4207 let isFP = 1;
4208 let Uses = [USR];
4209 }
4210 def F2_conv_sf2ud : HInst<
4211 (outs DoubleRegs:$Rdd32),
4212 (ins IntRegs:$Rs32),
4213 "$Rdd32 = convert_sf2ud($Rs32)",
4214 tc_f3eaa14b, TypeS_2op>, Enc_3a3d62, Requires<[HasV5]> {
4215 let Inst{13-5} = 0b000000011;
4216 let Inst{31-21} = 0b10000100100;
4217 let isFP = 1;
4218 let Uses = [USR];
4219 }
4220 def F2_conv_sf2ud_chop : HInst<
4221 (outs DoubleRegs:$Rdd32),
4222 (ins IntRegs:$Rs32),
4223 "$Rdd32 = convert_sf2ud($Rs32):chop",
4224 tc_f3eaa14b, TypeS_2op>, Enc_3a3d62, Requires<[HasV5]> {
4225 let Inst{13-5} = 0b000000101;
4226 let Inst{31-21} = 0b10000100100;
4227 let isFP = 1;
4228 let Uses = [USR];
4229 }
4230 def F2_conv_sf2uw : HInst<
4231 (outs IntRegs:$Rd32),
4232 (ins IntRegs:$Rs32),
4233 "$Rd32 = convert_sf2uw($Rs32)",
4234 tc_f3eaa14b, TypeS_2op>, Enc_5e2823, Requires<[HasV5]> {
4235 let Inst{13-5} = 0b000000000;
4236 let Inst{31-21} = 0b10001011011;
4237 let hasNewValue = 1;
4238 let opNewValue = 0;
4239 let isFP = 1;
4240 let Uses = [USR];
4241 }
4242 def F2_conv_sf2uw_chop : HInst<
4243 (outs IntRegs:$Rd32),
4244 (ins IntRegs:$Rs32),
4245 "$Rd32 = convert_sf2uw($Rs32):chop",
4246 tc_f3eaa14b, TypeS_2op>, Enc_5e2823, Requires<[HasV5]> {
4247 let Inst{13-5} = 0b000000001;
4248 let Inst{31-21} = 0b10001011011;
4249 let hasNewValue = 1;
4250 let opNewValue = 0;
4251 let isFP = 1;
4252 let Uses = [USR];
4253 }
4254 def F2_conv_sf2w : HInst<
4255 (outs IntRegs:$Rd32),
4256 (ins IntRegs:$Rs32),
4257 "$Rd32 = convert_sf2w($Rs32)",
4258 tc_f3eaa14b, TypeS_2op>, Enc_5e2823, Requires<[HasV5]> {
4259 let Inst{13-5} = 0b000000000;
4260 let Inst{31-21} = 0b10001011100;
4261 let hasNewValue = 1;
4262 let opNewValue = 0;
4263 let isFP = 1;
4264 let Uses = [USR];
4265 }
4266 def F2_conv_sf2w_chop : HInst<
4267 (outs IntRegs:$Rd32),
4268 (ins IntRegs:$Rs32),
4269 "$Rd32 = convert_sf2w($Rs32):chop",
4270 tc_f3eaa14b, TypeS_2op>, Enc_5e2823, Requires<[HasV5]> {
4271 let Inst{13-5} = 0b000000001;
4272 let Inst{31-21} = 0b10001011100;
4273 let hasNewValue = 1;
4274 let opNewValue = 0;
4275 let isFP = 1;
4276 let Uses = [USR];
4277 }
4278 def F2_conv_ud2df : HInst<
4279 (outs DoubleRegs:$Rdd32),
4280 (ins DoubleRegs:$Rss32),
4281 "$Rdd32 = convert_ud2df($Rss32)",
4282 tc_f3eaa14b, TypeS_2op>, Enc_b9c5fb, Requires<[HasV5]> {
4283 let Inst{13-5} = 0b000000010;
4284 let Inst{31-21} = 0b10000000111;
4285 let isFP = 1;
4286 let Uses = [USR];
4287 }
4288 def F2_conv_ud2sf : HInst<
4289 (outs IntRegs:$Rd32),
4290 (ins DoubleRegs:$Rss32),
4291 "$Rd32 = convert_ud2sf($Rss32)",
4292 tc_f3eaa14b, TypeS_2op>, Enc_90cd8b, Requires<[HasV5]> {
4293 let Inst{13-5} = 0b000000001;
4294 let Inst{31-21} = 0b10001000001;
4295 let hasNewValue = 1;
4296 let opNewValue = 0;
4297 let isFP = 1;
4298 let Uses = [USR];
4299 }
4300 def F2_conv_uw2df : HInst<
4301 (outs DoubleRegs:$Rdd32),
4302 (ins IntRegs:$Rs32),
4303 "$Rdd32 = convert_uw2df($Rs32)",
4304 tc_f3eaa14b, TypeS_2op>, Enc_3a3d62, Requires<[HasV5]> {
4305 let Inst{13-5} = 0b000000001;
4306 let Inst{31-21} = 0b10000100100;
4307 let isFP = 1;
4308 let Uses = [USR];
4309 }
4310 def F2_conv_uw2sf : HInst<
4311 (outs IntRegs:$Rd32),
4312 (ins IntRegs:$Rs32),
4313 "$Rd32 = convert_uw2sf($Rs32)",
4314 tc_f3eaa14b, TypeS_2op>, Enc_5e2823, Requires<[HasV5]> {
4315 let Inst{13-5} = 0b000000000;
4316 let Inst{31-21} = 0b10001011001;
4317 let hasNewValue = 1;
4318 let opNewValue = 0;
4319 let isFP = 1;
4320 let Uses = [USR];
4321 }
4322 def F2_conv_w2df : HInst<
4323 (outs DoubleRegs:$Rdd32),
4324 (ins IntRegs:$Rs32),
4325 "$Rdd32 = convert_w2df($Rs32)",
4326 tc_f3eaa14b, TypeS_2op>, Enc_3a3d62, Requires<[HasV5]> {
4327 let Inst{13-5} = 0b000000010;
4328 let Inst{31-21} = 0b10000100100;
4329 let isFP = 1;
4330 let Uses = [USR];
4331 }
4332 def F2_conv_w2sf : HInst<
4333 (outs IntRegs:$Rd32),
4334 (ins IntRegs:$Rs32),
4335 "$Rd32 = convert_w2sf($Rs32)",
4336 tc_f3eaa14b, TypeS_2op>, Enc_5e2823, Requires<[HasV5]> {
4337 let Inst{13-5} = 0b000000000;
4338 let Inst{31-21} = 0b10001011010;
4339 let hasNewValue = 1;
4340 let opNewValue = 0;
4341 let isFP = 1;
4342 let Uses = [USR];
4343 }
4344 def F2_dfclass : HInst<
4345 (outs PredRegs:$Pd4),
4346 (ins DoubleRegs:$Rss32, u5_0Imm:$Ii),
4347 "$Pd4 = dfclass($Rss32,#$Ii)",
4348 tc_7a830544, TypeALU64>, Enc_1f19b5, Requires<[HasV5]> {
4349 let Inst{4-2} = 0b100;
4350 let Inst{13-10} = 0b0000;
4351 let Inst{31-21} = 0b11011100100;
4352 let isFP = 1;
4353 let Uses = [USR];
4354 }
4355 def F2_dfcmpeq : HInst<
4356 (outs PredRegs:$Pd4),
4357 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
4358 "$Pd4 = dfcmp.eq($Rss32,$Rtt32)",
4359 tc_1e856f58, TypeALU64>, Enc_fcf7a7, Requires<[HasV5]> {
4360 let Inst{7-2} = 0b000000;
4361 let Inst{13-13} = 0b0;
4362 let Inst{31-21} = 0b11010010111;
4363 let isFP = 1;
4364 let Uses = [USR];
4365 let isCompare = 1;
4366 }
4367 def F2_dfcmpge : HInst<
4368 (outs PredRegs:$Pd4),
4369 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
4370 "$Pd4 = dfcmp.ge($Rss32,$Rtt32)",
4371 tc_1e856f58, TypeALU64>, Enc_fcf7a7, Requires<[HasV5]> {
4372 let Inst{7-2} = 0b010000;
4373 let Inst{13-13} = 0b0;
4374 let Inst{31-21} = 0b11010010111;
4375 let isFP = 1;
4376 let Uses = [USR];
4377 let isCompare = 1;
4378 }
4379 def F2_dfcmpgt : HInst<
4380 (outs PredRegs:$Pd4),
4381 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
4382 "$Pd4 = dfcmp.gt($Rss32,$Rtt32)",
4383 tc_1e856f58, TypeALU64>, Enc_fcf7a7, Requires<[HasV5]> {
4384 let Inst{7-2} = 0b001000;
4385 let Inst{13-13} = 0b0;
4386 let Inst{31-21} = 0b11010010111;
4387 let isFP = 1;
4388 let Uses = [USR];
4389 let isCompare = 1;
4390 }
4391 def F2_dfcmpuo : HInst<
4392 (outs PredRegs:$Pd4),
4393 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
4394 "$Pd4 = dfcmp.uo($Rss32,$Rtt32)",
4395 tc_1e856f58, TypeALU64>, Enc_fcf7a7, Requires<[HasV5]> {
4396 let Inst{7-2} = 0b011000;
4397 let Inst{13-13} = 0b0;
4398 let Inst{31-21} = 0b11010010111;
4399 let isFP = 1;
4400 let Uses = [USR];
4401 let isCompare = 1;
4402 }
4403 def F2_dfimm_n : HInst<
4404 (outs DoubleRegs:$Rdd32),
4405 (ins u10_0Imm:$Ii),
4406 "$Rdd32 = dfmake(#$Ii):neg",
4407 tc_234a11a5, TypeALU64>, Enc_e6c957, Requires<[HasV5]> {
4408 let Inst{20-16} = 0b00000;
4409 let Inst{31-22} = 0b1101100101;
4410 let prefersSlot3 = 1;
4411 }
4412 def F2_dfimm_p : HInst<
4413 (outs DoubleRegs:$Rdd32),
4414 (ins u10_0Imm:$Ii),
4415 "$Rdd32 = dfmake(#$Ii):pos",
4416 tc_234a11a5, TypeALU64>, Enc_e6c957, Requires<[HasV5]> {
4417 let Inst{20-16} = 0b00000;
4418 let Inst{31-22} = 0b1101100100;
4419 let prefersSlot3 = 1;
4420 }
4421 def F2_sfadd : HInst<
4422 (outs IntRegs:$Rd32),
4423 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4424 "$Rd32 = sfadd($Rs32,$Rt32)",
4425 tc_6792d5ff, TypeM>, Enc_5ab2be, Requires<[HasV5]> {
4426 let Inst{7-5} = 0b000;
4427 let Inst{13-13} = 0b0;
4428 let Inst{31-21} = 0b11101011000;
4429 let hasNewValue = 1;
4430 let opNewValue = 0;
4431 let isFP = 1;
4432 let Uses = [USR];
4433 let isCommutable = 1;
4434 }
4435 def F2_sfclass : HInst<
4436 (outs PredRegs:$Pd4),
4437 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
4438 "$Pd4 = sfclass($Rs32,#$Ii)",
4439 tc_7a830544, TypeS_2op>, Enc_83ee64, Requires<[HasV5]> {
4440 let Inst{7-2} = 0b000000;
4441 let Inst{13-13} = 0b0;
4442 let Inst{31-21} = 0b10000101111;
4443 let isFP = 1;
4444 let Uses = [USR];
4445 }
4446 def F2_sfcmpeq : HInst<
4447 (outs PredRegs:$Pd4),
4448 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4449 "$Pd4 = sfcmp.eq($Rs32,$Rt32)",
4450 tc_1e856f58, TypeS_3op>, Enc_c2b48e, Requires<[HasV5]> {
4451 let Inst{7-2} = 0b011000;
4452 let Inst{13-13} = 0b0;
4453 let Inst{31-21} = 0b11000111111;
4454 let isFP = 1;
4455 let Uses = [USR];
4456 let isCompare = 1;
4457 }
4458 def F2_sfcmpge : HInst<
4459 (outs PredRegs:$Pd4),
4460 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4461 "$Pd4 = sfcmp.ge($Rs32,$Rt32)",
4462 tc_1e856f58, TypeS_3op>, Enc_c2b48e, Requires<[HasV5]> {
4463 let Inst{7-2} = 0b000000;
4464 let Inst{13-13} = 0b0;
4465 let Inst{31-21} = 0b11000111111;
4466 let isFP = 1;
4467 let Uses = [USR];
4468 let isCompare = 1;
4469 }
4470 def F2_sfcmpgt : HInst<
4471 (outs PredRegs:$Pd4),
4472 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4473 "$Pd4 = sfcmp.gt($Rs32,$Rt32)",
4474 tc_1e856f58, TypeS_3op>, Enc_c2b48e, Requires<[HasV5]> {
4475 let Inst{7-2} = 0b100000;
4476 let Inst{13-13} = 0b0;
4477 let Inst{31-21} = 0b11000111111;
4478 let isFP = 1;
4479 let Uses = [USR];
4480 let isCompare = 1;
4481 }
4482 def F2_sfcmpuo : HInst<
4483 (outs PredRegs:$Pd4),
4484 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4485 "$Pd4 = sfcmp.uo($Rs32,$Rt32)",
4486 tc_1e856f58, TypeS_3op>, Enc_c2b48e, Requires<[HasV5]> {
4487 let Inst{7-2} = 0b001000;
4488 let Inst{13-13} = 0b0;
4489 let Inst{31-21} = 0b11000111111;
4490 let isFP = 1;
4491 let Uses = [USR];
4492 let isCompare = 1;
4493 }
4494 def F2_sffixupd : HInst<
4495 (outs IntRegs:$Rd32),
4496 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4497 "$Rd32 = sffixupd($Rs32,$Rt32)",
4498 tc_6792d5ff, TypeM>, Enc_5ab2be, Requires<[HasV5]> {
4499 let Inst{7-5} = 0b001;
4500 let Inst{13-13} = 0b0;
4501 let Inst{31-21} = 0b11101011110;
4502 let hasNewValue = 1;
4503 let opNewValue = 0;
4504 let isFP = 1;
4505 }
4506 def F2_sffixupn : HInst<
4507 (outs IntRegs:$Rd32),
4508 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4509 "$Rd32 = sffixupn($Rs32,$Rt32)",
4510 tc_6792d5ff, TypeM>, Enc_5ab2be, Requires<[HasV5]> {
4511 let Inst{7-5} = 0b000;
4512 let Inst{13-13} = 0b0;
4513 let Inst{31-21} = 0b11101011110;
4514 let hasNewValue = 1;
4515 let opNewValue = 0;
4516 let isFP = 1;
4517 }
4518 def F2_sffixupr : HInst<
4519 (outs IntRegs:$Rd32),
4520 (ins IntRegs:$Rs32),
4521 "$Rd32 = sffixupr($Rs32)",
4522 tc_f3eaa14b, TypeS_2op>, Enc_5e2823, Requires<[HasV5]> {
4523 let Inst{13-5} = 0b000000000;
4524 let Inst{31-21} = 0b10001011101;
4525 let hasNewValue = 1;
4526 let opNewValue = 0;
4527 let isFP = 1;
4528 }
4529 def F2_sffma : HInst<
4530 (outs IntRegs:$Rx32),
4531 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
4532 "$Rx32 += sfmpy($Rs32,$Rt32)",
4533 tc_d580173f, TypeM>, Enc_2ae154, Requires<[HasV5]> {
4534 let Inst{7-5} = 0b100;
4535 let Inst{13-13} = 0b0;
4536 let Inst{31-21} = 0b11101111000;
4537 let hasNewValue = 1;
4538 let opNewValue = 0;
4539 let isFP = 1;
4540 let Uses = [USR];
4541 let Constraints = "$Rx32 = $Rx32in";
4542 }
4543 def F2_sffma_lib : HInst<
4544 (outs IntRegs:$Rx32),
4545 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
4546 "$Rx32 += sfmpy($Rs32,$Rt32):lib",
4547 tc_d580173f, TypeM>, Enc_2ae154, Requires<[HasV5]> {
4548 let Inst{7-5} = 0b110;
4549 let Inst{13-13} = 0b0;
4550 let Inst{31-21} = 0b11101111000;
4551 let hasNewValue = 1;
4552 let opNewValue = 0;
4553 let isFP = 1;
4554 let Uses = [USR];
4555 let Constraints = "$Rx32 = $Rx32in";
4556 }
4557 def F2_sffma_sc : HInst<
4558 (outs IntRegs:$Rx32),
4559 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32, PredRegs:$Pu4),
4560 "$Rx32 += sfmpy($Rs32,$Rt32,$Pu4):scale",
4561 tc_038a1342, TypeM>, Enc_437f33, Requires<[HasV5]> {
4562 let Inst{7-7} = 0b1;
4563 let Inst{13-13} = 0b0;
4564 let Inst{31-21} = 0b11101111011;
4565 let hasNewValue = 1;
4566 let opNewValue = 0;
4567 let isFP = 1;
4568 let Uses = [USR];
4569 let Constraints = "$Rx32 = $Rx32in";
4570 }
4571 def F2_sffms : HInst<
4572 (outs IntRegs:$Rx32),
4573 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
4574 "$Rx32 -= sfmpy($Rs32,$Rt32)",
4575 tc_d580173f, TypeM>, Enc_2ae154, Requires<[HasV5]> {
4576 let Inst{7-5} = 0b101;
4577 let Inst{13-13} = 0b0;
4578 let Inst{31-21} = 0b11101111000;
4579 let hasNewValue = 1;
4580 let opNewValue = 0;
4581 let isFP = 1;
4582 let Uses = [USR];
4583 let Constraints = "$Rx32 = $Rx32in";
4584 }
4585 def F2_sffms_lib : HInst<
4586 (outs IntRegs:$Rx32),
4587 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
4588 "$Rx32 -= sfmpy($Rs32,$Rt32):lib",
4589 tc_d580173f, TypeM>, Enc_2ae154, Requires<[HasV5]> {
4590 let Inst{7-5} = 0b111;
4591 let Inst{13-13} = 0b0;
4592 let Inst{31-21} = 0b11101111000;
4593 let hasNewValue = 1;
4594 let opNewValue = 0;
4595 let isFP = 1;
4596 let Uses = [USR];
4597 let Constraints = "$Rx32 = $Rx32in";
4598 }
4599 def F2_sfimm_n : HInst<
4600 (outs IntRegs:$Rd32),
4601 (ins u10_0Imm:$Ii),
4602 "$Rd32 = sfmake(#$Ii):neg",
4603 tc_234a11a5, TypeALU64>, Enc_6c9440, Requires<[HasV5]> {
4604 let Inst{20-16} = 0b00000;
4605 let Inst{31-22} = 0b1101011001;
4606 let hasNewValue = 1;
4607 let opNewValue = 0;
4608 let prefersSlot3 = 1;
4609 }
4610 def F2_sfimm_p : HInst<
4611 (outs IntRegs:$Rd32),
4612 (ins u10_0Imm:$Ii),
4613 "$Rd32 = sfmake(#$Ii):pos",
4614 tc_234a11a5, TypeALU64>, Enc_6c9440, Requires<[HasV5]> {
4615 let Inst{20-16} = 0b00000;
4616 let Inst{31-22} = 0b1101011000;
4617 let hasNewValue = 1;
4618 let opNewValue = 0;
4619 let prefersSlot3 = 1;
4620 }
4621 def F2_sfinvsqrta : HInst<
4622 (outs IntRegs:$Rd32, PredRegs:$Pe4),
4623 (ins IntRegs:$Rs32),
4624 "$Rd32,$Pe4 = sfinvsqrta($Rs32)",
4625 tc_4d99bca9, TypeS_2op>, Enc_890909, Requires<[HasV5]> {
4626 let Inst{13-7} = 0b0000000;
4627 let Inst{31-21} = 0b10001011111;
4628 let hasNewValue = 1;
4629 let opNewValue = 0;
4630 let isFP = 1;
4631 let isPredicateLate = 1;
4632 }
4633 def F2_sfmax : HInst<
4634 (outs IntRegs:$Rd32),
4635 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4636 "$Rd32 = sfmax($Rs32,$Rt32)",
4637 tc_976ddc4f, TypeM>, Enc_5ab2be, Requires<[HasV5]> {
4638 let Inst{7-5} = 0b000;
4639 let Inst{13-13} = 0b0;
4640 let Inst{31-21} = 0b11101011100;
4641 let hasNewValue = 1;
4642 let opNewValue = 0;
4643 let isFP = 1;
4644 let prefersSlot3 = 1;
4645 let Uses = [USR];
4646 }
4647 def F2_sfmin : HInst<
4648 (outs IntRegs:$Rd32),
4649 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4650 "$Rd32 = sfmin($Rs32,$Rt32)",
4651 tc_976ddc4f, TypeM>, Enc_5ab2be, Requires<[HasV5]> {
4652 let Inst{7-5} = 0b001;
4653 let Inst{13-13} = 0b0;
4654 let Inst{31-21} = 0b11101011100;
4655 let hasNewValue = 1;
4656 let opNewValue = 0;
4657 let isFP = 1;
4658 let prefersSlot3 = 1;
4659 let Uses = [USR];
4660 }
4661 def F2_sfmpy : HInst<
4662 (outs IntRegs:$Rd32),
4663 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4664 "$Rd32 = sfmpy($Rs32,$Rt32)",
4665 tc_6792d5ff, TypeM>, Enc_5ab2be, Requires<[HasV5]> {
4666 let Inst{7-5} = 0b000;
4667 let Inst{13-13} = 0b0;
4668 let Inst{31-21} = 0b11101011010;
4669 let hasNewValue = 1;
4670 let opNewValue = 0;
4671 let isFP = 1;
4672 let Uses = [USR];
4673 let isCommutable = 1;
4674 }
4675 def F2_sfrecipa : HInst<
4676 (outs IntRegs:$Rd32, PredRegs:$Pe4),
4677 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4678 "$Rd32,$Pe4 = sfrecipa($Rs32,$Rt32)",
4679 tc_9c00ce8d, TypeM>, Enc_a94f3b, Requires<[HasV5]> {
4680 let Inst{7-7} = 0b1;
4681 let Inst{13-13} = 0b0;
4682 let Inst{31-21} = 0b11101011111;
4683 let hasNewValue = 1;
4684 let opNewValue = 0;
4685 let isFP = 1;
4686 let isPredicateLate = 1;
4687 }
4688 def F2_sfsub : HInst<
4689 (outs IntRegs:$Rd32),
4690 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4691 "$Rd32 = sfsub($Rs32,$Rt32)",
4692 tc_6792d5ff, TypeM>, Enc_5ab2be, Requires<[HasV5]> {
4693 let Inst{7-5} = 0b001;
4694 let Inst{13-13} = 0b0;
4695 let Inst{31-21} = 0b11101011000;
4696 let hasNewValue = 1;
4697 let opNewValue = 0;
4698 let isFP = 1;
4699 let Uses = [USR];
4700 }
4701 def G4_tfrgcpp : HInst<
4702 (outs DoubleRegs:$Rdd32),
4703 (ins GuestRegs64:$Gss32),
4704 "$Rdd32 = $Gss32",
4705 tc_6fa4db47, TypeCR>, Enc_0aa344 {
4706 let Inst{13-5} = 0b000000000;
4707 let Inst{31-21} = 0b01101000001;
4708 }
4709 def G4_tfrgcrr : HInst<
4710 (outs IntRegs:$Rd32),
4711 (ins GuestRegs:$Gs32),
4712 "$Rd32 = $Gs32",
4713 tc_6fa4db47, TypeCR>, Enc_44271f {
4714 let Inst{13-5} = 0b000000000;
4715 let Inst{31-21} = 0b01101010001;
4716 let hasNewValue = 1;
4717 let opNewValue = 0;
4718 }
4719 def G4_tfrgpcp : HInst<
4720 (outs GuestRegs64:$Gdd32),
4721 (ins DoubleRegs:$Rss32),
4722 "$Gdd32 = $Rss32",
4723 tc_994333cd, TypeCR>, Enc_ed5027 {
4724 let Inst{13-5} = 0b000000000;
4725 let Inst{31-21} = 0b01100011000;
4726 let hasNewValue = 1;
4727 let opNewValue = 0;
4728 }
4729 def G4_tfrgrcr : HInst<
4730 (outs GuestRegs:$Gd32),
4731 (ins IntRegs:$Rs32),
4732 "$Gd32 = $Rs32",
4733 tc_994333cd, TypeCR>, Enc_621fba {
4734 let Inst{13-5} = 0b000000000;
4735 let Inst{31-21} = 0b01100010000;
4736 let hasNewValue = 1;
4737 let opNewValue = 0;
4738 }
4739 def J2_call : HInst<
4740 (outs),
4741 (ins a30_2Imm:$Ii),
4742 "call $Ii",
4743 tc_a27582fa, TypeJ>, Enc_81ac1d, PredRel {
4744 let Inst{0-0} = 0b0;
4745 let Inst{31-25} = 0b0101101;
4746 let isCall = 1;
4747 let prefersSlot3 = 1;
4748 let cofRelax2 = 1;
4749 let cofMax1 = 1;
4750 let Uses = [R29];
4751 let Defs = [PC, R31];
4752 let BaseOpcode = "J2_call";
4753 let isPredicable = 1;
4754 let hasSideEffects = 1;
4755 let isExtendable = 1;
4756 let opExtendable = 0;
4757 let isExtentSigned = 1;
4758 let opExtentBits = 24;
4759 let opExtentAlign = 2;
4760 }
4761 def J2_callf : HInst<
4762 (outs),
4763 (ins PredRegs:$Pu4, a30_2Imm:$Ii),
4764 "if (!$Pu4) call $Ii",
4765 tc_2f185f5c, TypeJ>, Enc_daea09, PredRel {
4766 let Inst{0-0} = 0b0;
4767 let Inst{12-10} = 0b000;
4768 let Inst{21-21} = 0b1;
4769 let Inst{31-24} = 0b01011101;
4770 let isPredicated = 1;
4771 let isPredicatedFalse = 1;
4772 let isCall = 1;
4773 let prefersSlot3 = 1;
4774 let cofRelax1 = 1;
4775 let cofRelax2 = 1;
4776 let cofMax1 = 1;
4777 let Uses = [R29];
4778 let Defs = [PC, R31];
4779 let BaseOpcode = "J2_call";
4780 let hasSideEffects = 1;
4781 let isTaken = Inst{12};
4782 let isExtendable = 1;
4783 let opExtendable = 1;
4784 let isExtentSigned = 1;
4785 let opExtentBits = 17;
4786 let opExtentAlign = 2;
4787 }
4788 def J2_callr : HInst<
4789 (outs),
4790 (ins IntRegs:$Rs32),
4791 "callr $Rs32",
4792 tc_15411484, TypeJ>, Enc_ecbcc8 {
4793 let Inst{13-0} = 0b00000000000000;
4794 let Inst{31-21} = 0b01010000101;
4795 let isCall = 1;
4796 let prefersSlot3 = 1;
4797 let cofMax1 = 1;
4798 let Uses = [R29];
4799 let Defs = [PC, R31];
4800 let hasSideEffects = 1;
4801 }
4802 def J2_callrf : HInst<
4803 (outs),
4804 (ins PredRegs:$Pu4, IntRegs:$Rs32),
4805 "if (!$Pu4) callr $Rs32",
4806 tc_10b97e27, TypeJ>, Enc_88d4d9 {
4807 let Inst{7-0} = 0b00000000;
4808 let Inst{13-10} = 0b0000;
4809 let Inst{31-21} = 0b01010001001;
4810 let isPredicated = 1;
4811 let isPredicatedFalse = 1;
4812 let isCall = 1;
4813 let prefersSlot3 = 1;
4814 let cofMax1 = 1;
4815 let Uses = [R29];
4816 let Defs = [PC, R31];
4817 let hasSideEffects = 1;
4818 let isTaken = Inst{12};
4819 }
4820 def J2_callrt : HInst<
4821 (outs),
4822 (ins PredRegs:$Pu4, IntRegs:$Rs32),
4823 "if ($Pu4) callr $Rs32",
4824 tc_10b97e27, TypeJ>, Enc_88d4d9 {
4825 let Inst{7-0} = 0b00000000;
4826 let Inst{13-10} = 0b0000;
4827 let Inst{31-21} = 0b01010001000;
4828 let isPredicated = 1;
4829 let isCall = 1;
4830 let prefersSlot3 = 1;
4831 let cofMax1 = 1;
4832 let Uses = [R29];
4833 let Defs = [PC, R31];
4834 let hasSideEffects = 1;
4835 let isTaken = Inst{12};
4836 }
4837 def J2_callt : HInst<
4838 (outs),
4839 (ins PredRegs:$Pu4, a30_2Imm:$Ii),
4840 "if ($Pu4) call $Ii",
4841 tc_2f185f5c, TypeJ>, Enc_daea09, PredRel {
4842 let Inst{0-0} = 0b0;
4843 let Inst{12-10} = 0b000;
4844 let Inst{21-21} = 0b0;
4845 let Inst{31-24} = 0b01011101;
4846 let isPredicated = 1;
4847 let isCall = 1;
4848 let prefersSlot3 = 1;
4849 let cofRelax1 = 1;
4850 let cofRelax2 = 1;
4851 let cofMax1 = 1;
4852 let Uses = [R29];
4853 let Defs = [PC, R31];
4854 let BaseOpcode = "J2_call";
4855 let hasSideEffects = 1;
4856 let isTaken = Inst{12};
4857 let isExtendable = 1;
4858 let opExtendable = 1;
4859 let isExtentSigned = 1;
4860 let opExtentBits = 17;
4861 let opExtentAlign = 2;
4862 }
4863 def J2_endloop0 : HInst<
4864 (outs),
4865 (ins),
4866 "endloop0",
4867 tc_52d7bbea, TypeJ> {
4868 let Uses = [LC0, SA0];
4869 let Defs = [LC0, P3, PC, USR];
4870 let isBranch = 1;
4871 let isTerminator = 1;
4872 let isPseudo = 1;
4873 }
4874 def J2_endloop01 : HInst<
4875 (outs),
4876 (ins),
4877 "endloop01",
4878 tc_52d7bbea, TypeJ> {
4879 let Uses = [LC0, LC1, SA0, SA1];
4880 let Defs = [LC0, LC1, P3, PC, USR];
4881 let isPseudo = 1;
4882 }
4883 def J2_endloop1 : HInst<
4884 (outs),
4885 (ins),
4886 "endloop1",
4887 tc_52d7bbea, TypeJ> {
4888 let Uses = [LC1, SA1];
4889 let Defs = [LC1, PC];
4890 let isBranch = 1;
4891 let isTerminator = 1;
4892 let isPseudo = 1;
4893 }
4894 def J2_jump : HInst<
4895 (outs),
4896 (ins b30_2Imm:$Ii),
4897 "jump $Ii",
4898 tc_3669266a, TypeJ>, Enc_81ac1d, PredNewRel {
4899 let Inst{0-0} = 0b0;
4900 let Inst{31-25} = 0b0101100;
4901 let isTerminator = 1;
4902 let isBranch = 1;
4903 let cofRelax2 = 1;
4904 let cofMax1 = 1;
4905 let Defs = [PC];
4906 let InputType = "imm";
4907 let BaseOpcode = "J2_jump";
4908 let isBarrier = 1;
4909 let isPredicable = 1;
4910 let isExtendable = 1;
4911 let opExtendable = 0;
4912 let isExtentSigned = 1;
4913 let opExtentBits = 24;
4914 let opExtentAlign = 2;
4915 }
4916 def J2_jumpf : HInst<
4917 (outs),
4918 (ins PredRegs:$Pu4, b30_2Imm:$Ii),
4919 "if (!$Pu4) jump:nt $Ii",
4920 tc_e9fae2d6, TypeJ>, Enc_daea09, PredNewRel {
4921 let Inst{0-0} = 0b0;
4922 let Inst{12-10} = 0b000;
4923 let Inst{21-21} = 0b1;
4924 let Inst{31-24} = 0b01011100;
4925 let isPredicated = 1;
4926 let isPredicatedFalse = 1;
4927 let isTerminator = 1;
4928 let isBranch = 1;
4929 let cofRelax1 = 1;
4930 let cofRelax2 = 1;
4931 let cofMax1 = 1;
4932 let Defs = [PC];
4933 let InputType = "imm";
4934 let BaseOpcode = "J2_jump";
4935 let isTaken = Inst{12};
4936 let isExtendable = 1;
4937 let opExtendable = 1;
4938 let isExtentSigned = 1;
4939 let opExtentBits = 17;
4940 let opExtentAlign = 2;
4941 }
4942 def J2_jumpf_nopred_map : HInst<
4943 (outs),
4944 (ins PredRegs:$Pu4, b15_2Imm:$Ii),
4945 "if (!$Pu4) jump $Ii",
4946 tc_e9fae2d6, TypeMAPPING>, Requires<[HasV60]> {
4947 let isPseudo = 1;
4948 let isCodeGenOnly = 1;
4949 }
4950 def J2_jumpfnew : HInst<
4951 (outs),
4952 (ins PredRegs:$Pu4, b30_2Imm:$Ii),
4953 "if (!$Pu4.new) jump:nt $Ii",
4954 tc_a46f0df5, TypeJ>, Enc_daea09, PredNewRel {
4955 let Inst{0-0} = 0b0;
4956 let Inst{12-10} = 0b010;
4957 let Inst{21-21} = 0b1;
4958 let Inst{31-24} = 0b01011100;
4959 let isPredicated = 1;
4960 let isPredicatedFalse = 1;
4961 let isTerminator = 1;
4962 let isBranch = 1;
4963 let isPredicatedNew = 1;
4964 let cofRelax1 = 1;
4965 let cofRelax2 = 1;
4966 let cofMax1 = 1;
4967 let Defs = [PC];
4968 let InputType = "imm";
4969 let BaseOpcode = "J2_jump";
4970 let isTaken = Inst{12};
4971 let isExtendable = 1;
4972 let opExtendable = 1;
4973 let isExtentSigned = 1;
4974 let opExtentBits = 17;
4975 let opExtentAlign = 2;
4976 }
4977 def J2_jumpfnewpt : HInst<
4978 (outs),
4979 (ins PredRegs:$Pu4, b30_2Imm:$Ii),
4980 "if (!$Pu4.new) jump:t $Ii",
4981 tc_a46f0df5, TypeJ>, Enc_daea09, PredNewRel {
4982 let Inst{0-0} = 0b0;
4983 let Inst{12-10} = 0b110;
4984 let Inst{21-21} = 0b1;
4985 let Inst{31-24} = 0b01011100;
4986 let isPredicated = 1;
4987 let isPredicatedFalse = 1;
4988 let isTerminator = 1;
4989 let isBranch = 1;
4990 let isPredicatedNew = 1;
4991 let cofRelax1 = 1;
4992 let cofRelax2 = 1;
4993 let cofMax1 = 1;
4994 let Defs = [PC];
4995 let InputType = "imm";
4996 let BaseOpcode = "J2_jump";
4997 let isTaken = Inst{12};
4998 let isExtendable = 1;
4999 let opExtendable = 1;
5000 let isExtentSigned = 1;
5001 let opExtentBits = 17;
5002 let opExtentAlign = 2;
5003 }
5004 def J2_jumpfpt : HInst<
5005 (outs),
5006 (ins PredRegs:$Pu4, b30_2Imm:$Ii),
5007 "if (!$Pu4) jump:t $Ii",
5008 tc_e1e99bfa, TypeJ>, Enc_daea09, Requires<[HasV60]>, PredNewRel {
5009 let Inst{0-0} = 0b0;
5010 let Inst{12-10} = 0b100;
5011 let Inst{21-21} = 0b1;
5012 let Inst{31-24} = 0b01011100;
5013 let isPredicated = 1;
5014 let isPredicatedFalse = 1;
5015 let isTerminator = 1;
5016 let isBranch = 1;
5017 let cofRelax1 = 1;
5018 let cofRelax2 = 1;
5019 let cofMax1 = 1;
5020 let Defs = [PC];
5021 let InputType = "imm";
5022 let BaseOpcode = "J2_jump";
5023 let isTaken = Inst{12};
5024 let isExtendable = 1;
5025 let opExtendable = 1;
5026 let isExtentSigned = 1;
5027 let opExtentBits = 17;
5028 let opExtentAlign = 2;
5029 }
5030 def J2_jumpr : HInst<
5031 (outs),
5032 (ins IntRegs:$Rs32),
5033 "jumpr $Rs32",
5034 tc_9faf76ae, TypeJ>, Enc_ecbcc8, PredNewRel {
5035 let Inst{13-0} = 0b00000000000000;
5036 let Inst{31-21} = 0b01010010100;
5037 let isTerminator = 1;
5038 let isIndirectBranch = 1;
5039 let isBranch = 1;
5040 let cofMax1 = 1;
5041 let Defs = [PC];
5042 let InputType = "reg";
5043 let BaseOpcode = "J2_jumpr";
5044 let isBarrier = 1;
5045 let isPredicable = 1;
5046 }
5047 def J2_jumprf : HInst<
5048 (outs),
5049 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5050 "if (!$Pu4) jumpr:nt $Rs32",
5051 tc_e0739b8c, TypeJ>, Enc_88d4d9, PredNewRel {
5052 let Inst{7-0} = 0b00000000;
5053 let Inst{13-10} = 0b0000;
5054 let Inst{31-21} = 0b01010011011;
5055 let isPredicated = 1;
5056 let isPredicatedFalse = 1;
5057 let isTerminator = 1;
5058 let isIndirectBranch = 1;
5059 let isBranch = 1;
5060 let cofMax1 = 1;
5061 let Defs = [PC];
5062 let InputType = "reg";
5063 let BaseOpcode = "J2_jumpr";
5064 let isTaken = Inst{12};
5065 }
5066 def J2_jumprf_nopred_map : HInst<
5067 (outs),
5068 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5069 "if (!$Pu4) jumpr $Rs32",
5070 tc_e0739b8c, TypeMAPPING>, Requires<[HasV60]> {
5071 let isPseudo = 1;
5072 let isCodeGenOnly = 1;
5073 }
5074 def J2_jumprfnew : HInst<
5075 (outs),
5076 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5077 "if (!$Pu4.new) jumpr:nt $Rs32",
5078 tc_181af5d0, TypeJ>, Enc_88d4d9, PredNewRel {
5079 let Inst{7-0} = 0b00000000;
5080 let Inst{13-10} = 0b0010;
5081 let Inst{31-21} = 0b01010011011;
5082 let isPredicated = 1;
5083 let isPredicatedFalse = 1;
5084 let isTerminator = 1;
5085 let isIndirectBranch = 1;
5086 let isBranch = 1;
5087 let isPredicatedNew = 1;
5088 let cofMax1 = 1;
5089 let Defs = [PC];
5090 let InputType = "reg";
5091 let BaseOpcode = "J2_jumpr";
5092 let isTaken = Inst{12};
5093 }
5094 def J2_jumprfnewpt : HInst<
5095 (outs),
5096 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5097 "if (!$Pu4.new) jumpr:t $Rs32",
5098 tc_181af5d0, TypeJ>, Enc_88d4d9, PredNewRel {
5099 let Inst{7-0} = 0b00000000;
5100 let Inst{13-10} = 0b0110;
5101 let Inst{31-21} = 0b01010011011;
5102 let isPredicated = 1;
5103 let isPredicatedFalse = 1;
5104 let isTerminator = 1;
5105 let isIndirectBranch = 1;
5106 let isBranch = 1;
5107 let isPredicatedNew = 1;
5108 let cofMax1 = 1;
5109 let Defs = [PC];
5110 let InputType = "reg";
5111 let BaseOpcode = "J2_jumpr";
5112 let isTaken = Inst{12};
5113 }
5114 def J2_jumprfpt : HInst<
5115 (outs),
5116 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5117 "if (!$Pu4) jumpr:t $Rs32",
5118 tc_97743097, TypeJ>, Enc_88d4d9, Requires<[HasV60]>, PredNewRel {
5119 let Inst{7-0} = 0b00000000;
5120 let Inst{13-10} = 0b0100;
5121 let Inst{31-21} = 0b01010011011;
5122 let isPredicated = 1;
5123 let isPredicatedFalse = 1;
5124 let isTerminator = 1;
5125 let isIndirectBranch = 1;
5126 let isBranch = 1;
5127 let cofMax1 = 1;
5128 let Defs = [PC];
5129 let InputType = "reg";
5130 let BaseOpcode = "J2_jumpr";
5131 let isTaken = Inst{12};
5132 }
5133 def J2_jumprgtez : HInst<
5134 (outs),
5135 (ins IntRegs:$Rs32, b13_2Imm:$Ii),
5136 "if ($Rs32>=#0) jump:nt $Ii",
5137 tc_73043bf4, TypeCR>, Enc_0fa531 {
5138 let Inst{0-0} = 0b0;
5139 let Inst{12-12} = 0b0;
5140 let Inst{31-22} = 0b0110000101;
5141 let isPredicated = 1;
5142 let isTerminator = 1;
5143 let isBranch = 1;
5144 let isPredicatedNew = 1;
5145 let cofRelax1 = 1;
5146 let cofRelax2 = 1;
5147 let cofMax1 = 1;
5148 let Defs = [PC];
5149 let isTaken = Inst{12};
5150 }
5151 def J2_jumprgtezpt : HInst<
5152 (outs),
5153 (ins IntRegs:$Rs32, b13_2Imm:$Ii),
5154 "if ($Rs32>=#0) jump:t $Ii",
5155 tc_73043bf4, TypeCR>, Enc_0fa531 {
5156 let Inst{0-0} = 0b0;
5157 let Inst{12-12} = 0b1;
5158 let Inst{31-22} = 0b0110000101;
5159 let isPredicated = 1;
5160 let isTerminator = 1;
5161 let isBranch = 1;
5162 let isPredicatedNew = 1;
5163 let cofRelax1 = 1;
5164 let cofRelax2 = 1;
5165 let cofMax1 = 1;
5166 let Defs = [PC];
5167 let isTaken = Inst{12};
5168 }
5169 def J2_jumprltez : HInst<
5170 (outs),
5171 (ins IntRegs:$Rs32, b13_2Imm:$Ii),
5172 "if ($Rs32<=#0) jump:nt $Ii",
5173 tc_73043bf4, TypeCR>, Enc_0fa531 {
5174 let Inst{0-0} = 0b0;
5175 let Inst{12-12} = 0b0;
5176 let Inst{31-22} = 0b0110000111;
5177 let isPredicated = 1;
5178 let isTerminator = 1;
5179 let isBranch = 1;
5180 let isPredicatedNew = 1;
5181 let cofRelax1 = 1;
5182 let cofRelax2 = 1;
5183 let cofMax1 = 1;
5184 let Defs = [PC];
5185 let isTaken = Inst{12};
5186 }
5187 def J2_jumprltezpt : HInst<
5188 (outs),
5189 (ins IntRegs:$Rs32, b13_2Imm:$Ii),
5190 "if ($Rs32<=#0) jump:t $Ii",
5191 tc_73043bf4, TypeCR>, Enc_0fa531 {
5192 let Inst{0-0} = 0b0;
5193 let Inst{12-12} = 0b1;
5194 let Inst{31-22} = 0b0110000111;
5195 let isPredicated = 1;
5196 let isTerminator = 1;
5197 let isBranch = 1;
5198 let isPredicatedNew = 1;
5199 let cofRelax1 = 1;
5200 let cofRelax2 = 1;
5201 let cofMax1 = 1;
5202 let Defs = [PC];
5203 let isTaken = Inst{12};
5204 }
5205 def J2_jumprnz : HInst<
5206 (outs),
5207 (ins IntRegs:$Rs32, b13_2Imm:$Ii),
5208 "if ($Rs32==#0) jump:nt $Ii",
5209 tc_73043bf4, TypeCR>, Enc_0fa531 {
5210 let Inst{0-0} = 0b0;
5211 let Inst{12-12} = 0b0;
5212 let Inst{31-22} = 0b0110000110;
5213 let isPredicated = 1;
5214 let isTerminator = 1;
5215 let isBranch = 1;
5216 let isPredicatedNew = 1;
5217 let cofRelax1 = 1;
5218 let cofRelax2 = 1;
5219 let cofMax1 = 1;
5220 let Defs = [PC];
5221 let isTaken = Inst{12};
5222 }
5223 def J2_jumprnzpt : HInst<
5224 (outs),
5225 (ins IntRegs:$Rs32, b13_2Imm:$Ii),
5226 "if ($Rs32==#0) jump:t $Ii",
5227 tc_73043bf4, TypeCR>, Enc_0fa531 {
5228 let Inst{0-0} = 0b0;
5229 let Inst{12-12} = 0b1;
5230 let Inst{31-22} = 0b0110000110;
5231 let isPredicated = 1;
5232 let isTerminator = 1;
5233 let isBranch = 1;
5234 let isPredicatedNew = 1;
5235 let cofRelax1 = 1;
5236 let cofRelax2 = 1;
5237 let cofMax1 = 1;
5238 let Defs = [PC];
5239 let isTaken = Inst{12};
5240 }
5241 def J2_jumprt : HInst<
5242 (outs),
5243 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5244 "if ($Pu4) jumpr:nt $Rs32",
5245 tc_e0739b8c, TypeJ>, Enc_88d4d9, PredNewRel {
5246 let Inst{7-0} = 0b00000000;
5247 let Inst{13-10} = 0b0000;
5248 let Inst{31-21} = 0b01010011010;
5249 let isPredicated = 1;
5250 let isTerminator = 1;
5251 let isIndirectBranch = 1;
5252 let isBranch = 1;
5253 let cofMax1 = 1;
5254 let Defs = [PC];
5255 let InputType = "reg";
5256 let BaseOpcode = "J2_jumpr";
5257 let isTaken = Inst{12};
5258 }
5259 def J2_jumprt_nopred_map : HInst<
5260 (outs),
5261 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5262 "if ($Pu4) jumpr $Rs32",
5263 tc_e0739b8c, TypeMAPPING>, Requires<[HasV60]> {
5264 let isPseudo = 1;
5265 let isCodeGenOnly = 1;
5266 }
5267 def J2_jumprtnew : HInst<
5268 (outs),
5269 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5270 "if ($Pu4.new) jumpr:nt $Rs32",
5271 tc_181af5d0, TypeJ>, Enc_88d4d9, PredNewRel {
5272 let Inst{7-0} = 0b00000000;
5273 let Inst{13-10} = 0b0010;
5274 let Inst{31-21} = 0b01010011010;
5275 let isPredicated = 1;
5276 let isTerminator = 1;
5277 let isIndirectBranch = 1;
5278 let isBranch = 1;
5279 let isPredicatedNew = 1;
5280 let cofMax1 = 1;
5281 let Defs = [PC];
5282 let InputType = "reg";
5283 let BaseOpcode = "J2_jumpr";
5284 let isTaken = Inst{12};
5285 }
5286 def J2_jumprtnewpt : HInst<
5287 (outs),
5288 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5289 "if ($Pu4.new) jumpr:t $Rs32",
5290 tc_181af5d0, TypeJ>, Enc_88d4d9, PredNewRel {
5291 let Inst{7-0} = 0b00000000;
5292 let Inst{13-10} = 0b0110;
5293 let Inst{31-21} = 0b01010011010;
5294 let isPredicated = 1;
5295 let isTerminator = 1;
5296 let isIndirectBranch = 1;
5297 let isBranch = 1;
5298 let isPredicatedNew = 1;
5299 let cofMax1 = 1;
5300 let Defs = [PC];
5301 let InputType = "reg";
5302 let BaseOpcode = "J2_jumpr";
5303 let isTaken = Inst{12};
5304 }
5305 def J2_jumprtpt : HInst<
5306 (outs),
5307 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5308 "if ($Pu4) jumpr:t $Rs32",
5309 tc_97743097, TypeJ>, Enc_88d4d9, Requires<[HasV60]>, PredNewRel {
5310 let Inst{7-0} = 0b00000000;
5311 let Inst{13-10} = 0b0100;
5312 let Inst{31-21} = 0b01010011010;
5313 let isPredicated = 1;
5314 let isTerminator = 1;
5315 let isIndirectBranch = 1;
5316 let isBranch = 1;
5317 let cofMax1 = 1;
5318 let Defs = [PC];
5319 let InputType = "reg";
5320 let BaseOpcode = "J2_jumpr";
5321 let isTaken = Inst{12};
5322 }
5323 def J2_jumprz : HInst<
5324 (outs),
5325 (ins IntRegs:$Rs32, b13_2Imm:$Ii),
5326 "if ($Rs32!=#0) jump:nt $Ii",
5327 tc_73043bf4, TypeCR>, Enc_0fa531 {
5328 let Inst{0-0} = 0b0;
5329 let Inst{12-12} = 0b0;
5330 let Inst{31-22} = 0b0110000100;
5331 let isPredicated = 1;
5332 let isTerminator = 1;
5333 let isBranch = 1;
5334 let isPredicatedNew = 1;
5335 let cofRelax1 = 1;
5336 let cofRelax2 = 1;
5337 let cofMax1 = 1;
5338 let Defs = [PC];
5339 let isTaken = Inst{12};
5340 }
5341 def J2_jumprzpt : HInst<
5342 (outs),
5343 (ins IntRegs:$Rs32, b13_2Imm:$Ii),
5344 "if ($Rs32!=#0) jump:t $Ii",
5345 tc_73043bf4, TypeCR>, Enc_0fa531 {
5346 let Inst{0-0} = 0b0;
5347 let Inst{12-12} = 0b1;
5348 let Inst{31-22} = 0b0110000100;
5349 let isPredicated = 1;
5350 let isTerminator = 1;
5351 let isBranch = 1;
5352 let isPredicatedNew = 1;
5353 let cofRelax1 = 1;
5354 let cofRelax2 = 1;
5355 let cofMax1 = 1;
5356 let Defs = [PC];
5357 let isTaken = Inst{12};
5358 }
5359 def J2_jumpt : HInst<
5360 (outs),
5361 (ins PredRegs:$Pu4, b30_2Imm:$Ii),
5362 "if ($Pu4) jump:nt $Ii",
5363 tc_e9fae2d6, TypeJ>, Enc_daea09, PredNewRel {
5364 let Inst{0-0} = 0b0;
5365 let Inst{12-10} = 0b000;
5366 let Inst{21-21} = 0b0;
5367 let Inst{31-24} = 0b01011100;
5368 let isPredicated = 1;
5369 let isTerminator = 1;
5370 let isBranch = 1;
5371 let cofRelax1 = 1;
5372 let cofRelax2 = 1;
5373 let cofMax1 = 1;
5374 let Defs = [PC];
5375 let InputType = "imm";
5376 let BaseOpcode = "J2_jump";
5377 let isTaken = Inst{12};
5378 let isExtendable = 1;
5379 let opExtendable = 1;
5380 let isExtentSigned = 1;
5381 let opExtentBits = 17;
5382 let opExtentAlign = 2;
5383 }
5384 def J2_jumpt_nopred_map : HInst<
5385 (outs),
5386 (ins PredRegs:$Pu4, b15_2Imm:$Ii),
5387 "if ($Pu4) jump $Ii",
5388 tc_e9fae2d6, TypeMAPPING>, Requires<[HasV60]> {
5389 let isPseudo = 1;
5390 let isCodeGenOnly = 1;
5391 }
5392 def J2_jumptnew : HInst<
5393 (outs),
5394 (ins PredRegs:$Pu4, b30_2Imm:$Ii),
5395 "if ($Pu4.new) jump:nt $Ii",
5396 tc_a46f0df5, TypeJ>, Enc_daea09, PredNewRel {
5397 let Inst{0-0} = 0b0;
5398 let Inst{12-10} = 0b010;
5399 let Inst{21-21} = 0b0;
5400 let Inst{31-24} = 0b01011100;
5401 let isPredicated = 1;
5402 let isTerminator = 1;
5403 let isBranch = 1;
5404 let isPredicatedNew = 1;
5405 let cofRelax1 = 1;
5406 let cofRelax2 = 1;
5407 let cofMax1 = 1;
5408 let Defs = [PC];
5409 let InputType = "imm";
5410 let BaseOpcode = "J2_jump";
5411 let isTaken = Inst{12};
5412 let isExtendable = 1;
5413 let opExtendable = 1;
5414 let isExtentSigned = 1;
5415 let opExtentBits = 17;
5416 let opExtentAlign = 2;
5417 }
5418 def J2_jumptnewpt : HInst<
5419 (outs),
5420 (ins PredRegs:$Pu4, b30_2Imm:$Ii),
5421 "if ($Pu4.new) jump:t $Ii",
5422 tc_a46f0df5, TypeJ>, Enc_daea09, PredNewRel {
5423 let Inst{0-0} = 0b0;
5424 let Inst{12-10} = 0b110;
5425 let Inst{21-21} = 0b0;
5426 let Inst{31-24} = 0b01011100;
5427 let isPredicated = 1;
5428 let isTerminator = 1;
5429 let isBranch = 1;
5430 let isPredicatedNew = 1;
5431 let cofRelax1 = 1;
5432 let cofRelax2 = 1;
5433 let cofMax1 = 1;
5434 let Defs = [PC];
5435 let InputType = "imm";
5436 let BaseOpcode = "J2_jump";
5437 let isTaken = Inst{12};
5438 let isExtendable = 1;
5439 let opExtendable = 1;
5440 let isExtentSigned = 1;
5441 let opExtentBits = 17;
5442 let opExtentAlign = 2;
5443 }
5444 def J2_jumptpt : HInst<
5445 (outs),
5446 (ins PredRegs:$Pu4, b30_2Imm:$Ii),
5447 "if ($Pu4) jump:t $Ii",
5448 tc_e1e99bfa, TypeJ>, Enc_daea09, Requires<[HasV60]>, PredNewRel {
5449 let Inst{0-0} = 0b0;
5450 let Inst{12-10} = 0b100;
5451 let Inst{21-21} = 0b0;
5452 let Inst{31-24} = 0b01011100;
5453 let isPredicated = 1;
5454 let isTerminator = 1;
5455 let isBranch = 1;
5456 let cofRelax1 = 1;
5457 let cofRelax2 = 1;
5458 let cofMax1 = 1;
5459 let Defs = [PC];
5460 let InputType = "imm";
5461 let BaseOpcode = "J2_jump";
5462 let isTaken = Inst{12};
5463 let isExtendable = 1;
5464 let opExtendable = 1;
5465 let isExtentSigned = 1;
5466 let opExtentBits = 17;
5467 let opExtentAlign = 2;
5468 }
5469 def J2_loop0i : HInst<
5470 (outs),
5471 (ins b30_2Imm:$Ii, u10_0Imm:$II),
5472 "loop0($Ii,#$II)",
5473 tc_cf59f215, TypeCR>, Enc_4dc228 {
5474 let Inst{2-2} = 0b0;
5475 let Inst{13-13} = 0b0;
5476 let Inst{31-21} = 0b01101001000;
5477 let cofRelax1 = 1;
5478 let cofRelax2 = 1;
5479 let Defs = [LC0, SA0, USR];
5480 let isExtendable = 1;
5481 let opExtendable = 0;
5482 let isExtentSigned = 1;
5483 let opExtentBits = 9;
5484 let opExtentAlign = 2;
5485 }
5486 def J2_loop0r : HInst<
5487 (outs),
5488 (ins b30_2Imm:$Ii, IntRegs:$Rs32),
5489 "loop0($Ii,$Rs32)",
5490 tc_7934b9df, TypeCR>, Enc_864a5a {
5491 let Inst{2-0} = 0b000;
5492 let Inst{7-5} = 0b000;
5493 let Inst{13-13} = 0b0;
5494 let Inst{31-21} = 0b01100000000;
5495 let cofRelax1 = 1;
5496 let cofRelax2 = 1;
5497 let Defs = [LC0, SA0, USR];
5498 let isExtendable = 1;
5499 let opExtendable = 0;
5500 let isExtentSigned = 1;
5501 let opExtentBits = 9;
5502 let opExtentAlign = 2;
5503 }
5504 def J2_loop1i : HInst<
5505 (outs),
5506 (ins b30_2Imm:$Ii, u10_0Imm:$II),
5507 "loop1($Ii,#$II)",
5508 tc_cf59f215, TypeCR>, Enc_4dc228 {
5509 let Inst{2-2} = 0b0;
5510 let Inst{13-13} = 0b0;
5511 let Inst{31-21} = 0b01101001001;
5512 let cofRelax1 = 1;
5513 let cofRelax2 = 1;
5514 let Defs = [LC1, SA1];
5515 let isExtendable = 1;
5516 let opExtendable = 0;
5517 let isExtentSigned = 1;
5518 let opExtentBits = 9;
5519 let opExtentAlign = 2;
5520 }
5521 def J2_loop1r : HInst<
5522 (outs),
5523 (ins b30_2Imm:$Ii, IntRegs:$Rs32),
5524 "loop1($Ii,$Rs32)",
5525 tc_7934b9df, TypeCR>, Enc_864a5a {
5526 let Inst{2-0} = 0b000;
5527 let Inst{7-5} = 0b000;
5528 let Inst{13-13} = 0b0;
5529 let Inst{31-21} = 0b01100000001;
5530 let cofRelax1 = 1;
5531 let cofRelax2 = 1;
5532 let Defs = [LC1, SA1];
5533 let isExtendable = 1;
5534 let opExtendable = 0;
5535 let isExtentSigned = 1;
5536 let opExtentBits = 9;
5537 let opExtentAlign = 2;
5538 }
5539 def J2_pause : HInst<
5540 (outs),
5541 (ins u8_0Imm:$Ii),
5542 "pause(#$Ii)",
5543 tc_681a2300, TypeJ>, Enc_a51a9a {
5544 let Inst{1-0} = 0b00;
5545 let Inst{7-5} = 0b000;
5546 let Inst{13-13} = 0b0;
5547 let Inst{31-16} = 0b0101010001000000;
5548 let isSolo = 1;
5549 }
5550 def J2_ploop1si : HInst<
5551 (outs),
5552 (ins b30_2Imm:$Ii, u10_0Imm:$II),
5553 "p3 = sp1loop0($Ii,#$II)",
5554 tc_c5e2426d, TypeCR>, Enc_4dc228 {
5555 let Inst{2-2} = 0b0;
5556 let Inst{13-13} = 0b0;
5557 let Inst{31-21} = 0b01101001101;
5558 let isPredicateLate = 1;
5559 let cofRelax1 = 1;
5560 let cofRelax2 = 1;
5561 let Defs = [LC0, P3, SA0, USR];
5562 let isExtendable = 1;
5563 let opExtendable = 0;
5564 let isExtentSigned = 1;
5565 let opExtentBits = 9;
5566 let opExtentAlign = 2;
5567 }
5568 def J2_ploop1sr : HInst<
5569 (outs),
5570 (ins b30_2Imm:$Ii, IntRegs:$Rs32),
5571 "p3 = sp1loop0($Ii,$Rs32)",
5572 tc_4f7cd700, TypeCR>, Enc_864a5a {
5573 let Inst{2-0} = 0b000;
5574 let Inst{7-5} = 0b000;
5575 let Inst{13-13} = 0b0;
5576 let Inst{31-21} = 0b01100000101;
5577 let isPredicateLate = 1;
5578 let cofRelax1 = 1;
5579 let cofRelax2 = 1;
5580 let Defs = [LC0, P3, SA0, USR];
5581 let isExtendable = 1;
5582 let opExtendable = 0;
5583 let isExtentSigned = 1;
5584 let opExtentBits = 9;
5585 let opExtentAlign = 2;
5586 }
5587 def J2_ploop2si : HInst<
5588 (outs),
5589 (ins b30_2Imm:$Ii, u10_0Imm:$II),
5590 "p3 = sp2loop0($Ii,#$II)",
5591 tc_c5e2426d, TypeCR>, Enc_4dc228 {
5592 let Inst{2-2} = 0b0;
5593 let Inst{13-13} = 0b0;
5594 let Inst{31-21} = 0b01101001110;
5595 let isPredicateLate = 1;
5596 let cofRelax1 = 1;
5597 let cofRelax2 = 1;
5598 let Defs = [LC0, P3, SA0, USR];
5599 let isExtendable = 1;
5600 let opExtendable = 0;
5601 let isExtentSigned = 1;
5602 let opExtentBits = 9;
5603 let opExtentAlign = 2;
5604 }
5605 def J2_ploop2sr : HInst<
5606 (outs),
5607 (ins b30_2Imm:$Ii, IntRegs:$Rs32),
5608 "p3 = sp2loop0($Ii,$Rs32)",
5609 tc_4f7cd700, TypeCR>, Enc_864a5a {
5610 let Inst{2-0} = 0b000;
5611 let Inst{7-5} = 0b000;
5612 let Inst{13-13} = 0b0;
5613 let Inst{31-21} = 0b01100000110;
5614 let isPredicateLate = 1;
5615 let cofRelax1 = 1;
5616 let cofRelax2 = 1;
5617 let Defs = [LC0, P3, SA0, USR];
5618 let isExtendable = 1;
5619 let opExtendable = 0;
5620 let isExtentSigned = 1;
5621 let opExtentBits = 9;
5622 let opExtentAlign = 2;
5623 }
5624 def J2_ploop3si : HInst<
5625 (outs),
5626 (ins b30_2Imm:$Ii, u10_0Imm:$II),
5627 "p3 = sp3loop0($Ii,#$II)",
5628 tc_c5e2426d, TypeCR>, Enc_4dc228 {
5629 let Inst{2-2} = 0b0;
5630 let Inst{13-13} = 0b0;
5631 let Inst{31-21} = 0b01101001111;
5632 let isPredicateLate = 1;
5633 let cofRelax1 = 1;
5634 let cofRelax2 = 1;
5635 let Defs = [LC0, P3, SA0, USR];
5636 let isExtendable = 1;
5637 let opExtendable = 0;
5638 let isExtentSigned = 1;
5639 let opExtentBits = 9;
5640 let opExtentAlign = 2;
5641 }
5642 def J2_ploop3sr : HInst<
5643 (outs),
5644 (ins b30_2Imm:$Ii, IntRegs:$Rs32),
5645 "p3 = sp3loop0($Ii,$Rs32)",
5646 tc_4f7cd700, TypeCR>, Enc_864a5a {
5647 let Inst{2-0} = 0b000;
5648 let Inst{7-5} = 0b000;
5649 let Inst{13-13} = 0b0;
5650 let Inst{31-21} = 0b01100000111;
5651 let isPredicateLate = 1;
5652 let cofRelax1 = 1;
5653 let cofRelax2 = 1;
5654 let Defs = [LC0, P3, SA0, USR];
5655 let isExtendable = 1;
5656 let opExtendable = 0;
5657 let isExtentSigned = 1;
5658 let opExtentBits = 9;
5659 let opExtentAlign = 2;
5660 }
5661 def J2_trap0 : HInst<
5662 (outs),
5663 (ins u8_0Imm:$Ii),
5664 "trap0(#$Ii)",
5665 tc_14cd4cfa, TypeJ>, Enc_a51a9a {
5666 let Inst{1-0} = 0b00;
5667 let Inst{7-5} = 0b000;
5668 let Inst{13-13} = 0b0;
5669 let Inst{31-16} = 0b0101010000000000;
5670 let isSolo = 1;
5671 }
5672 def J2_trap1 : HInst<
5673 (outs IntRegs:$Rx32),
5674 (ins IntRegs:$Rx32in, u8_0Imm:$Ii),
5675 "trap1($Rx32,#$Ii)",
5676 tc_59a01ead, TypeJ>, Enc_33f8ba {
5677 let Inst{1-0} = 0b00;
5678 let Inst{7-5} = 0b000;
5679 let Inst{13-13} = 0b0;
5680 let Inst{31-21} = 0b01010100100;
5681 let hasNewValue = 1;
5682 let opNewValue = 0;
5683 let isSolo = 1;
5684 let Uses = [GOSP];
5685 let Defs = [GOSP, PC];
5686 let Constraints = "$Rx32 = $Rx32in";
5687 }
5688 def J2_trap1_noregmap : HInst<
5689 (outs),
5690 (ins u8_0Imm:$Ii),
5691 "trap1(#$Ii)",
5692 tc_59a01ead, TypeMAPPING> {
5693 let isPseudo = 1;
5694 let isCodeGenOnly = 1;
5695 }
5696 def J4_cmpeq_f_jumpnv_nt : HInst<
5697 (outs),
5698 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
5699 "if (!cmp.eq($Ns8.new,$Rt32)) jump:nt $Ii",
5700 tc_51b866be, TypeNCJ>, Enc_c9a18e, PredRel {
5701 let Inst{0-0} = 0b0;
5702 let Inst{13-13} = 0b0;
5703 let Inst{19-19} = 0b0;
5704 let Inst{31-22} = 0b0010000001;
5705 let isPredicated = 1;
5706 let isPredicatedFalse = 1;
5707 let isTerminator = 1;
5708 let isBranch = 1;
5709 let isNewValue = 1;
5710 let cofMax1 = 1;
5711 let isRestrictNoSlot1Store = 1;
5712 let Defs = [PC];
5713 let BaseOpcode = "J4_cmpeqr";
5714 let isTaken = Inst{13};
5715 let isExtendable = 1;
5716 let opExtendable = 2;
5717 let isExtentSigned = 1;
5718 let opExtentBits = 11;
5719 let opExtentAlign = 2;
5720 let opNewValue = 0;
5721 }
5722 def J4_cmpeq_f_jumpnv_t : HInst<
5723 (outs),
5724 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
5725 "if (!cmp.eq($Ns8.new,$Rt32)) jump:t $Ii",
5726 tc_51b866be, TypeNCJ>, Enc_c9a18e, PredRel {
5727 let Inst{0-0} = 0b0;
5728 let Inst{13-13} = 0b1;
5729 let Inst{19-19} = 0b0;
5730 let Inst{31-22} = 0b0010000001;
5731 let isPredicated = 1;
5732 let isPredicatedFalse = 1;
5733 let isTerminator = 1;
5734 let isBranch = 1;
5735 let isNewValue = 1;
5736 let cofMax1 = 1;
5737 let isRestrictNoSlot1Store = 1;
5738 let Defs = [PC];
5739 let BaseOpcode = "J4_cmpeqr";
5740 let isTaken = Inst{13};
5741 let isExtendable = 1;
5742 let opExtendable = 2;
5743 let isExtentSigned = 1;
5744 let opExtentBits = 11;
5745 let opExtentAlign = 2;
5746 let opNewValue = 0;
5747 }
5748 def J4_cmpeq_fp0_jump_nt : HInst<
5749 (outs),
5750 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
5751 "p0 = cmp.eq($Rs16,$Rt16); if (!p0.new) jump:nt $Ii",
5752 tc_855b0b61, TypeCJ>, Enc_6a5972, PredRel {
5753 let Inst{0-0} = 0b0;
5754 let Inst{13-12} = 0b00;
5755 let Inst{31-22} = 0b0001010001;
5756 let isPredicated = 1;
5757 let isPredicatedFalse = 1;
5758 let isTerminator = 1;
5759 let isBranch = 1;
5760 let isPredicatedNew = 1;
5761 let cofRelax1 = 1;
5762 let cofRelax2 = 1;
5763 let cofMax1 = 1;
5764 let Uses = [P0];
5765 let Defs = [P0, PC];
5766 let BaseOpcode = "J4_cmpeqp0";
5767 let isTaken = Inst{13};
5768 let isExtendable = 1;
5769 let opExtendable = 2;
5770 let isExtentSigned = 1;
5771 let opExtentBits = 11;
5772 let opExtentAlign = 2;
5773 }
5774 def J4_cmpeq_fp0_jump_t : HInst<
5775 (outs),
5776 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
5777 "p0 = cmp.eq($Rs16,$Rt16); if (!p0.new) jump:t $Ii",
5778 tc_855b0b61, TypeCJ>, Enc_6a5972, PredRel {
5779 let Inst{0-0} = 0b0;
5780 let Inst{13-12} = 0b10;
5781 let Inst{31-22} = 0b0001010001;
5782 let isPredicated = 1;
5783 let isPredicatedFalse = 1;
5784 let isTerminator = 1;
5785 let isBranch = 1;
5786 let isPredicatedNew = 1;
5787 let cofRelax1 = 1;
5788 let cofRelax2 = 1;
5789 let cofMax1 = 1;
5790 let Uses = [P0];
5791 let Defs = [P0, PC];
5792 let BaseOpcode = "J4_cmpeqp0";
5793 let isTaken = Inst{13};
5794 let isExtendable = 1;
5795 let opExtendable = 2;
5796 let isExtentSigned = 1;
5797 let opExtentBits = 11;
5798 let opExtentAlign = 2;
5799 }
5800 def J4_cmpeq_fp1_jump_nt : HInst<
5801 (outs),
5802 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
5803 "p1 = cmp.eq($Rs16,$Rt16); if (!p1.new) jump:nt $Ii",
5804 tc_855b0b61, TypeCJ>, Enc_6a5972, PredRel {
5805 let Inst{0-0} = 0b0;
5806 let Inst{13-12} = 0b01;
5807 let Inst{31-22} = 0b0001010001;
5808 let isPredicated = 1;
5809 let isPredicatedFalse = 1;
5810 let isTerminator = 1;
5811 let isBranch = 1;
5812 let isPredicatedNew = 1;
5813 let cofRelax1 = 1;
5814 let cofRelax2 = 1;
5815 let cofMax1 = 1;
5816 let Uses = [P1];
5817 let Defs = [P1, PC];
5818 let BaseOpcode = "J4_cmpeqp1";
5819 let isTaken = Inst{13};
5820 let isExtendable = 1;
5821 let opExtendable = 2;
5822 let isExtentSigned = 1;
5823 let opExtentBits = 11;
5824 let opExtentAlign = 2;
5825 }
5826 def J4_cmpeq_fp1_jump_t : HInst<
5827 (outs),
5828 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
5829 "p1 = cmp.eq($Rs16,$Rt16); if (!p1.new) jump:t $Ii",
5830 tc_855b0b61, TypeCJ>, Enc_6a5972, PredRel {
5831 let Inst{0-0} = 0b0;
5832 let Inst{13-12} = 0b11;
5833 let Inst{31-22} = 0b0001010001;
5834 let isPredicated = 1;
5835 let isPredicatedFalse = 1;
5836 let isTerminator = 1;
5837 let isBranch = 1;
5838 let isPredicatedNew = 1;
5839 let cofRelax1 = 1;
5840 let cofRelax2 = 1;
5841 let cofMax1 = 1;
5842 let Uses = [P1];
5843 let Defs = [P1, PC];
5844 let BaseOpcode = "J4_cmpeqp1";
5845 let isTaken = Inst{13};
5846 let isExtendable = 1;
5847 let opExtendable = 2;
5848 let isExtentSigned = 1;
5849 let opExtentBits = 11;
5850 let opExtentAlign = 2;
5851 }
5852 def J4_cmpeq_t_jumpnv_nt : HInst<
5853 (outs),
5854 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
5855 "if (cmp.eq($Ns8.new,$Rt32)) jump:nt $Ii",
5856 tc_51b866be, TypeNCJ>, Enc_c9a18e, PredRel {
5857 let Inst{0-0} = 0b0;
5858 let Inst{13-13} = 0b0;
5859 let Inst{19-19} = 0b0;
5860 let Inst{31-22} = 0b0010000000;
5861 let isPredicated = 1;
5862 let isTerminator = 1;
5863 let isBranch = 1;
5864 let isNewValue = 1;
5865 let cofMax1 = 1;
5866 let isRestrictNoSlot1Store = 1;
5867 let Defs = [PC];
5868 let BaseOpcode = "J4_cmpeqr";
5869 let isTaken = Inst{13};
5870 let isExtendable = 1;
5871 let opExtendable = 2;
5872 let isExtentSigned = 1;
5873 let opExtentBits = 11;
5874 let opExtentAlign = 2;
5875 let opNewValue = 0;
5876 }
5877 def J4_cmpeq_t_jumpnv_t : HInst<
5878 (outs),
5879 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
5880 "if (cmp.eq($Ns8.new,$Rt32)) jump:t $Ii",
5881 tc_51b866be, TypeNCJ>, Enc_c9a18e, PredRel {
5882 let Inst{0-0} = 0b0;
5883 let Inst{13-13} = 0b1;
5884 let Inst{19-19} = 0b0;
5885 let Inst{31-22} = 0b0010000000;
5886 let isPredicated = 1;
5887 let isTerminator = 1;
5888 let isBranch = 1;
5889 let isNewValue = 1;
5890 let cofMax1 = 1;
5891 let isRestrictNoSlot1Store = 1;
5892 let Defs = [PC];
5893 let BaseOpcode = "J4_cmpeqr";
5894 let isTaken = Inst{13};
5895 let isExtendable = 1;
5896 let opExtendable = 2;
5897 let isExtentSigned = 1;
5898 let opExtentBits = 11;
5899 let opExtentAlign = 2;
5900 let opNewValue = 0;
5901 }
5902 def J4_cmpeq_tp0_jump_nt : HInst<
5903 (outs),
5904 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
5905 "p0 = cmp.eq($Rs16,$Rt16); if (p0.new) jump:nt $Ii",
5906 tc_855b0b61, TypeCJ>, Enc_6a5972, PredRel {
5907 let Inst{0-0} = 0b0;
5908 let Inst{13-12} = 0b00;
5909 let Inst{31-22} = 0b0001010000;
5910 let isPredicated = 1;
5911 let isTerminator = 1;
5912 let isBranch = 1;
5913 let isPredicatedNew = 1;
5914 let cofRelax1 = 1;
5915 let cofRelax2 = 1;
5916 let cofMax1 = 1;
5917 let Uses = [P0];
5918 let Defs = [P0, PC];
5919 let BaseOpcode = "J4_cmpeqp0";
5920 let isTaken = Inst{13};
5921 let isExtendable = 1;
5922 let opExtendable = 2;
5923 let isExtentSigned = 1;
5924 let opExtentBits = 11;
5925 let opExtentAlign = 2;
5926 }
5927 def J4_cmpeq_tp0_jump_t : HInst<
5928 (outs),
5929 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
5930 "p0 = cmp.eq($Rs16,$Rt16); if (p0.new) jump:t $Ii",
5931 tc_855b0b61, TypeCJ>, Enc_6a5972, PredRel {
5932 let Inst{0-0} = 0b0;
5933 let Inst{13-12} = 0b10;
5934 let Inst{31-22} = 0b0001010000;
5935 let isPredicated = 1;
5936 let isTerminator = 1;
5937 let isBranch = 1;
5938 let isPredicatedNew = 1;
5939 let cofRelax1 = 1;
5940 let cofRelax2 = 1;
5941 let cofMax1 = 1;
5942 let Uses = [P0];
5943 let Defs = [P0, PC];
5944 let BaseOpcode = "J4_cmpeqp0";
5945 let isTaken = Inst{13};
5946 let isExtendable = 1;
5947 let opExtendable = 2;
5948 let isExtentSigned = 1;
5949 let opExtentBits = 11;
5950 let opExtentAlign = 2;
5951 }
5952 def J4_cmpeq_tp1_jump_nt : HInst<
5953 (outs),
5954 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
5955 "p1 = cmp.eq($Rs16,$Rt16); if (p1.new) jump:nt $Ii",
5956 tc_855b0b61, TypeCJ>, Enc_6a5972, PredRel {
5957 let Inst{0-0} = 0b0;
5958 let Inst{13-12} = 0b01;
5959 let Inst{31-22} = 0b0001010000;
5960 let isPredicated = 1;
5961 let isTerminator = 1;
5962 let isBranch = 1;
5963 let isPredicatedNew = 1;
5964 let cofRelax1 = 1;
5965 let cofRelax2 = 1;
5966 let cofMax1 = 1;
5967 let Uses = [P1];
5968 let Defs = [P1, PC];
5969 let BaseOpcode = "J4_cmpeqp1";
5970 let isTaken = Inst{13};
5971 let isExtendable = 1;
5972 let opExtendable = 2;
5973 let isExtentSigned = 1;
5974 let opExtentBits = 11;
5975 let opExtentAlign = 2;
5976 }
5977 def J4_cmpeq_tp1_jump_t : HInst<
5978 (outs),
5979 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
5980 "p1 = cmp.eq($Rs16,$Rt16); if (p1.new) jump:t $Ii",
5981 tc_855b0b61, TypeCJ>, Enc_6a5972, PredRel {
5982 let Inst{0-0} = 0b0;
5983 let Inst{13-12} = 0b11;
5984 let Inst{31-22} = 0b0001010000;
5985 let isPredicated = 1;
5986 let isTerminator = 1;
5987 let isBranch = 1;
5988 let isPredicatedNew = 1;
5989 let cofRelax1 = 1;
5990 let cofRelax2 = 1;
5991 let cofMax1 = 1;
5992 let Uses = [P1];
5993 let Defs = [P1, PC];
5994 let BaseOpcode = "J4_cmpeqp1";
5995 let isTaken = Inst{13};
5996 let isExtendable = 1;
5997 let opExtendable = 2;
5998 let isExtentSigned = 1;
5999 let opExtentBits = 11;
6000 let opExtentAlign = 2;
6001 }
6002 def J4_cmpeqi_f_jumpnv_nt : HInst<
6003 (outs),
6004 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
6005 "if (!cmp.eq($Ns8.new,#$II)) jump:nt $Ii",
6006 tc_bde7aaf4, TypeNCJ>, Enc_eafd18, PredRel {
6007 let Inst{0-0} = 0b0;
6008 let Inst{13-13} = 0b0;
6009 let Inst{19-19} = 0b0;
6010 let Inst{31-22} = 0b0010010001;
6011 let isPredicated = 1;
6012 let isPredicatedFalse = 1;
6013 let isTerminator = 1;
6014 let isBranch = 1;
6015 let isNewValue = 1;
6016 let cofMax1 = 1;
6017 let isRestrictNoSlot1Store = 1;
6018 let Defs = [PC];
6019 let BaseOpcode = "J4_cmpeqi";
6020 let isTaken = Inst{13};
6021 let isExtendable = 1;
6022 let opExtendable = 2;
6023 let isExtentSigned = 1;
6024 let opExtentBits = 11;
6025 let opExtentAlign = 2;
6026 let opNewValue = 0;
6027 }
6028 def J4_cmpeqi_f_jumpnv_t : HInst<
6029 (outs),
6030 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
6031 "if (!cmp.eq($Ns8.new,#$II)) jump:t $Ii",
6032 tc_bde7aaf4, TypeNCJ>, Enc_eafd18, PredRel {
6033 let Inst{0-0} = 0b0;
6034 let Inst{13-13} = 0b1;
6035 let Inst{19-19} = 0b0;
6036 let Inst{31-22} = 0b0010010001;
6037 let isPredicated = 1;
6038 let isPredicatedFalse = 1;
6039 let isTerminator = 1;
6040 let isBranch = 1;
6041 let isNewValue = 1;
6042 let cofMax1 = 1;
6043 let isRestrictNoSlot1Store = 1;
6044 let Defs = [PC];
6045 let BaseOpcode = "J4_cmpeqi";
6046 let isTaken = Inst{13};
6047 let isExtendable = 1;
6048 let opExtendable = 2;
6049 let isExtentSigned = 1;
6050 let opExtentBits = 11;
6051 let opExtentAlign = 2;
6052 let opNewValue = 0;
6053 }
6054 def J4_cmpeqi_fp0_jump_nt : HInst<
6055 (outs),
6056 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6057 "p0 = cmp.eq($Rs16,#$II); if (!p0.new) jump:nt $Ii",
6058 tc_99be14ca, TypeCJ>, Enc_14d27a, PredRel {
6059 let Inst{0-0} = 0b0;
6060 let Inst{13-13} = 0b0;
6061 let Inst{31-22} = 0b0001000001;
6062 let isPredicated = 1;
6063 let isPredicatedFalse = 1;
6064 let isTerminator = 1;
6065 let isBranch = 1;
6066 let isPredicatedNew = 1;
6067 let cofRelax1 = 1;
6068 let cofRelax2 = 1;
6069 let cofMax1 = 1;
6070 let Uses = [P0];
6071 let Defs = [P0, PC];
6072 let BaseOpcode = "J4_cmpeqip0";
6073 let isTaken = Inst{13};
6074 let isExtendable = 1;
6075 let opExtendable = 2;
6076 let isExtentSigned = 1;
6077 let opExtentBits = 11;
6078 let opExtentAlign = 2;
6079 }
6080 def J4_cmpeqi_fp0_jump_t : HInst<
6081 (outs),
6082 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6083 "p0 = cmp.eq($Rs16,#$II); if (!p0.new) jump:t $Ii",
6084 tc_99be14ca, TypeCJ>, Enc_14d27a, PredRel {
6085 let Inst{0-0} = 0b0;
6086 let Inst{13-13} = 0b1;
6087 let Inst{31-22} = 0b0001000001;
6088 let isPredicated = 1;
6089 let isPredicatedFalse = 1;
6090 let isTerminator = 1;
6091 let isBranch = 1;
6092 let isPredicatedNew = 1;
6093 let cofRelax1 = 1;
6094 let cofRelax2 = 1;
6095 let cofMax1 = 1;
6096 let Uses = [P0];
6097 let Defs = [P0, PC];
6098 let BaseOpcode = "J4_cmpeqip0";
6099 let isTaken = Inst{13};
6100 let isExtendable = 1;
6101 let opExtendable = 2;
6102 let isExtentSigned = 1;
6103 let opExtentBits = 11;
6104 let opExtentAlign = 2;
6105 }
6106 def J4_cmpeqi_fp1_jump_nt : HInst<
6107 (outs),
6108 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6109 "p1 = cmp.eq($Rs16,#$II); if (!p1.new) jump:nt $Ii",
6110 tc_99be14ca, TypeCJ>, Enc_14d27a, PredRel {
6111 let Inst{0-0} = 0b0;
6112 let Inst{13-13} = 0b0;
6113 let Inst{31-22} = 0b0001001001;
6114 let isPredicated = 1;
6115 let isPredicatedFalse = 1;
6116 let isTerminator = 1;
6117 let isBranch = 1;
6118 let isPredicatedNew = 1;
6119 let cofRelax1 = 1;
6120 let cofRelax2 = 1;
6121 let cofMax1 = 1;
6122 let Uses = [P1];
6123 let Defs = [P1, PC];
6124 let BaseOpcode = "J4_cmpeqip1";
6125 let isTaken = Inst{13};
6126 let isExtendable = 1;
6127 let opExtendable = 2;
6128 let isExtentSigned = 1;
6129 let opExtentBits = 11;
6130 let opExtentAlign = 2;
6131 }
6132 def J4_cmpeqi_fp1_jump_t : HInst<
6133 (outs),
6134 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6135 "p1 = cmp.eq($Rs16,#$II); if (!p1.new) jump:t $Ii",
6136 tc_99be14ca, TypeCJ>, Enc_14d27a, PredRel {
6137 let Inst{0-0} = 0b0;
6138 let Inst{13-13} = 0b1;
6139 let Inst{31-22} = 0b0001001001;
6140 let isPredicated = 1;
6141 let isPredicatedFalse = 1;
6142 let isTerminator = 1;
6143 let isBranch = 1;
6144 let isPredicatedNew = 1;
6145 let cofRelax1 = 1;
6146 let cofRelax2 = 1;
6147 let cofMax1 = 1;
6148 let Uses = [P1];
6149 let Defs = [P1, PC];
6150 let BaseOpcode = "J4_cmpeqip1";
6151 let isTaken = Inst{13};
6152 let isExtendable = 1;
6153 let opExtendable = 2;
6154 let isExtentSigned = 1;
6155 let opExtentBits = 11;
6156 let opExtentAlign = 2;
6157 }
6158 def J4_cmpeqi_t_jumpnv_nt : HInst<
6159 (outs),
6160 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
6161 "if (cmp.eq($Ns8.new,#$II)) jump:nt $Ii",
6162 tc_bde7aaf4, TypeNCJ>, Enc_eafd18, PredRel {
6163 let Inst{0-0} = 0b0;
6164 let Inst{13-13} = 0b0;
6165 let Inst{19-19} = 0b0;
6166 let Inst{31-22} = 0b0010010000;
6167 let isPredicated = 1;
6168 let isTerminator = 1;
6169 let isBranch = 1;
6170 let isNewValue = 1;
6171 let cofMax1 = 1;
6172 let isRestrictNoSlot1Store = 1;
6173 let Defs = [PC];
6174 let BaseOpcode = "J4_cmpeqi";
6175 let isTaken = Inst{13};
6176 let isExtendable = 1;
6177 let opExtendable = 2;
6178 let isExtentSigned = 1;
6179 let opExtentBits = 11;
6180 let opExtentAlign = 2;
6181 let opNewValue = 0;
6182 }
6183 def J4_cmpeqi_t_jumpnv_t : HInst<
6184 (outs),
6185 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
6186 "if (cmp.eq($Ns8.new,#$II)) jump:t $Ii",
6187 tc_bde7aaf4, TypeNCJ>, Enc_eafd18, PredRel {
6188 let Inst{0-0} = 0b0;
6189 let Inst{13-13} = 0b1;
6190 let Inst{19-19} = 0b0;
6191 let Inst{31-22} = 0b0010010000;
6192 let isPredicated = 1;
6193 let isTerminator = 1;
6194 let isBranch = 1;
6195 let isNewValue = 1;
6196 let cofMax1 = 1;
6197 let isRestrictNoSlot1Store = 1;
6198 let Defs = [PC];
6199 let BaseOpcode = "J4_cmpeqi";
6200 let isTaken = Inst{13};
6201 let isExtendable = 1;
6202 let opExtendable = 2;
6203 let isExtentSigned = 1;
6204 let opExtentBits = 11;
6205 let opExtentAlign = 2;
6206 let opNewValue = 0;
6207 }
6208 def J4_cmpeqi_tp0_jump_nt : HInst<
6209 (outs),
6210 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6211 "p0 = cmp.eq($Rs16,#$II); if (p0.new) jump:nt $Ii",
6212 tc_99be14ca, TypeCJ>, Enc_14d27a, PredRel {
6213 let Inst{0-0} = 0b0;
6214 let Inst{13-13} = 0b0;
6215 let Inst{31-22} = 0b0001000000;
6216 let isPredicated = 1;
6217 let isTerminator = 1;
6218 let isBranch = 1;
6219 let isPredicatedNew = 1;
6220 let cofRelax1 = 1;
6221 let cofRelax2 = 1;
6222 let cofMax1 = 1;
6223 let Uses = [P0];
6224 let Defs = [P0, PC];
6225 let BaseOpcode = "J4_cmpeqip0";
6226 let isTaken = Inst{13};
6227 let isExtendable = 1;
6228 let opExtendable = 2;
6229 let isExtentSigned = 1;
6230 let opExtentBits = 11;
6231 let opExtentAlign = 2;
6232 }
6233 def J4_cmpeqi_tp0_jump_t : HInst<
6234 (outs),
6235 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6236 "p0 = cmp.eq($Rs16,#$II); if (p0.new) jump:t $Ii",
6237 tc_99be14ca, TypeCJ>, Enc_14d27a, PredRel {
6238 let Inst{0-0} = 0b0;
6239 let Inst{13-13} = 0b1;
6240 let Inst{31-22} = 0b0001000000;
6241 let isPredicated = 1;
6242 let isTerminator = 1;
6243 let isBranch = 1;
6244 let isPredicatedNew = 1;
6245 let cofRelax1 = 1;
6246 let cofRelax2 = 1;
6247 let cofMax1 = 1;
6248 let Uses = [P0];
6249 let Defs = [P0, PC];
6250 let BaseOpcode = "J4_cmpeqip0";
6251 let isTaken = Inst{13};
6252 let isExtendable = 1;
6253 let opExtendable = 2;
6254 let isExtentSigned = 1;
6255 let opExtentBits = 11;
6256 let opExtentAlign = 2;
6257 }
6258 def J4_cmpeqi_tp1_jump_nt : HInst<
6259 (outs),
6260 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6261 "p1 = cmp.eq($Rs16,#$II); if (p1.new) jump:nt $Ii",
6262 tc_99be14ca, TypeCJ>, Enc_14d27a, PredRel {
6263 let Inst{0-0} = 0b0;
6264 let Inst{13-13} = 0b0;
6265 let Inst{31-22} = 0b0001001000;
6266 let isPredicated = 1;
6267 let isTerminator = 1;
6268 let isBranch = 1;
6269 let isPredicatedNew = 1;
6270 let cofRelax1 = 1;
6271 let cofRelax2 = 1;
6272 let cofMax1 = 1;
6273 let Uses = [P1];
6274 let Defs = [P1, PC];
6275 let BaseOpcode = "J4_cmpeqip1";
6276 let isTaken = Inst{13};
6277 let isExtendable = 1;
6278 let opExtendable = 2;
6279 let isExtentSigned = 1;
6280 let opExtentBits = 11;
6281 let opExtentAlign = 2;
6282 }
6283 def J4_cmpeqi_tp1_jump_t : HInst<
6284 (outs),
6285 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6286 "p1 = cmp.eq($Rs16,#$II); if (p1.new) jump:t $Ii",
6287 tc_99be14ca, TypeCJ>, Enc_14d27a, PredRel {
6288 let Inst{0-0} = 0b0;
6289 let Inst{13-13} = 0b1;
6290 let Inst{31-22} = 0b0001001000;
6291 let isPredicated = 1;
6292 let isTerminator = 1;
6293 let isBranch = 1;
6294 let isPredicatedNew = 1;
6295 let cofRelax1 = 1;
6296 let cofRelax2 = 1;
6297 let cofMax1 = 1;
6298 let Uses = [P1];
6299 let Defs = [P1, PC];
6300 let BaseOpcode = "J4_cmpeqip1";
6301 let isTaken = Inst{13};
6302 let isExtendable = 1;
6303 let opExtendable = 2;
6304 let isExtentSigned = 1;
6305 let opExtentBits = 11;
6306 let opExtentAlign = 2;
6307 }
6308 def J4_cmpeqn1_f_jumpnv_nt : HInst<
6309 (outs),
6310 (ins IntRegs:$Ns8, n1Const:$n1, b30_2Imm:$Ii),
6311 "if (!cmp.eq($Ns8.new,#$n1)) jump:nt $Ii",
6312 tc_bde7aaf4, TypeNCJ>, Enc_e90a15, PredRel {
6313 let Inst{0-0} = 0b0;
6314 let Inst{13-8} = 0b000000;
6315 let Inst{19-19} = 0b0;
6316 let Inst{31-22} = 0b0010011001;
6317 let isPredicated = 1;
6318 let isPredicatedFalse = 1;
6319 let isTerminator = 1;
6320 let isBranch = 1;
6321 let isNewValue = 1;
6322 let cofMax1 = 1;
6323 let isRestrictNoSlot1Store = 1;
6324 let Defs = [PC];
6325 let BaseOpcode = "J4_cmpeqn1r";
6326 let isTaken = Inst{13};
6327 let isExtendable = 1;
6328 let opExtendable = 2;
6329 let isExtentSigned = 1;
6330 let opExtentBits = 11;
6331 let opExtentAlign = 2;
6332 let opNewValue = 0;
6333 }
6334 def J4_cmpeqn1_f_jumpnv_t : HInst<
6335 (outs),
6336 (ins IntRegs:$Ns8, n1Const:$n1, b30_2Imm:$Ii),
6337 "if (!cmp.eq($Ns8.new,#$n1)) jump:t $Ii",
6338 tc_bde7aaf4, TypeNCJ>, Enc_5a18b3, PredRel {
6339 let Inst{0-0} = 0b0;
6340 let Inst{13-8} = 0b100000;
6341 let Inst{19-19} = 0b0;
6342 let Inst{31-22} = 0b0010011001;
6343 let isPredicated = 1;
6344 let isPredicatedFalse = 1;
6345 let isTerminator = 1;
6346 let isBranch = 1;
6347 let isNewValue = 1;
6348 let cofMax1 = 1;
6349 let isRestrictNoSlot1Store = 1;
6350 let Defs = [PC];
6351 let BaseOpcode = "J4_cmpeqn1r";
6352 let isTaken = Inst{13};
6353 let isExtendable = 1;
6354 let opExtendable = 2;
6355 let isExtentSigned = 1;
6356 let opExtentBits = 11;
6357 let opExtentAlign = 2;
6358 let opNewValue = 0;
6359 }
6360 def J4_cmpeqn1_fp0_jump_nt : HInst<
6361 (outs),
6362 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
6363 "p0 = cmp.eq($Rs16,#$n1); if (!p0.new) jump:nt $Ii",
6364 tc_99be14ca, TypeCJ>, Enc_1de724, PredRel {
6365 let Inst{0-0} = 0b0;
6366 let Inst{13-8} = 0b000000;
6367 let Inst{31-22} = 0b0001000111;
6368 let isPredicated = 1;
6369 let isPredicatedFalse = 1;
6370 let isTerminator = 1;
6371 let isBranch = 1;
6372 let isPredicatedNew = 1;
6373 let cofRelax1 = 1;
6374 let cofRelax2 = 1;
6375 let cofMax1 = 1;
6376 let Uses = [P0];
6377 let Defs = [P0, PC];
6378 let BaseOpcode = "J4_cmpeqn1p0";
6379 let isTaken = Inst{13};
6380 let isExtendable = 1;
6381 let opExtendable = 2;
6382 let isExtentSigned = 1;
6383 let opExtentBits = 11;
6384 let opExtentAlign = 2;
6385 }
6386 def J4_cmpeqn1_fp0_jump_t : HInst<
6387 (outs),
6388 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
6389 "p0 = cmp.eq($Rs16,#$n1); if (!p0.new) jump:t $Ii",
6390 tc_99be14ca, TypeCJ>, Enc_14640c, PredRel {
6391 let Inst{0-0} = 0b0;
6392 let Inst{13-8} = 0b100000;
6393 let Inst{31-22} = 0b0001000111;
6394 let isPredicated = 1;
6395 let isPredicatedFalse = 1;
6396 let isTerminator = 1;
6397 let isBranch = 1;
6398 let isPredicatedNew = 1;
6399 let cofRelax1 = 1;
6400 let cofRelax2 = 1;
6401 let cofMax1 = 1;
6402 let Uses = [P0];
6403 let Defs = [P0, PC];
6404 let BaseOpcode = "J4_cmpeqn1p0";
6405 let isTaken = Inst{13};
6406 let isExtendable = 1;
6407 let opExtendable = 2;
6408 let isExtentSigned = 1;
6409 let opExtentBits = 11;
6410 let opExtentAlign = 2;
6411 }
6412 def J4_cmpeqn1_fp1_jump_nt : HInst<
6413 (outs),
6414 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
6415 "p1 = cmp.eq($Rs16,#$n1); if (!p1.new) jump:nt $Ii",
6416 tc_99be14ca, TypeCJ>, Enc_668704, PredRel {
6417 let Inst{0-0} = 0b0;
6418 let Inst{13-8} = 0b000000;
6419 let Inst{31-22} = 0b0001001111;
6420 let isPredicated = 1;
6421 let isPredicatedFalse = 1;
6422 let isTerminator = 1;
6423 let isBranch = 1;
6424 let isPredicatedNew = 1;
6425 let cofRelax1 = 1;
6426 let cofRelax2 = 1;
6427 let cofMax1 = 1;
6428 let Uses = [P1];
6429 let Defs = [P1, PC];
6430 let BaseOpcode = "J4_cmpeqn1p1";
6431 let isTaken = Inst{13};
6432 let isExtendable = 1;
6433 let opExtendable = 2;
6434 let isExtentSigned = 1;
6435 let opExtentBits = 11;
6436 let opExtentAlign = 2;
6437 }
6438 def J4_cmpeqn1_fp1_jump_t : HInst<
6439 (outs),
6440 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
6441 "p1 = cmp.eq($Rs16,#$n1); if (!p1.new) jump:t $Ii",
6442 tc_99be14ca, TypeCJ>, Enc_800e04, PredRel {
6443 let Inst{0-0} = 0b0;
6444 let Inst{13-8} = 0b100000;
6445 let Inst{31-22} = 0b0001001111;
6446 let isPredicated = 1;
6447 let isPredicatedFalse = 1;
6448 let isTerminator = 1;
6449 let isBranch = 1;
6450 let isPredicatedNew = 1;
6451 let cofRelax1 = 1;
6452 let cofRelax2 = 1;
6453 let cofMax1 = 1;
6454 let Uses = [P1];
6455 let Defs = [P1, PC];
6456 let BaseOpcode = "J4_cmpeqn1p1";
6457 let isTaken = Inst{13};
6458 let isExtendable = 1;
6459 let opExtendable = 2;
6460 let isExtentSigned = 1;
6461 let opExtentBits = 11;
6462 let opExtentAlign = 2;
6463 }
6464 def J4_cmpeqn1_t_jumpnv_nt : HInst<
6465 (outs),
6466 (ins IntRegs:$Ns8, n1Const:$n1, b30_2Imm:$Ii),
6467 "if (cmp.eq($Ns8.new,#$n1)) jump:nt $Ii",
6468 tc_bde7aaf4, TypeNCJ>, Enc_4aca3a, PredRel {
6469 let Inst{0-0} = 0b0;
6470 let Inst{13-8} = 0b000000;
6471 let Inst{19-19} = 0b0;
6472 let Inst{31-22} = 0b0010011000;
6473 let isPredicated = 1;
6474 let isTerminator = 1;
6475 let isBranch = 1;
6476 let isNewValue = 1;
6477 let cofMax1 = 1;
6478 let isRestrictNoSlot1Store = 1;
6479 let Defs = [PC];
6480 let BaseOpcode = "J4_cmpeqn1r";
6481 let isTaken = Inst{13};
6482 let isExtendable = 1;
6483 let opExtendable = 2;
6484 let isExtentSigned = 1;
6485 let opExtentBits = 11;
6486 let opExtentAlign = 2;
6487 let opNewValue = 0;
6488 }
6489 def J4_cmpeqn1_t_jumpnv_t : HInst<
6490 (outs),
6491 (ins IntRegs:$Ns8, n1Const:$n1, b30_2Imm:$Ii),
6492 "if (cmp.eq($Ns8.new,#$n1)) jump:t $Ii",
6493 tc_bde7aaf4, TypeNCJ>, Enc_f7ea77, PredRel {
6494 let Inst{0-0} = 0b0;
6495 let Inst{13-8} = 0b100000;
6496 let Inst{19-19} = 0b0;
6497 let Inst{31-22} = 0b0010011000;
6498 let isPredicated = 1;
6499 let isTerminator = 1;
6500 let isBranch = 1;
6501 let isNewValue = 1;
6502 let cofMax1 = 1;
6503 let isRestrictNoSlot1Store = 1;
6504 let Defs = [PC];
6505 let BaseOpcode = "J4_cmpeqn1r";
6506 let isTaken = Inst{13};
6507 let isExtendable = 1;
6508 let opExtendable = 2;
6509 let isExtentSigned = 1;
6510 let opExtentBits = 11;
6511 let opExtentAlign = 2;
6512 let opNewValue = 0;
6513 }
6514 def J4_cmpeqn1_tp0_jump_nt : HInst<
6515 (outs),
6516 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
6517 "p0 = cmp.eq($Rs16,#$n1); if (p0.new) jump:nt $Ii",
6518 tc_99be14ca, TypeCJ>, Enc_405228, PredRel {
6519 let Inst{0-0} = 0b0;
6520 let Inst{13-8} = 0b000000;
6521 let Inst{31-22} = 0b0001000110;
6522 let isPredicated = 1;
6523 let isTerminator = 1;
6524 let isBranch = 1;
6525 let isPredicatedNew = 1;
6526 let cofRelax1 = 1;
6527 let cofRelax2 = 1;
6528 let cofMax1 = 1;
6529 let Uses = [P0];
6530 let Defs = [P0, PC];
6531 let BaseOpcode = "J4_cmpeqn1p0";
6532 let isTaken = Inst{13};
6533 let isExtendable = 1;
6534 let opExtendable = 2;
6535 let isExtentSigned = 1;
6536 let opExtentBits = 11;
6537 let opExtentAlign = 2;
6538 }
6539 def J4_cmpeqn1_tp0_jump_t : HInst<
6540 (outs),
6541 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
6542 "p0 = cmp.eq($Rs16,#$n1); if (p0.new) jump:t $Ii",
6543 tc_99be14ca, TypeCJ>, Enc_3a2484, PredRel {
6544 let Inst{0-0} = 0b0;
6545 let Inst{13-8} = 0b100000;
6546 let Inst{31-22} = 0b0001000110;
6547 let isPredicated = 1;
6548 let isTerminator = 1;
6549 let isBranch = 1;
6550 let isPredicatedNew = 1;
6551 let cofRelax1 = 1;
6552 let cofRelax2 = 1;
6553 let cofMax1 = 1;
6554 let Uses = [P0];
6555 let Defs = [P0, PC];
6556 let BaseOpcode = "J4_cmpeqn1p0";
6557 let isTaken = Inst{13};
6558 let isExtendable = 1;
6559 let opExtendable = 2;
6560 let isExtentSigned = 1;
6561 let opExtentBits = 11;
6562 let opExtentAlign = 2;
6563 }
6564 def J4_cmpeqn1_tp1_jump_nt : HInst<
6565 (outs),
6566 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
6567 "p1 = cmp.eq($Rs16,#$n1); if (p1.new) jump:nt $Ii",
6568 tc_99be14ca, TypeCJ>, Enc_736575, PredRel {
6569 let Inst{0-0} = 0b0;
6570 let Inst{13-8} = 0b000000;
6571 let Inst{31-22} = 0b0001001110;
6572 let isPredicated = 1;
6573 let isTerminator = 1;
6574 let isBranch = 1;
6575 let isPredicatedNew = 1;
6576 let cofRelax1 = 1;
6577 let cofRelax2 = 1;
6578 let cofMax1 = 1;
6579 let Uses = [P1];
6580 let Defs = [P1, PC];
6581 let BaseOpcode = "J4_cmpeqn1p1";
6582 let isTaken = Inst{13};
6583 let isExtendable = 1;
6584 let opExtendable = 2;
6585 let isExtentSigned = 1;
6586 let opExtentBits = 11;
6587 let opExtentAlign = 2;
6588 }
6589 def J4_cmpeqn1_tp1_jump_t : HInst<
6590 (outs),
6591 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
6592 "p1 = cmp.eq($Rs16,#$n1); if (p1.new) jump:t $Ii",
6593 tc_99be14ca, TypeCJ>, Enc_8e583a, PredRel {
6594 let Inst{0-0} = 0b0;
6595 let Inst{13-8} = 0b100000;
6596 let Inst{31-22} = 0b0001001110;
6597 let isPredicated = 1;
6598 let isTerminator = 1;
6599 let isBranch = 1;
6600 let isPredicatedNew = 1;
6601 let cofRelax1 = 1;
6602 let cofRelax2 = 1;
6603 let cofMax1 = 1;
6604 let Uses = [P1];
6605 let Defs = [P1, PC];
6606 let BaseOpcode = "J4_cmpeqn1p1";
6607 let isTaken = Inst{13};
6608 let isExtendable = 1;
6609 let opExtendable = 2;
6610 let isExtentSigned = 1;
6611 let opExtentBits = 11;
6612 let opExtentAlign = 2;
6613 }
6614 def J4_cmpgt_f_jumpnv_nt : HInst<
6615 (outs),
6616 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
6617 "if (!cmp.gt($Ns8.new,$Rt32)) jump:nt $Ii",
6618 tc_51b866be, TypeNCJ>, Enc_c9a18e, PredRel {
6619 let Inst{0-0} = 0b0;
6620 let Inst{13-13} = 0b0;
6621 let Inst{19-19} = 0b0;
6622 let Inst{31-22} = 0b0010000011;
6623 let isPredicated = 1;
6624 let isPredicatedFalse = 1;
6625 let isTerminator = 1;
6626 let isBranch = 1;
6627 let isNewValue = 1;
6628 let cofMax1 = 1;
6629 let isRestrictNoSlot1Store = 1;
6630 let Defs = [PC];
6631 let BaseOpcode = "J4_cmpgtr";
6632 let isTaken = Inst{13};
6633 let isExtendable = 1;
6634 let opExtendable = 2;
6635 let isExtentSigned = 1;
6636 let opExtentBits = 11;
6637 let opExtentAlign = 2;
6638 let opNewValue = 0;
6639 }
6640 def J4_cmpgt_f_jumpnv_t : HInst<
6641 (outs),
6642 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
6643 "if (!cmp.gt($Ns8.new,$Rt32)) jump:t $Ii",
6644 tc_51b866be, TypeNCJ>, Enc_c9a18e, PredRel {
6645 let Inst{0-0} = 0b0;
6646 let Inst{13-13} = 0b1;
6647 let Inst{19-19} = 0b0;
6648 let Inst{31-22} = 0b0010000011;
6649 let isPredicated = 1;
6650 let isPredicatedFalse = 1;
6651 let isTerminator = 1;
6652 let isBranch = 1;
6653 let isNewValue = 1;
6654 let cofMax1 = 1;
6655 let isRestrictNoSlot1Store = 1;
6656 let Defs = [PC];
6657 let BaseOpcode = "J4_cmpgtr";
6658 let isTaken = Inst{13};
6659 let isExtendable = 1;
6660 let opExtendable = 2;
6661 let isExtentSigned = 1;
6662 let opExtentBits = 11;
6663 let opExtentAlign = 2;
6664 let opNewValue = 0;
6665 }
6666 def J4_cmpgt_fp0_jump_nt : HInst<
6667 (outs),
6668 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6669 "p0 = cmp.gt($Rs16,$Rt16); if (!p0.new) jump:nt $Ii",
6670 tc_855b0b61, TypeCJ>, Enc_6a5972, PredRel {
6671 let Inst{0-0} = 0b0;
6672 let Inst{13-12} = 0b00;
6673 let Inst{31-22} = 0b0001010011;
6674 let isPredicated = 1;
6675 let isPredicatedFalse = 1;
6676 let isTerminator = 1;
6677 let isBranch = 1;
6678 let isPredicatedNew = 1;
6679 let cofRelax1 = 1;
6680 let cofRelax2 = 1;
6681 let cofMax1 = 1;
6682 let Uses = [P0];
6683 let Defs = [P0, PC];
6684 let BaseOpcode = "J4_cmpgtp0";
6685 let isTaken = Inst{13};
6686 let isExtendable = 1;
6687 let opExtendable = 2;
6688 let isExtentSigned = 1;
6689 let opExtentBits = 11;
6690 let opExtentAlign = 2;
6691 }
6692 def J4_cmpgt_fp0_jump_t : HInst<
6693 (outs),
6694 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6695 "p0 = cmp.gt($Rs16,$Rt16); if (!p0.new) jump:t $Ii",
6696 tc_855b0b61, TypeCJ>, Enc_6a5972, PredRel {
6697 let Inst{0-0} = 0b0;
6698 let Inst{13-12} = 0b10;
6699 let Inst{31-22} = 0b0001010011;
6700 let isPredicated = 1;
6701 let isPredicatedFalse = 1;
6702 let isTerminator = 1;
6703 let isBranch = 1;
6704 let isPredicatedNew = 1;
6705 let cofRelax1 = 1;
6706 let cofRelax2 = 1;
6707 let cofMax1 = 1;
6708 let Uses = [P0];
6709 let Defs = [P0, PC];
6710 let BaseOpcode = "J4_cmpgtp0";
6711 let isTaken = Inst{13};
6712 let isExtendable = 1;
6713 let opExtendable = 2;
6714 let isExtentSigned = 1;
6715 let opExtentBits = 11;
6716 let opExtentAlign = 2;
6717 }
6718 def J4_cmpgt_fp1_jump_nt : HInst<
6719 (outs),
6720 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6721 "p1 = cmp.gt($Rs16,$Rt16); if (!p1.new) jump:nt $Ii",
6722 tc_855b0b61, TypeCJ>, Enc_6a5972, PredRel {
6723 let Inst{0-0} = 0b0;
6724 let Inst{13-12} = 0b01;
6725 let Inst{31-22} = 0b0001010011;
6726 let isPredicated = 1;
6727 let isPredicatedFalse = 1;
6728 let isTerminator = 1;
6729 let isBranch = 1;
6730 let isPredicatedNew = 1;
6731 let cofRelax1 = 1;
6732 let cofRelax2 = 1;
6733 let cofMax1 = 1;
6734 let Uses = [P1];
6735 let Defs = [P1, PC];
6736 let BaseOpcode = "J4_cmpgtp1";
6737 let isTaken = Inst{13};
6738 let isExtendable = 1;
6739 let opExtendable = 2;
6740 let isExtentSigned = 1;
6741 let opExtentBits = 11;
6742 let opExtentAlign = 2;
6743 }
6744 def J4_cmpgt_fp1_jump_t : HInst<
6745 (outs),
6746 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6747 "p1 = cmp.gt($Rs16,$Rt16); if (!p1.new) jump:t $Ii",
6748 tc_855b0b61, TypeCJ>, Enc_6a5972, PredRel {
6749 let Inst{0-0} = 0b0;
6750 let Inst{13-12} = 0b11;
6751 let Inst{31-22} = 0b0001010011;
6752 let isPredicated = 1;
6753 let isPredicatedFalse = 1;
6754 let isTerminator = 1;
6755 let isBranch = 1;
6756 let isPredicatedNew = 1;
6757 let cofRelax1 = 1;
6758 let cofRelax2 = 1;
6759 let cofMax1 = 1;
6760 let Uses = [P1];
6761 let Defs = [P1, PC];
6762 let BaseOpcode = "J4_cmpgtp1";
6763 let isTaken = Inst{13};
6764 let isExtendable = 1;
6765 let opExtendable = 2;
6766 let isExtentSigned = 1;
6767 let opExtentBits = 11;
6768 let opExtentAlign = 2;
6769 }
6770 def J4_cmpgt_t_jumpnv_nt : HInst<
6771 (outs),
6772 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
6773 "if (cmp.gt($Ns8.new,$Rt32)) jump:nt $Ii",
6774 tc_51b866be, TypeNCJ>, Enc_c9a18e, PredRel {
6775 let Inst{0-0} = 0b0;
6776 let Inst{13-13} = 0b0;
6777 let Inst{19-19} = 0b0;
6778 let Inst{31-22} = 0b0010000010;
6779 let isPredicated = 1;
6780 let isTerminator = 1;
6781 let isBranch = 1;
6782 let isNewValue = 1;
6783 let cofMax1 = 1;
6784 let isRestrictNoSlot1Store = 1;
6785 let Defs = [PC];
6786 let BaseOpcode = "J4_cmpgtr";
6787 let isTaken = Inst{13};
6788 let isExtendable = 1;
6789 let opExtendable = 2;
6790 let isExtentSigned = 1;
6791 let opExtentBits = 11;
6792 let opExtentAlign = 2;
6793 let opNewValue = 0;
6794 }
6795 def J4_cmpgt_t_jumpnv_t : HInst<
6796 (outs),
6797 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
6798 "if (cmp.gt($Ns8.new,$Rt32)) jump:t $Ii",
6799 tc_51b866be, TypeNCJ>, Enc_c9a18e, PredRel {
6800 let Inst{0-0} = 0b0;
6801 let Inst{13-13} = 0b1;
6802 let Inst{19-19} = 0b0;
6803 let Inst{31-22} = 0b0010000010;
6804 let isPredicated = 1;
6805 let isTerminator = 1;
6806 let isBranch = 1;
6807 let isNewValue = 1;
6808 let cofMax1 = 1;
6809 let isRestrictNoSlot1Store = 1;
6810 let Defs = [PC];
6811 let BaseOpcode = "J4_cmpgtr";
6812 let isTaken = Inst{13};
6813 let isExtendable = 1;
6814 let opExtendable = 2;
6815 let isExtentSigned = 1;
6816 let opExtentBits = 11;
6817 let opExtentAlign = 2;
6818 let opNewValue = 0;
6819 }
6820 def J4_cmpgt_tp0_jump_nt : HInst<
6821 (outs),
6822 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6823 "p0 = cmp.gt($Rs16,$Rt16); if (p0.new) jump:nt $Ii",
6824 tc_855b0b61, TypeCJ>, Enc_6a5972, PredRel {
6825 let Inst{0-0} = 0b0;
6826 let Inst{13-12} = 0b00;
6827 let Inst{31-22} = 0b0001010010;
6828 let isPredicated = 1;
6829 let isTerminator = 1;
6830 let isBranch = 1;
6831 let isPredicatedNew = 1;
6832 let cofRelax1 = 1;
6833 let cofRelax2 = 1;
6834 let cofMax1 = 1;
6835 let Uses = [P0];
6836 let Defs = [P0, PC];
6837 let BaseOpcode = "J4_cmpgtp0";
6838 let isTaken = Inst{13};
6839 let isExtendable = 1;
6840 let opExtendable = 2;
6841 let isExtentSigned = 1;
6842 let opExtentBits = 11;
6843 let opExtentAlign = 2;
6844 }
6845 def J4_cmpgt_tp0_jump_t : HInst<
6846 (outs),
6847 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6848 "p0 = cmp.gt($Rs16,$Rt16); if (p0.new) jump:t $Ii",
6849 tc_855b0b61, TypeCJ>, Enc_6a5972, PredRel {
6850 let Inst{0-0} = 0b0;
6851 let Inst{13-12} = 0b10;
6852 let Inst{31-22} = 0b0001010010;
6853 let isPredicated = 1;
6854 let isTerminator = 1;
6855 let isBranch = 1;
6856 let isPredicatedNew = 1;
6857 let cofRelax1 = 1;
6858 let cofRelax2 = 1;
6859 let cofMax1 = 1;
6860 let Uses = [P0];
6861 let Defs = [P0, PC];
6862 let BaseOpcode = "J4_cmpgtp0";
6863 let isTaken = Inst{13};
6864 let isExtendable = 1;
6865 let opExtendable = 2;
6866 let isExtentSigned = 1;
6867 let opExtentBits = 11;
6868 let opExtentAlign = 2;
6869 }
6870 def J4_cmpgt_tp1_jump_nt : HInst<
6871 (outs),
6872 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6873 "p1 = cmp.gt($Rs16,$Rt16); if (p1.new) jump:nt $Ii",
6874 tc_855b0b61, TypeCJ>, Enc_6a5972, PredRel {
6875 let Inst{0-0} = 0b0;
6876 let Inst{13-12} = 0b01;
6877 let Inst{31-22} = 0b0001010010;
6878 let isPredicated = 1;
6879 let isTerminator = 1;
6880 let isBranch = 1;
6881 let isPredicatedNew = 1;
6882 let cofRelax1 = 1;
6883 let cofRelax2 = 1;
6884 let cofMax1 = 1;
6885 let Uses = [P1];
6886 let Defs = [P1, PC];
6887 let BaseOpcode = "J4_cmpgtp1";
6888 let isTaken = Inst{13};
6889 let isExtendable = 1;
6890 let opExtendable = 2;
6891 let isExtentSigned = 1;
6892 let opExtentBits = 11;
6893 let opExtentAlign = 2;
6894 }
6895 def J4_cmpgt_tp1_jump_t : HInst<
6896 (outs),
6897 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6898 "p1 = cmp.gt($Rs16,$Rt16); if (p1.new) jump:t $Ii",
6899 tc_855b0b61, TypeCJ>, Enc_6a5972, PredRel {
6900 let Inst{0-0} = 0b0;
6901 let Inst{13-12} = 0b11;
6902 let Inst{31-22} = 0b0001010010;
6903 let isPredicated = 1;
6904 let isTerminator = 1;
6905 let isBranch = 1;
6906 let isPredicatedNew = 1;
6907 let cofRelax1 = 1;
6908 let cofRelax2 = 1;
6909 let cofMax1 = 1;
6910 let Uses = [P1];
6911 let Defs = [P1, PC];
6912 let BaseOpcode = "J4_cmpgtp1";
6913 let isTaken = Inst{13};
6914 let isExtendable = 1;
6915 let opExtendable = 2;
6916 let isExtentSigned = 1;
6917 let opExtentBits = 11;
6918 let opExtentAlign = 2;
6919 }
6920 def J4_cmpgti_f_jumpnv_nt : HInst<
6921 (outs),
6922 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
6923 "if (!cmp.gt($Ns8.new,#$II)) jump:nt $Ii",
6924 tc_bde7aaf4, TypeNCJ>, Enc_eafd18, PredRel {
6925 let Inst{0-0} = 0b0;
6926 let Inst{13-13} = 0b0;
6927 let Inst{19-19} = 0b0;
6928 let Inst{31-22} = 0b0010010011;
6929 let isPredicated = 1;
6930 let isPredicatedFalse = 1;
6931 let isTerminator = 1;
6932 let isBranch = 1;
6933 let isNewValue = 1;
6934 let cofMax1 = 1;
6935 let isRestrictNoSlot1Store = 1;
6936 let Defs = [PC];
6937 let BaseOpcode = "J4_cmpgtir";
6938 let isTaken = Inst{13};
6939 let isExtendable = 1;
6940 let opExtendable = 2;
6941 let isExtentSigned = 1;
6942 let opExtentBits = 11;
6943 let opExtentAlign = 2;
6944 let opNewValue = 0;
6945 }
6946 def J4_cmpgti_f_jumpnv_t : HInst<
6947 (outs),
6948 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
6949 "if (!cmp.gt($Ns8.new,#$II)) jump:t $Ii",
6950 tc_bde7aaf4, TypeNCJ>, Enc_eafd18, PredRel {
6951 let Inst{0-0} = 0b0;
6952 let Inst{13-13} = 0b1;
6953 let Inst{19-19} = 0b0;
6954 let Inst{31-22} = 0b0010010011;
6955 let isPredicated = 1;
6956 let isPredicatedFalse = 1;
6957 let isTerminator = 1;
6958 let isBranch = 1;
6959 let isNewValue = 1;
6960 let cofMax1 = 1;
6961 let isRestrictNoSlot1Store = 1;
6962 let Defs = [PC];
6963 let BaseOpcode = "J4_cmpgtir";
6964 let isTaken = Inst{13};
6965 let isExtendable = 1;
6966 let opExtendable = 2;
6967 let isExtentSigned = 1;
6968 let opExtentBits = 11;
6969 let opExtentAlign = 2;
6970 let opNewValue = 0;
6971 }
6972 def J4_cmpgti_fp0_jump_nt : HInst<
6973 (outs),
6974 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6975 "p0 = cmp.gt($Rs16,#$II); if (!p0.new) jump:nt $Ii",
6976 tc_99be14ca, TypeCJ>, Enc_14d27a, PredRel {
6977 let Inst{0-0} = 0b0;
6978 let Inst{13-13} = 0b0;
6979 let Inst{31-22} = 0b0001000011;
6980 let isPredicated = 1;
6981 let isPredicatedFalse = 1;
6982 let isTerminator = 1;
6983 let isBranch = 1;
6984 let isPredicatedNew = 1;
6985 let cofRelax1 = 1;
6986 let cofRelax2 = 1;
6987 let cofMax1 = 1;
6988 let Uses = [P0];
6989 let Defs = [P0, PC];
6990 let BaseOpcode = "J4_cmpgtip0";
6991 let isTaken = Inst{13};
6992 let isExtendable = 1;
6993 let opExtendable = 2;
6994 let isExtentSigned = 1;
6995 let opExtentBits = 11;
6996 let opExtentAlign = 2;
6997 }
6998 def J4_cmpgti_fp0_jump_t : HInst<
6999 (outs),
7000 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7001 "p0 = cmp.gt($Rs16,#$II); if (!p0.new) jump:t $Ii",
7002 tc_99be14ca, TypeCJ>, Enc_14d27a, PredRel {
7003 let Inst{0-0} = 0b0;
7004 let Inst{13-13} = 0b1;
7005 let Inst{31-22} = 0b0001000011;
7006 let isPredicated = 1;
7007 let isPredicatedFalse = 1;
7008 let isTerminator = 1;
7009 let isBranch = 1;
7010 let isPredicatedNew = 1;
7011 let cofRelax1 = 1;
7012 let cofRelax2 = 1;
7013 let cofMax1 = 1;
7014 let Uses = [P0];
7015 let Defs = [P0, PC];
7016 let BaseOpcode = "J4_cmpgtip0";
7017 let isTaken = Inst{13};
7018 let isExtendable = 1;
7019 let opExtendable = 2;
7020 let isExtentSigned = 1;
7021 let opExtentBits = 11;
7022 let opExtentAlign = 2;
7023 }
7024 def J4_cmpgti_fp1_jump_nt : HInst<
7025 (outs),
7026 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7027 "p1 = cmp.gt($Rs16,#$II); if (!p1.new) jump:nt $Ii",
7028 tc_99be14ca, TypeCJ>, Enc_14d27a, PredRel {
7029 let Inst{0-0} = 0b0;
7030 let Inst{13-13} = 0b0;
7031 let Inst{31-22} = 0b0001001011;
7032 let isPredicated = 1;
7033 let isPredicatedFalse = 1;
7034 let isTerminator = 1;
7035 let isBranch = 1;
7036 let isPredicatedNew = 1;
7037 let cofRelax1 = 1;
7038 let cofRelax2 = 1;
7039 let cofMax1 = 1;
7040 let Uses = [P1];
7041 let Defs = [P1, PC];
7042 let BaseOpcode = "J4_cmpgtip1";
7043 let isTaken = Inst{13};
7044 let isExtendable = 1;
7045 let opExtendable = 2;
7046 let isExtentSigned = 1;
7047 let opExtentBits = 11;
7048 let opExtentAlign = 2;
7049 }
7050 def J4_cmpgti_fp1_jump_t : HInst<
7051 (outs),
7052 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7053 "p1 = cmp.gt($Rs16,#$II); if (!p1.new) jump:t $Ii",
7054 tc_99be14ca, TypeCJ>, Enc_14d27a, PredRel {
7055 let Inst{0-0} = 0b0;
7056 let Inst{13-13} = 0b1;
7057 let Inst{31-22} = 0b0001001011;
7058 let isPredicated = 1;
7059 let isPredicatedFalse = 1;
7060 let isTerminator = 1;
7061 let isBranch = 1;
7062 let isPredicatedNew = 1;
7063 let cofRelax1 = 1;
7064 let cofRelax2 = 1;
7065 let cofMax1 = 1;
7066 let Uses = [P1];
7067 let Defs = [P1, PC];
7068 let BaseOpcode = "J4_cmpgtip1";
7069 let isTaken = Inst{13};
7070 let isExtendable = 1;
7071 let opExtendable = 2;
7072 let isExtentSigned = 1;
7073 let opExtentBits = 11;
7074 let opExtentAlign = 2;
7075 }
7076 def J4_cmpgti_t_jumpnv_nt : HInst<
7077 (outs),
7078 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
7079 "if (cmp.gt($Ns8.new,#$II)) jump:nt $Ii",
7080 tc_bde7aaf4, TypeNCJ>, Enc_eafd18, PredRel {
7081 let Inst{0-0} = 0b0;
7082 let Inst{13-13} = 0b0;
7083 let Inst{19-19} = 0b0;
7084 let Inst{31-22} = 0b0010010010;
7085 let isPredicated = 1;
7086 let isTerminator = 1;
7087 let isBranch = 1;
7088 let isNewValue = 1;
7089 let cofMax1 = 1;
7090 let isRestrictNoSlot1Store = 1;
7091 let Defs = [PC];
7092 let BaseOpcode = "J4_cmpgtir";
7093 let isTaken = Inst{13};
7094 let isExtendable = 1;
7095 let opExtendable = 2;
7096 let isExtentSigned = 1;
7097 let opExtentBits = 11;
7098 let opExtentAlign = 2;
7099 let opNewValue = 0;
7100 }
7101 def J4_cmpgti_t_jumpnv_t : HInst<
7102 (outs),
7103 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
7104 "if (cmp.gt($Ns8.new,#$II)) jump:t $Ii",
7105 tc_bde7aaf4, TypeNCJ>, Enc_eafd18, PredRel {
7106 let Inst{0-0} = 0b0;
7107 let Inst{13-13} = 0b1;
7108 let Inst{19-19} = 0b0;
7109 let Inst{31-22} = 0b0010010010;
7110 let isPredicated = 1;
7111 let isTerminator = 1;
7112 let isBranch = 1;
7113 let isNewValue = 1;
7114 let cofMax1 = 1;
7115 let isRestrictNoSlot1Store = 1;
7116 let Defs = [PC];
7117 let BaseOpcode = "J4_cmpgtir";
7118 let isTaken = Inst{13};
7119 let isExtendable = 1;
7120 let opExtendable = 2;
7121 let isExtentSigned = 1;
7122 let opExtentBits = 11;
7123 let opExtentAlign = 2;
7124 let opNewValue = 0;
7125 }
7126 def J4_cmpgti_tp0_jump_nt : HInst<
7127 (outs),
7128 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7129 "p0 = cmp.gt($Rs16,#$II); if (p0.new) jump:nt $Ii",
7130 tc_99be14ca, TypeCJ>, Enc_14d27a, PredRel {
7131 let Inst{0-0} = 0b0;
7132 let Inst{13-13} = 0b0;
7133 let Inst{31-22} = 0b0001000010;
7134 let isPredicated = 1;
7135 let isTerminator = 1;
7136 let isBranch = 1;
7137 let isPredicatedNew = 1;
7138 let cofRelax1 = 1;
7139 let cofRelax2 = 1;
7140 let cofMax1 = 1;
7141 let Uses = [P0];
7142 let Defs = [P0, PC];
7143 let BaseOpcode = "J4_cmpgtip0";
7144 let isTaken = Inst{13};
7145 let isExtendable = 1;
7146 let opExtendable = 2;
7147 let isExtentSigned = 1;
7148 let opExtentBits = 11;
7149 let opExtentAlign = 2;
7150 }
7151 def J4_cmpgti_tp0_jump_t : HInst<
7152 (outs),
7153 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7154 "p0 = cmp.gt($Rs16,#$II); if (p0.new) jump:t $Ii",
7155 tc_99be14ca, TypeCJ>, Enc_14d27a, PredRel {
7156 let Inst{0-0} = 0b0;
7157 let Inst{13-13} = 0b1;
7158 let Inst{31-22} = 0b0001000010;
7159 let isPredicated = 1;
7160 let isTerminator = 1;
7161 let isBranch = 1;
7162 let isPredicatedNew = 1;
7163 let cofRelax1 = 1;
7164 let cofRelax2 = 1;
7165 let cofMax1 = 1;
7166 let Uses = [P0];
7167 let Defs = [P0, PC];
7168 let BaseOpcode = "J4_cmpgtip0";
7169 let isTaken = Inst{13};
7170 let isExtendable = 1;
7171 let opExtendable = 2;
7172 let isExtentSigned = 1;
7173 let opExtentBits = 11;
7174 let opExtentAlign = 2;
7175 }
7176 def J4_cmpgti_tp1_jump_nt : HInst<
7177 (outs),
7178 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7179 "p1 = cmp.gt($Rs16,#$II); if (p1.new) jump:nt $Ii",
7180 tc_99be14ca, TypeCJ>, Enc_14d27a, PredRel {
7181 let Inst{0-0} = 0b0;
7182 let Inst{13-13} = 0b0;
7183 let Inst{31-22} = 0b0001001010;
7184 let isPredicated = 1;
7185 let isTerminator = 1;
7186 let isBranch = 1;
7187 let isPredicatedNew = 1;
7188 let cofRelax1 = 1;
7189 let cofRelax2 = 1;
7190 let cofMax1 = 1;
7191 let Uses = [P1];
7192 let Defs = [P1, PC];
7193 let BaseOpcode = "J4_cmpgtip1";
7194 let isTaken = Inst{13};
7195 let isExtendable = 1;
7196 let opExtendable = 2;
7197 let isExtentSigned = 1;
7198 let opExtentBits = 11;
7199 let opExtentAlign = 2;
7200 }
7201 def J4_cmpgti_tp1_jump_t : HInst<
7202 (outs),
7203 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7204 "p1 = cmp.gt($Rs16,#$II); if (p1.new) jump:t $Ii",
7205 tc_99be14ca, TypeCJ>, Enc_14d27a, PredRel {
7206 let Inst{0-0} = 0b0;
7207 let Inst{13-13} = 0b1;
7208 let Inst{31-22} = 0b0001001010;
7209 let isPredicated = 1;
7210 let isTerminator = 1;
7211 let isBranch = 1;
7212 let isPredicatedNew = 1;
7213 let cofRelax1 = 1;
7214 let cofRelax2 = 1;
7215 let cofMax1 = 1;
7216 let Uses = [P1];
7217 let Defs = [P1, PC];
7218 let BaseOpcode = "J4_cmpgtip1";
7219 let isTaken = Inst{13};
7220 let isExtendable = 1;
7221 let opExtendable = 2;
7222 let isExtentSigned = 1;
7223 let opExtentBits = 11;
7224 let opExtentAlign = 2;
7225 }
7226 def J4_cmpgtn1_f_jumpnv_nt : HInst<
7227 (outs),
7228 (ins IntRegs:$Ns8, n1Const:$n1, b30_2Imm:$Ii),
7229 "if (!cmp.gt($Ns8.new,#$n1)) jump:nt $Ii",
7230 tc_bde7aaf4, TypeNCJ>, Enc_3694bd, PredRel {
7231 let Inst{0-0} = 0b0;
7232 let Inst{13-8} = 0b000000;
7233 let Inst{19-19} = 0b0;
7234 let Inst{31-22} = 0b0010011011;
7235 let isPredicated = 1;
7236 let isPredicatedFalse = 1;
7237 let isTerminator = 1;
7238 let isBranch = 1;
7239 let isNewValue = 1;
7240 let cofMax1 = 1;
7241 let isRestrictNoSlot1Store = 1;
7242 let Defs = [PC];
7243 let BaseOpcode = "J4_cmpgtn1r";
7244 let isTaken = Inst{13};
7245 let isExtendable = 1;
7246 let opExtendable = 2;
7247 let isExtentSigned = 1;
7248 let opExtentBits = 11;
7249 let opExtentAlign = 2;
7250 let opNewValue = 0;
7251 }
7252 def J4_cmpgtn1_f_jumpnv_t : HInst<
7253 (outs),
7254 (ins IntRegs:$Ns8, n1Const:$n1, b30_2Imm:$Ii),
7255 "if (!cmp.gt($Ns8.new,#$n1)) jump:t $Ii",
7256 tc_bde7aaf4, TypeNCJ>, Enc_a6853f, PredRel {
7257 let Inst{0-0} = 0b0;
7258 let Inst{13-8} = 0b100000;
7259 let Inst{19-19} = 0b0;
7260 let Inst{31-22} = 0b0010011011;
7261 let isPredicated = 1;
7262 let isPredicatedFalse = 1;
7263 let isTerminator = 1;
7264 let isBranch = 1;
7265 let isNewValue = 1;
7266 let cofMax1 = 1;
7267 let isRestrictNoSlot1Store = 1;
7268 let Defs = [PC];
7269 let BaseOpcode = "J4_cmpgtn1r";
7270 let isTaken = Inst{13};
7271 let isExtendable = 1;
7272 let opExtendable = 2;
7273 let isExtentSigned = 1;
7274 let opExtentBits = 11;
7275 let opExtentAlign = 2;
7276 let opNewValue = 0;
7277 }
7278 def J4_cmpgtn1_fp0_jump_nt : HInst<
7279 (outs),
7280 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
7281 "p0 = cmp.gt($Rs16,#$n1); if (!p0.new) jump:nt $Ii",
7282 tc_99be14ca, TypeCJ>, Enc_a42857, PredRel {
7283 let Inst{0-0} = 0b0;
7284 let Inst{13-8} = 0b000001;
7285 let Inst{31-22} = 0b0001000111;
7286 let isPredicated = 1;
7287 let isPredicatedFalse = 1;
7288 let isTerminator = 1;
7289 let isBranch = 1;
7290 let isPredicatedNew = 1;
7291 let cofRelax1 = 1;
7292 let cofRelax2 = 1;
7293 let cofMax1 = 1;
7294 let Uses = [P0];
7295 let Defs = [P0, PC];
7296 let BaseOpcode = "J4_cmpgtn1p0";
7297 let isTaken = Inst{13};
7298 let isExtendable = 1;
7299 let opExtendable = 2;
7300 let isExtentSigned = 1;
7301 let opExtentBits = 11;
7302 let opExtentAlign = 2;
7303 }
7304 def J4_cmpgtn1_fp0_jump_t : HInst<
7305 (outs),
7306 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
7307 "p0 = cmp.gt($Rs16,#$n1); if (!p0.new) jump:t $Ii",
7308 tc_99be14ca, TypeCJ>, Enc_f6fe0b, PredRel {
7309 let Inst{0-0} = 0b0;
7310 let Inst{13-8} = 0b100001;
7311 let Inst{31-22} = 0b0001000111;
7312 let isPredicated = 1;
7313 let isPredicatedFalse = 1;
7314 let isTerminator = 1;
7315 let isBranch = 1;
7316 let isPredicatedNew = 1;
7317 let cofRelax1 = 1;
7318 let cofRelax2 = 1;
7319 let cofMax1 = 1;
7320 let Uses = [P0];
7321 let Defs = [P0, PC];
7322 let BaseOpcode = "J4_cmpgtn1p0";
7323 let isTaken = Inst{13};
7324 let isExtendable = 1;
7325 let opExtendable = 2;
7326 let isExtentSigned = 1;
7327 let opExtentBits = 11;
7328 let opExtentAlign = 2;
7329 }
7330 def J4_cmpgtn1_fp1_jump_nt : HInst<
7331 (outs),
7332 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
7333 "p1 = cmp.gt($Rs16,#$n1); if (!p1.new) jump:nt $Ii",
7334 tc_99be14ca, TypeCJ>, Enc_3e3989, PredRel {
7335 let Inst{0-0} = 0b0;
7336 let Inst{13-8} = 0b000001;
7337 let Inst{31-22} = 0b0001001111;
7338 let isPredicated = 1;
7339 let isPredicatedFalse = 1;
7340 let isTerminator = 1;
7341 let isBranch = 1;
7342 let isPredicatedNew = 1;
7343 let cofRelax1 = 1;
7344 let cofRelax2 = 1;
7345 let cofMax1 = 1;
7346 let Uses = [P1];
7347 let Defs = [P1, PC];
7348 let BaseOpcode = "J4_cmpgtn1p1";
7349 let isTaken = Inst{13};
7350 let isExtendable = 1;
7351 let opExtendable = 2;
7352 let isExtentSigned = 1;
7353 let opExtentBits = 11;
7354 let opExtentAlign = 2;
7355 }
7356 def J4_cmpgtn1_fp1_jump_t : HInst<
7357 (outs),
7358 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
7359 "p1 = cmp.gt($Rs16,#$n1); if (!p1.new) jump:t $Ii",
7360 tc_99be14ca, TypeCJ>, Enc_b909d2, PredRel {
7361 let Inst{0-0} = 0b0;
7362 let Inst{13-8} = 0b100001;
7363 let Inst{31-22} = 0b0001001111;
7364 let isPredicated = 1;
7365 let isPredicatedFalse = 1;
7366 let isTerminator = 1;
7367 let isBranch = 1;
7368 let isPredicatedNew = 1;
7369 let cofRelax1 = 1;
7370 let cofRelax2 = 1;
7371 let cofMax1 = 1;
7372 let Uses = [P1];
7373 let Defs = [P1, PC];
7374 let BaseOpcode = "J4_cmpgtn1p1";
7375 let isTaken = Inst{13};
7376 let isExtendable = 1;
7377 let opExtendable = 2;
7378 let isExtentSigned = 1;
7379 let opExtentBits = 11;
7380 let opExtentAlign = 2;
7381 }
7382 def J4_cmpgtn1_t_jumpnv_nt : HInst<
7383 (outs),
7384 (ins IntRegs:$Ns8, n1Const:$n1, b30_2Imm:$Ii),
7385 "if (cmp.gt($Ns8.new,#$n1)) jump:nt $Ii",
7386 tc_bde7aaf4, TypeNCJ>, Enc_f82302, PredRel {
7387 let Inst{0-0} = 0b0;
7388 let Inst{13-8} = 0b000000;
7389 let Inst{19-19} = 0b0;
7390 let Inst{31-22} = 0b0010011010;
7391 let isPredicated = 1;
7392 let isTerminator = 1;
7393 let isBranch = 1;
7394 let isNewValue = 1;
7395 let cofMax1 = 1;
7396 let isRestrictNoSlot1Store = 1;
7397 let Defs = [PC];
7398 let BaseOpcode = "J4_cmpgtn1r";
7399 let isTaken = Inst{13};
7400 let isExtendable = 1;
7401 let opExtendable = 2;
7402 let isExtentSigned = 1;
7403 let opExtentBits = 11;
7404 let opExtentAlign = 2;
7405 let opNewValue = 0;
7406 }
7407 def J4_cmpgtn1_t_jumpnv_t : HInst<
7408 (outs),
7409 (ins IntRegs:$Ns8, n1Const:$n1, b30_2Imm:$Ii),
7410 "if (cmp.gt($Ns8.new,#$n1)) jump:t $Ii",
7411 tc_bde7aaf4, TypeNCJ>, Enc_6413b6, PredRel {
7412 let Inst{0-0} = 0b0;
7413 let Inst{13-8} = 0b100000;
7414 let Inst{19-19} = 0b0;
7415 let Inst{31-22} = 0b0010011010;
7416 let isPredicated = 1;
7417 let isTerminator = 1;
7418 let isBranch = 1;
7419 let isNewValue = 1;
7420 let cofMax1 = 1;
7421 let isRestrictNoSlot1Store = 1;
7422 let Defs = [PC];
7423 let BaseOpcode = "J4_cmpgtn1r";
7424 let isTaken = Inst{13};
7425 let isExtendable = 1;
7426 let opExtendable = 2;
7427 let isExtentSigned = 1;
7428 let opExtentBits = 11;
7429 let opExtentAlign = 2;
7430 let opNewValue = 0;
7431 }
7432 def J4_cmpgtn1_tp0_jump_nt : HInst<
7433 (outs),
7434 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
7435 "p0 = cmp.gt($Rs16,#$n1); if (p0.new) jump:nt $Ii",
7436 tc_99be14ca, TypeCJ>, Enc_b78edd, PredRel {
7437 let Inst{0-0} = 0b0;
7438 let Inst{13-8} = 0b000001;
7439 let Inst{31-22} = 0b0001000110;
7440 let isPredicated = 1;
7441 let isTerminator = 1;
7442 let isBranch = 1;
7443 let isPredicatedNew = 1;
7444 let cofRelax1 = 1;
7445 let cofRelax2 = 1;
7446 let cofMax1 = 1;
7447 let Uses = [P0];
7448 let Defs = [P0, PC];
7449 let BaseOpcode = "J4_cmpgtn1p0";
7450 let isTaken = Inst{13};
7451 let isExtendable = 1;
7452 let opExtendable = 2;
7453 let isExtentSigned = 1;
7454 let opExtentBits = 11;
7455 let opExtentAlign = 2;
7456 }
7457 def J4_cmpgtn1_tp0_jump_t : HInst<
7458 (outs),
7459 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
7460 "p0 = cmp.gt($Rs16,#$n1); if (p0.new) jump:t $Ii",
7461 tc_99be14ca, TypeCJ>, Enc_041d7b, PredRel {
7462 let Inst{0-0} = 0b0;
7463 let Inst{13-8} = 0b100001;
7464 let Inst{31-22} = 0b0001000110;
7465 let isPredicated = 1;
7466 let isTerminator = 1;
7467 let isBranch = 1;
7468 let isPredicatedNew = 1;
7469 let cofRelax1 = 1;
7470 let cofRelax2 = 1;
7471 let cofMax1 = 1;
7472 let Uses = [P0];
7473 let Defs = [P0, PC];
7474 let BaseOpcode = "J4_cmpgtn1p0";
7475 let isTaken = Inst{13};
7476 let isExtendable = 1;
7477 let opExtendable = 2;
7478 let isExtentSigned = 1;
7479 let opExtentBits = 11;
7480 let opExtentAlign = 2;
7481 }
7482 def J4_cmpgtn1_tp1_jump_nt : HInst<
7483 (outs),
7484 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
7485 "p1 = cmp.gt($Rs16,#$n1); if (p1.new) jump:nt $Ii",
7486 tc_99be14ca, TypeCJ>, Enc_b1e1fb, PredRel {
7487 let Inst{0-0} = 0b0;
7488 let Inst{13-8} = 0b000001;
7489 let Inst{31-22} = 0b0001001110;
7490 let isPredicated = 1;
7491 let isTerminator = 1;
7492 let isBranch = 1;
7493 let isPredicatedNew = 1;
7494 let cofRelax1 = 1;
7495 let cofRelax2 = 1;
7496 let cofMax1 = 1;
7497 let Uses = [P1];
7498 let Defs = [P1, PC];
7499 let BaseOpcode = "J4_cmpgtn1p1";
7500 let isTaken = Inst{13};
7501 let isExtendable = 1;
7502 let opExtendable = 2;
7503 let isExtentSigned = 1;
7504 let opExtentBits = 11;
7505 let opExtentAlign = 2;
7506 }
7507 def J4_cmpgtn1_tp1_jump_t : HInst<
7508 (outs),
7509 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
7510 "p1 = cmp.gt($Rs16,#$n1); if (p1.new) jump:t $Ii",
7511 tc_99be14ca, TypeCJ>, Enc_178717, PredRel {
7512 let Inst{0-0} = 0b0;
7513 let Inst{13-8} = 0b100001;
7514 let Inst{31-22} = 0b0001001110;
7515 let isPredicated = 1;
7516 let isTerminator = 1;
7517 let isBranch = 1;
7518 let isPredicatedNew = 1;
7519 let cofRelax1 = 1;
7520 let cofRelax2 = 1;
7521 let cofMax1 = 1;
7522 let Uses = [P1];
7523 let Defs = [P1, PC];
7524 let BaseOpcode = "J4_cmpgtn1p1";
7525 let isTaken = Inst{13};
7526 let isExtendable = 1;
7527 let opExtendable = 2;
7528 let isExtentSigned = 1;
7529 let opExtentBits = 11;
7530 let opExtentAlign = 2;
7531 }
7532 def J4_cmpgtu_f_jumpnv_nt : HInst<
7533 (outs),
7534 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
7535 "if (!cmp.gtu($Ns8.new,$Rt32)) jump:nt $Ii",
7536 tc_51b866be, TypeNCJ>, Enc_c9a18e, PredRel {
7537 let Inst{0-0} = 0b0;
7538 let Inst{13-13} = 0b0;
7539 let Inst{19-19} = 0b0;
7540 let Inst{31-22} = 0b0010000101;
7541 let isPredicated = 1;
7542 let isPredicatedFalse = 1;
7543 let isTerminator = 1;
7544 let isBranch = 1;
7545 let isNewValue = 1;
7546 let cofMax1 = 1;
7547 let isRestrictNoSlot1Store = 1;
7548 let Defs = [PC];
7549 let BaseOpcode = "J4_cmpgtur";
7550 let isTaken = Inst{13};
7551 let isExtendable = 1;
7552 let opExtendable = 2;
7553 let isExtentSigned = 1;
7554 let opExtentBits = 11;
7555 let opExtentAlign = 2;
7556 let opNewValue = 0;
7557 }
7558 def J4_cmpgtu_f_jumpnv_t : HInst<
7559 (outs),
7560 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
7561 "if (!cmp.gtu($Ns8.new,$Rt32)) jump:t $Ii",
7562 tc_51b866be, TypeNCJ>, Enc_c9a18e, PredRel {
7563 let Inst{0-0} = 0b0;
7564 let Inst{13-13} = 0b1;
7565 let Inst{19-19} = 0b0;
7566 let Inst{31-22} = 0b0010000101;
7567 let isPredicated = 1;
7568 let isPredicatedFalse = 1;
7569 let isTerminator = 1;
7570 let isBranch = 1;
7571 let isNewValue = 1;
7572 let cofMax1 = 1;
7573 let isRestrictNoSlot1Store = 1;
7574 let Defs = [PC];
7575 let BaseOpcode = "J4_cmpgtur";
7576 let isTaken = Inst{13};
7577 let isExtendable = 1;
7578 let opExtendable = 2;
7579 let isExtentSigned = 1;
7580 let opExtentBits = 11;
7581 let opExtentAlign = 2;
7582 let opNewValue = 0;
7583 }
7584 def J4_cmpgtu_fp0_jump_nt : HInst<
7585 (outs),
7586 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7587 "p0 = cmp.gtu($Rs16,$Rt16); if (!p0.new) jump:nt $Ii",
7588 tc_855b0b61, TypeCJ>, Enc_6a5972, PredRel {
7589 let Inst{0-0} = 0b0;
7590 let Inst{13-12} = 0b00;
7591 let Inst{31-22} = 0b0001010101;
7592 let isPredicated = 1;
7593 let isPredicatedFalse = 1;
7594 let isTerminator = 1;
7595 let isBranch = 1;
7596 let isPredicatedNew = 1;
7597 let cofRelax1 = 1;
7598 let cofRelax2 = 1;
7599 let cofMax1 = 1;
7600 let Uses = [P0];
7601 let Defs = [P0, PC];
7602 let BaseOpcode = "J4_cmpgtup0";
7603 let isTaken = Inst{13};
7604 let isExtendable = 1;
7605 let opExtendable = 2;
7606 let isExtentSigned = 1;
7607 let opExtentBits = 11;
7608 let opExtentAlign = 2;
7609 }
7610 def J4_cmpgtu_fp0_jump_t : HInst<
7611 (outs),
7612 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7613 "p0 = cmp.gtu($Rs16,$Rt16); if (!p0.new) jump:t $Ii",
7614 tc_855b0b61, TypeCJ>, Enc_6a5972, PredRel {
7615 let Inst{0-0} = 0b0;
7616 let Inst{13-12} = 0b10;
7617 let Inst{31-22} = 0b0001010101;
7618 let isPredicated = 1;
7619 let isPredicatedFalse = 1;
7620 let isTerminator = 1;
7621 let isBranch = 1;
7622 let isPredicatedNew = 1;
7623 let cofRelax1 = 1;
7624 let cofRelax2 = 1;
7625 let cofMax1 = 1;
7626 let Uses = [P0];
7627 let Defs = [P0, PC];
7628 let BaseOpcode = "J4_cmpgtup0";
7629 let isTaken = Inst{13};
7630 let isExtendable = 1;
7631 let opExtendable = 2;
7632 let isExtentSigned = 1;
7633 let opExtentBits = 11;
7634 let opExtentAlign = 2;
7635 }
7636 def J4_cmpgtu_fp1_jump_nt : HInst<
7637 (outs),
7638 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7639 "p1 = cmp.gtu($Rs16,$Rt16); if (!p1.new) jump:nt $Ii",
7640 tc_855b0b61, TypeCJ>, Enc_6a5972, PredRel {
7641 let Inst{0-0} = 0b0;
7642 let Inst{13-12} = 0b01;
7643 let Inst{31-22} = 0b0001010101;
7644 let isPredicated = 1;
7645 let isPredicatedFalse = 1;
7646 let isTerminator = 1;
7647 let isBranch = 1;
7648 let isPredicatedNew = 1;
7649 let cofRelax1 = 1;
7650 let cofRelax2 = 1;
7651 let cofMax1 = 1;
7652 let Uses = [P1];
7653 let Defs = [P1, PC];
7654 let BaseOpcode = "J4_cmpgtup1";
7655 let isTaken = Inst{13};
7656 let isExtendable = 1;
7657 let opExtendable = 2;
7658 let isExtentSigned = 1;
7659 let opExtentBits = 11;
7660 let opExtentAlign = 2;
7661 }
7662 def J4_cmpgtu_fp1_jump_t : HInst<
7663 (outs),
7664 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7665 "p1 = cmp.gtu($Rs16,$Rt16); if (!p1.new) jump:t $Ii",
7666 tc_855b0b61, TypeCJ>, Enc_6a5972, PredRel {
7667 let Inst{0-0} = 0b0;
7668 let Inst{13-12} = 0b11;
7669 let Inst{31-22} = 0b0001010101;
7670 let isPredicated = 1;
7671 let isPredicatedFalse = 1;
7672 let isTerminator = 1;
7673 let isBranch = 1;
7674 let isPredicatedNew = 1;
7675 let cofRelax1 = 1;
7676 let cofRelax2 = 1;
7677 let cofMax1 = 1;
7678 let Uses = [P1];
7679 let Defs = [P1, PC];
7680 let BaseOpcode = "J4_cmpgtup1";
7681 let isTaken = Inst{13};
7682 let isExtendable = 1;
7683 let opExtendable = 2;
7684 let isExtentSigned = 1;
7685 let opExtentBits = 11;
7686 let opExtentAlign = 2;
7687 }
7688 def J4_cmpgtu_t_jumpnv_nt : HInst<
7689 (outs),
7690 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
7691 "if (cmp.gtu($Ns8.new,$Rt32)) jump:nt $Ii",
7692 tc_51b866be, TypeNCJ>, Enc_c9a18e, PredRel {
7693 let Inst{0-0} = 0b0;
7694 let Inst{13-13} = 0b0;
7695 let Inst{19-19} = 0b0;
7696 let Inst{31-22} = 0b0010000100;
7697 let isPredicated = 1;
7698 let isTerminator = 1;
7699 let isBranch = 1;
7700 let isNewValue = 1;
7701 let cofMax1 = 1;
7702 let isRestrictNoSlot1Store = 1;
7703 let Defs = [PC];
7704 let BaseOpcode = "J4_cmpgtur";
7705 let isTaken = Inst{13};
7706 let isExtendable = 1;
7707 let opExtendable = 2;
7708 let isExtentSigned = 1;
7709 let opExtentBits = 11;
7710 let opExtentAlign = 2;
7711 let opNewValue = 0;
7712 }
7713 def J4_cmpgtu_t_jumpnv_t : HInst<
7714 (outs),
7715 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
7716 "if (cmp.gtu($Ns8.new,$Rt32)) jump:t $Ii",
7717 tc_51b866be, TypeNCJ>, Enc_c9a18e, PredRel {
7718 let Inst{0-0} = 0b0;
7719 let Inst{13-13} = 0b1;
7720 let Inst{19-19} = 0b0;
7721 let Inst{31-22} = 0b0010000100;
7722 let isPredicated = 1;
7723 let isTerminator = 1;
7724 let isBranch = 1;
7725 let isNewValue = 1;
7726 let cofMax1 = 1;
7727 let isRestrictNoSlot1Store = 1;
7728 let Defs = [PC];
7729 let BaseOpcode = "J4_cmpgtur";
7730 let isTaken = Inst{13};
7731 let isExtendable = 1;
7732 let opExtendable = 2;
7733 let isExtentSigned = 1;
7734 let opExtentBits = 11;
7735 let opExtentAlign = 2;
7736 let opNewValue = 0;
7737 }
7738 def J4_cmpgtu_tp0_jump_nt : HInst<
7739 (outs),
7740 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7741 "p0 = cmp.gtu($Rs16,$Rt16); if (p0.new) jump:nt $Ii",
7742 tc_855b0b61, TypeCJ>, Enc_6a5972, PredRel {
7743 let Inst{0-0} = 0b0;
7744 let Inst{13-12} = 0b00;
7745 let Inst{31-22} = 0b0001010100;
7746 let isPredicated = 1;
7747 let isTerminator = 1;
7748 let isBranch = 1;
7749 let isPredicatedNew = 1;
7750 let cofRelax1 = 1;
7751 let cofRelax2 = 1;
7752 let cofMax1 = 1;
7753 let Uses = [P0];
7754 let Defs = [P0, PC];
7755 let BaseOpcode = "J4_cmpgtup0";
7756 let isTaken = Inst{13};
7757 let isExtendable = 1;
7758 let opExtendable = 2;
7759 let isExtentSigned = 1;
7760 let opExtentBits = 11;
7761 let opExtentAlign = 2;
7762 }
7763 def J4_cmpgtu_tp0_jump_t : HInst<
7764 (outs),
7765 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7766 "p0 = cmp.gtu($Rs16,$Rt16); if (p0.new) jump:t $Ii",
7767 tc_855b0b61, TypeCJ>, Enc_6a5972, PredRel {
7768 let Inst{0-0} = 0b0;
7769 let Inst{13-12} = 0b10;
7770 let Inst{31-22} = 0b0001010100;
7771 let isPredicated = 1;
7772 let isTerminator = 1;
7773 let isBranch = 1;
7774 let isPredicatedNew = 1;
7775 let cofRelax1 = 1;
7776 let cofRelax2 = 1;
7777 let cofMax1 = 1;
7778 let Uses = [P0];
7779 let Defs = [P0, PC];
7780 let BaseOpcode = "J4_cmpgtup0";
7781 let isTaken = Inst{13};
7782 let isExtendable = 1;
7783 let opExtendable = 2;
7784 let isExtentSigned = 1;
7785 let opExtentBits = 11;
7786 let opExtentAlign = 2;
7787 }
7788 def J4_cmpgtu_tp1_jump_nt : HInst<
7789 (outs),
7790 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7791 "p1 = cmp.gtu($Rs16,$Rt16); if (p1.new) jump:nt $Ii",
7792 tc_855b0b61, TypeCJ>, Enc_6a5972, PredRel {
7793 let Inst{0-0} = 0b0;
7794 let Inst{13-12} = 0b01;
7795 let Inst{31-22} = 0b0001010100;
7796 let isPredicated = 1;
7797 let isTerminator = 1;
7798 let isBranch = 1;
7799 let isPredicatedNew = 1;
7800 let cofRelax1 = 1;
7801 let cofRelax2 = 1;
7802 let cofMax1 = 1;
7803 let Uses = [P1];
7804 let Defs = [P1, PC];
7805 let BaseOpcode = "J4_cmpgtup1";
7806 let isTaken = Inst{13};
7807 let isExtendable = 1;
7808 let opExtendable = 2;
7809 let isExtentSigned = 1;
7810 let opExtentBits = 11;
7811 let opExtentAlign = 2;
7812 }
7813 def J4_cmpgtu_tp1_jump_t : HInst<
7814 (outs),
7815 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7816 "p1 = cmp.gtu($Rs16,$Rt16); if (p1.new) jump:t $Ii",
7817 tc_855b0b61, TypeCJ>, Enc_6a5972, PredRel {
7818 let Inst{0-0} = 0b0;
7819 let Inst{13-12} = 0b11;
7820 let Inst{31-22} = 0b0001010100;
7821 let isPredicated = 1;
7822 let isTerminator = 1;
7823 let isBranch = 1;
7824 let isPredicatedNew = 1;
7825 let cofRelax1 = 1;
7826 let cofRelax2 = 1;
7827 let cofMax1 = 1;
7828 let Uses = [P1];
7829 let Defs = [P1, PC];
7830 let BaseOpcode = "J4_cmpgtup1";
7831 let isTaken = Inst{13};
7832 let isExtendable = 1;
7833 let opExtendable = 2;
7834 let isExtentSigned = 1;
7835 let opExtentBits = 11;
7836 let opExtentAlign = 2;
7837 }
7838 def J4_cmpgtui_f_jumpnv_nt : HInst<
7839 (outs),
7840 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
7841 "if (!cmp.gtu($Ns8.new,#$II)) jump:nt $Ii",
7842 tc_bde7aaf4, TypeNCJ>, Enc_eafd18, PredRel {
7843 let Inst{0-0} = 0b0;
7844 let Inst{13-13} = 0b0;
7845 let Inst{19-19} = 0b0;
7846 let Inst{31-22} = 0b0010010101;
7847 let isPredicated = 1;
7848 let isPredicatedFalse = 1;
7849 let isTerminator = 1;
7850 let isBranch = 1;
7851 let isNewValue = 1;
7852 let cofMax1 = 1;
7853 let isRestrictNoSlot1Store = 1;
7854 let Defs = [PC];
7855 let BaseOpcode = "J4_cmpgtuir";
7856 let isTaken = Inst{13};
7857 let isExtendable = 1;
7858 let opExtendable = 2;
7859 let isExtentSigned = 1;
7860 let opExtentBits = 11;
7861 let opExtentAlign = 2;
7862 let opNewValue = 0;
7863 }
7864 def J4_cmpgtui_f_jumpnv_t : HInst<
7865 (outs),
7866 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
7867 "if (!cmp.gtu($Ns8.new,#$II)) jump:t $Ii",
7868 tc_bde7aaf4, TypeNCJ>, Enc_eafd18, PredRel {
7869 let Inst{0-0} = 0b0;
7870 let Inst{13-13} = 0b1;
7871 let Inst{19-19} = 0b0;
7872 let Inst{31-22} = 0b0010010101;
7873 let isPredicated = 1;
7874 let isPredicatedFalse = 1;
7875 let isTerminator = 1;
7876 let isBranch = 1;
7877 let isNewValue = 1;
7878 let cofMax1 = 1;
7879 let isRestrictNoSlot1Store = 1;
7880 let Defs = [PC];
7881 let BaseOpcode = "J4_cmpgtuir";
7882 let isTaken = Inst{13};
7883 let isExtendable = 1;
7884 let opExtendable = 2;
7885 let isExtentSigned = 1;
7886 let opExtentBits = 11;
7887 let opExtentAlign = 2;
7888 let opNewValue = 0;
7889 }
7890 def J4_cmpgtui_fp0_jump_nt : HInst<
7891 (outs),
7892 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7893 "p0 = cmp.gtu($Rs16,#$II); if (!p0.new) jump:nt $Ii",
7894 tc_99be14ca, TypeCJ>, Enc_14d27a, PredRel {
7895 let Inst{0-0} = 0b0;
7896 let Inst{13-13} = 0b0;
7897 let Inst{31-22} = 0b0001000101;
7898 let isPredicated = 1;
7899 let isPredicatedFalse = 1;
7900 let isTerminator = 1;
7901 let isBranch = 1;
7902 let isPredicatedNew = 1;
7903 let cofRelax1 = 1;
7904 let cofRelax2 = 1;
7905 let cofMax1 = 1;
7906 let Uses = [P0];
7907 let Defs = [P0, PC];
7908 let BaseOpcode = "J4_cmpgtuip0";
7909 let isTaken = Inst{13};
7910 let isExtendable = 1;
7911 let opExtendable = 2;
7912 let isExtentSigned = 1;
7913 let opExtentBits = 11;
7914 let opExtentAlign = 2;
7915 }
7916 def J4_cmpgtui_fp0_jump_t : HInst<
7917 (outs),
7918 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7919 "p0 = cmp.gtu($Rs16,#$II); if (!p0.new) jump:t $Ii",
7920 tc_99be14ca, TypeCJ>, Enc_14d27a, PredRel {
7921 let Inst{0-0} = 0b0;
7922 let Inst{13-13} = 0b1;
7923 let Inst{31-22} = 0b0001000101;
7924 let isPredicated = 1;
7925 let isPredicatedFalse = 1;
7926 let isTerminator = 1;
7927 let isBranch = 1;
7928 let isPredicatedNew = 1;
7929 let cofRelax1 = 1;
7930 let cofRelax2 = 1;
7931 let cofMax1 = 1;
7932 let Uses = [P0];
7933 let Defs = [P0, PC];
7934 let BaseOpcode = "J4_cmpgtuip0";
7935 let isTaken = Inst{13};
7936 let isExtendable = 1;
7937 let opExtendable = 2;
7938 let isExtentSigned = 1;
7939 let opExtentBits = 11;
7940 let opExtentAlign = 2;
7941 }
7942 def J4_cmpgtui_fp1_jump_nt : HInst<
7943 (outs),
7944 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7945 "p1 = cmp.gtu($Rs16,#$II); if (!p1.new) jump:nt $Ii",
7946 tc_99be14ca, TypeCJ>, Enc_14d27a, PredRel {
7947 let Inst{0-0} = 0b0;
7948 let Inst{13-13} = 0b0;
7949 let Inst{31-22} = 0b0001001101;
7950 let isPredicated = 1;
7951 let isPredicatedFalse = 1;
7952 let isTerminator = 1;
7953 let isBranch = 1;
7954 let isPredicatedNew = 1;
7955 let cofRelax1 = 1;
7956 let cofRelax2 = 1;
7957 let cofMax1 = 1;
7958 let Uses = [P1];
7959 let Defs = [P1, PC];
7960 let BaseOpcode = "J4_cmpgtuip1";
7961 let isTaken = Inst{13};
7962 let isExtendable = 1;
7963 let opExtendable = 2;
7964 let isExtentSigned = 1;
7965 let opExtentBits = 11;
7966 let opExtentAlign = 2;
7967 }
7968 def J4_cmpgtui_fp1_jump_t : HInst<
7969 (outs),
7970 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7971 "p1 = cmp.gtu($Rs16,#$II); if (!p1.new) jump:t $Ii",
7972 tc_99be14ca, TypeCJ>, Enc_14d27a, PredRel {
7973 let Inst{0-0} = 0b0;
7974 let Inst{13-13} = 0b1;
7975 let Inst{31-22} = 0b0001001101;
7976 let isPredicated = 1;
7977 let isPredicatedFalse = 1;
7978 let isTerminator = 1;
7979 let isBranch = 1;
7980 let isPredicatedNew = 1;
7981 let cofRelax1 = 1;
7982 let cofRelax2 = 1;
7983 let cofMax1 = 1;
7984 let Uses = [P1];
7985 let Defs = [P1, PC];
7986 let BaseOpcode = "J4_cmpgtuip1";
7987 let isTaken = Inst{13};
7988 let isExtendable = 1;
7989 let opExtendable = 2;
7990 let isExtentSigned = 1;
7991 let opExtentBits = 11;
7992 let opExtentAlign = 2;
7993 }
7994 def J4_cmpgtui_t_jumpnv_nt : HInst<
7995 (outs),
7996 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
7997 "if (cmp.gtu($Ns8.new,#$II)) jump:nt $Ii",
7998 tc_bde7aaf4, TypeNCJ>, Enc_eafd18, PredRel {
7999 let Inst{0-0} = 0b0;
8000 let Inst{13-13} = 0b0;
8001 let Inst{19-19} = 0b0;
8002 let Inst{31-22} = 0b0010010100;
8003 let isPredicated = 1;
8004 let isTerminator = 1;
8005 let isBranch = 1;
8006 let isNewValue = 1;
8007 let cofMax1 = 1;
8008 let isRestrictNoSlot1Store = 1;
8009 let Defs = [PC];
8010 let BaseOpcode = "J4_cmpgtuir";
8011 let isTaken = Inst{13};
8012 let isExtendable = 1;
8013 let opExtendable = 2;
8014 let isExtentSigned = 1;
8015 let opExtentBits = 11;
8016 let opExtentAlign = 2;
8017 let opNewValue = 0;
8018 }
8019 def J4_cmpgtui_t_jumpnv_t : HInst<
8020 (outs),
8021 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
8022 "if (cmp.gtu($Ns8.new,#$II)) jump:t $Ii",
8023 tc_bde7aaf4, TypeNCJ>, Enc_eafd18, PredRel {
8024 let Inst{0-0} = 0b0;
8025 let Inst{13-13} = 0b1;
8026 let Inst{19-19} = 0b0;
8027 let Inst{31-22} = 0b0010010100;
8028 let isPredicated = 1;
8029 let isTerminator = 1;
8030 let isBranch = 1;
8031 let isNewValue = 1;
8032 let cofMax1 = 1;
8033 let isRestrictNoSlot1Store = 1;
8034 let Defs = [PC];
8035 let BaseOpcode = "J4_cmpgtuir";
8036 let isTaken = Inst{13};
8037 let isExtendable = 1;
8038 let opExtendable = 2;
8039 let isExtentSigned = 1;
8040 let opExtentBits = 11;
8041 let opExtentAlign = 2;
8042 let opNewValue = 0;
8043 }
8044 def J4_cmpgtui_tp0_jump_nt : HInst<
8045 (outs),
8046 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
8047 "p0 = cmp.gtu($Rs16,#$II); if (p0.new) jump:nt $Ii",
8048 tc_99be14ca, TypeCJ>, Enc_14d27a, PredRel {
8049 let Inst{0-0} = 0b0;
8050 let Inst{13-13} = 0b0;
8051 let Inst{31-22} = 0b0001000100;
8052 let isPredicated = 1;
8053 let isTerminator = 1;
8054 let isBranch = 1;
8055 let isPredicatedNew = 1;
8056 let cofRelax1 = 1;
8057 let cofRelax2 = 1;
8058 let cofMax1 = 1;
8059 let Uses = [P0];
8060 let Defs = [P0, PC];
8061 let BaseOpcode = "J4_cmpgtuip0";
8062 let isTaken = Inst{13};
8063 let isExtendable = 1;
8064 let opExtendable = 2;
8065 let isExtentSigned = 1;
8066 let opExtentBits = 11;
8067 let opExtentAlign = 2;
8068 }
8069 def J4_cmpgtui_tp0_jump_t : HInst<
8070 (outs),
8071 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
8072 "p0 = cmp.gtu($Rs16,#$II); if (p0.new) jump:t $Ii",
8073 tc_99be14ca, TypeCJ>, Enc_14d27a, PredRel {
8074 let Inst{0-0} = 0b0;
8075 let Inst{13-13} = 0b1;
8076 let Inst{31-22} = 0b0001000100;
8077 let isPredicated = 1;
8078 let isTerminator = 1;
8079 let isBranch = 1;
8080 let isPredicatedNew = 1;
8081 let cofRelax1 = 1;
8082 let cofRelax2 = 1;
8083 let cofMax1 = 1;
8084 let Uses = [P0];
8085 let Defs = [P0, PC];
8086 let BaseOpcode = "J4_cmpgtuip0";
8087 let isTaken = Inst{13};
8088 let isExtendable = 1;
8089 let opExtendable = 2;
8090 let isExtentSigned = 1;
8091 let opExtentBits = 11;
8092 let opExtentAlign = 2;
8093 }
8094 def J4_cmpgtui_tp1_jump_nt : HInst<
8095 (outs),
8096 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
8097 "p1 = cmp.gtu($Rs16,#$II); if (p1.new) jump:nt $Ii",
8098 tc_99be14ca, TypeCJ>, Enc_14d27a, PredRel {
8099 let Inst{0-0} = 0b0;
8100 let Inst{13-13} = 0b0;
8101 let Inst{31-22} = 0b0001001100;
8102 let isPredicated = 1;
8103 let isTerminator = 1;
8104 let isBranch = 1;
8105 let isPredicatedNew = 1;
8106 let cofRelax1 = 1;
8107 let cofRelax2 = 1;
8108 let cofMax1 = 1;
8109 let Uses = [P1];
8110 let Defs = [P1, PC];
8111 let BaseOpcode = "J4_cmpgtuip1";
8112 let isTaken = Inst{13};
8113 let isExtendable = 1;
8114 let opExtendable = 2;
8115 let isExtentSigned = 1;
8116 let opExtentBits = 11;
8117 let opExtentAlign = 2;
8118 }
8119 def J4_cmpgtui_tp1_jump_t : HInst<
8120 (outs),
8121 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
8122 "p1 = cmp.gtu($Rs16,#$II); if (p1.new) jump:t $Ii",
8123 tc_99be14ca, TypeCJ>, Enc_14d27a, PredRel {
8124 let Inst{0-0} = 0b0;
8125 let Inst{13-13} = 0b1;
8126 let Inst{31-22} = 0b0001001100;
8127 let isPredicated = 1;
8128 let isTerminator = 1;
8129 let isBranch = 1;
8130 let isPredicatedNew = 1;
8131 let cofRelax1 = 1;
8132 let cofRelax2 = 1;
8133 let cofMax1 = 1;
8134 let Uses = [P1];
8135 let Defs = [P1, PC];
8136 let BaseOpcode = "J4_cmpgtuip1";
8137 let isTaken = Inst{13};
8138 let isExtendable = 1;
8139 let opExtendable = 2;
8140 let isExtentSigned = 1;
8141 let opExtentBits = 11;
8142 let opExtentAlign = 2;
8143 }
8144 def J4_cmplt_f_jumpnv_nt : HInst<
8145 (outs),
8146 (ins IntRegs:$Rt32, IntRegs:$Ns8, b30_2Imm:$Ii),
8147 "if (!cmp.gt($Rt32,$Ns8.new)) jump:nt $Ii",
8148 tc_5eb851fc, TypeNCJ>, Enc_5de85f, PredRel {
8149 let Inst{0-0} = 0b0;
8150 let Inst{13-13} = 0b0;
8151 let Inst{19-19} = 0b0;
8152 let Inst{31-22} = 0b0010000111;
8153 let isPredicated = 1;
8154 let isPredicatedFalse = 1;
8155 let isTerminator = 1;
8156 let isBranch = 1;
8157 let isNewValue = 1;
8158 let cofMax1 = 1;
8159 let isRestrictNoSlot1Store = 1;
8160 let Defs = [PC];
8161 let BaseOpcode = "J4_cmpltr";
8162 let isTaken = Inst{13};
8163 let isExtendable = 1;
8164 let opExtendable = 2;
8165 let isExtentSigned = 1;
8166 let opExtentBits = 11;
8167 let opExtentAlign = 2;
8168 let opNewValue = 1;
8169 }
8170 def J4_cmplt_f_jumpnv_t : HInst<
8171 (outs),
8172 (ins IntRegs:$Rt32, IntRegs:$Ns8, b30_2Imm:$Ii),
8173 "if (!cmp.gt($Rt32,$Ns8.new)) jump:t $Ii",
8174 tc_5eb851fc, TypeNCJ>, Enc_5de85f, PredRel {
8175 let Inst{0-0} = 0b0;
8176 let Inst{13-13} = 0b1;
8177 let Inst{19-19} = 0b0;
8178 let Inst{31-22} = 0b0010000111;
8179 let isPredicated = 1;
8180 let isPredicatedFalse = 1;
8181 let isTerminator = 1;
8182 let isBranch = 1;
8183 let isNewValue = 1;
8184 let cofMax1 = 1;
8185 let isRestrictNoSlot1Store = 1;
8186 let Defs = [PC];
8187 let BaseOpcode = "J4_cmpltr";
8188 let isTaken = Inst{13};
8189 let isExtendable = 1;
8190 let opExtendable = 2;
8191 let isExtentSigned = 1;
8192 let opExtentBits = 11;
8193 let opExtentAlign = 2;
8194 let opNewValue = 1;
8195 }
8196 def J4_cmplt_t_jumpnv_nt : HInst<
8197 (outs),
8198 (ins IntRegs:$Rt32, IntRegs:$Ns8, b30_2Imm:$Ii),
8199 "if (cmp.gt($Rt32,$Ns8.new)) jump:nt $Ii",
8200 tc_5eb851fc, TypeNCJ>, Enc_5de85f, PredRel {
8201 let Inst{0-0} = 0b0;
8202 let Inst{13-13} = 0b0;
8203 let Inst{19-19} = 0b0;
8204 let Inst{31-22} = 0b0010000110;
8205 let isPredicated = 1;
8206 let isTerminator = 1;
8207 let isBranch = 1;
8208 let isNewValue = 1;
8209 let cofMax1 = 1;
8210 let isRestrictNoSlot1Store = 1;
8211 let Defs = [PC];
8212 let BaseOpcode = "J4_cmpltr";
8213 let isTaken = Inst{13};
8214 let isExtendable = 1;
8215 let opExtendable = 2;
8216 let isExtentSigned = 1;
8217 let opExtentBits = 11;
8218 let opExtentAlign = 2;
8219 let opNewValue = 1;
8220 }
8221 def J4_cmplt_t_jumpnv_t : HInst<
8222 (outs),
8223 (ins IntRegs:$Rt32, IntRegs:$Ns8, b30_2Imm:$Ii),
8224 "if (cmp.gt($Rt32,$Ns8.new)) jump:t $Ii",
8225 tc_5eb851fc, TypeNCJ>, Enc_5de85f, PredRel {
8226 let Inst{0-0} = 0b0;
8227 let Inst{13-13} = 0b1;
8228 let Inst{19-19} = 0b0;
8229 let Inst{31-22} = 0b0010000110;
8230 let isPredicated = 1;
8231 let isTerminator = 1;
8232 let isBranch = 1;
8233 let isNewValue = 1;
8234 let cofMax1 = 1;
8235 let isRestrictNoSlot1Store = 1;
8236 let Defs = [PC];
8237 let BaseOpcode = "J4_cmpltr";
8238 let isTaken = Inst{13};
8239 let isExtendable = 1;
8240 let opExtendable = 2;
8241 let isExtentSigned = 1;
8242 let opExtentBits = 11;
8243 let opExtentAlign = 2;
8244 let opNewValue = 1;
8245 }
8246 def J4_cmpltu_f_jumpnv_nt : HInst<
8247 (outs),
8248 (ins IntRegs:$Rt32, IntRegs:$Ns8, b30_2Imm:$Ii),
8249 "if (!cmp.gtu($Rt32,$Ns8.new)) jump:nt $Ii",
8250 tc_5eb851fc, TypeNCJ>, Enc_5de85f, PredRel {
8251 let Inst{0-0} = 0b0;
8252 let Inst{13-13} = 0b0;
8253 let Inst{19-19} = 0b0;
8254 let Inst{31-22} = 0b0010001001;
8255 let isPredicated = 1;
8256 let isPredicatedFalse = 1;
8257 let isTerminator = 1;
8258 let isBranch = 1;
8259 let isNewValue = 1;
8260 let cofMax1 = 1;
8261 let isRestrictNoSlot1Store = 1;
8262 let Defs = [PC];
8263 let BaseOpcode = "J4_cmpltur";
8264 let isTaken = Inst{13};
8265 let isExtendable = 1;
8266 let opExtendable = 2;
8267 let isExtentSigned = 1;
8268 let opExtentBits = 11;
8269 let opExtentAlign = 2;
8270 let opNewValue = 1;
8271 }
8272 def J4_cmpltu_f_jumpnv_t : HInst<
8273 (outs),
8274 (ins IntRegs:$Rt32, IntRegs:$Ns8, b30_2Imm:$Ii),
8275 "if (!cmp.gtu($Rt32,$Ns8.new)) jump:t $Ii",
8276 tc_5eb851fc, TypeNCJ>, Enc_5de85f, PredRel {
8277 let Inst{0-0} = 0b0;
8278 let Inst{13-13} = 0b1;
8279 let Inst{19-19} = 0b0;
8280 let Inst{31-22} = 0b0010001001;
8281 let isPredicated = 1;
8282 let isPredicatedFalse = 1;
8283 let isTerminator = 1;
8284 let isBranch = 1;
8285 let isNewValue = 1;
8286 let cofMax1 = 1;
8287 let isRestrictNoSlot1Store = 1;
8288 let Defs = [PC];
8289 let BaseOpcode = "J4_cmpltur";
8290 let isTaken = Inst{13};
8291 let isExtendable = 1;
8292 let opExtendable = 2;
8293 let isExtentSigned = 1;
8294 let opExtentBits = 11;
8295 let opExtentAlign = 2;
8296 let opNewValue = 1;
8297 }
8298 def J4_cmpltu_t_jumpnv_nt : HInst<
8299 (outs),
8300 (ins IntRegs:$Rt32, IntRegs:$Ns8, b30_2Imm:$Ii),
8301 "if (cmp.gtu($Rt32,$Ns8.new)) jump:nt $Ii",
8302 tc_5eb851fc, TypeNCJ>, Enc_5de85f, PredRel {
8303 let Inst{0-0} = 0b0;
8304 let Inst{13-13} = 0b0;
8305 let Inst{19-19} = 0b0;
8306 let Inst{31-22} = 0b0010001000;
8307 let isPredicated = 1;
8308 let isTerminator = 1;
8309 let isBranch = 1;
8310 let isNewValue = 1;
8311 let cofMax1 = 1;
8312 let isRestrictNoSlot1Store = 1;
8313 let Defs = [PC];
8314 let BaseOpcode = "J4_cmpltur";
8315 let isTaken = Inst{13};
8316 let isExtendable = 1;
8317 let opExtendable = 2;
8318 let isExtentSigned = 1;
8319 let opExtentBits = 11;
8320 let opExtentAlign = 2;
8321 let opNewValue = 1;
8322 }
8323 def J4_cmpltu_t_jumpnv_t : HInst<
8324 (outs),
8325 (ins IntRegs:$Rt32, IntRegs:$Ns8, b30_2Imm:$Ii),
8326 "if (cmp.gtu($Rt32,$Ns8.new)) jump:t $Ii",
8327 tc_5eb851fc, TypeNCJ>, Enc_5de85f, PredRel {
8328 let Inst{0-0} = 0b0;
8329 let Inst{13-13} = 0b1;
8330 let Inst{19-19} = 0b0;
8331 let Inst{31-22} = 0b0010001000;
8332 let isPredicated = 1;
8333 let isTerminator = 1;
8334 let isBranch = 1;
8335 let isNewValue = 1;
8336 let cofMax1 = 1;
8337 let isRestrictNoSlot1Store = 1;
8338 let Defs = [PC];
8339 let BaseOpcode = "J4_cmpltur";
8340 let isTaken = Inst{13};
8341 let isExtendable = 1;
8342 let opExtendable = 2;
8343 let isExtentSigned = 1;
8344 let opExtentBits = 11;
8345 let opExtentAlign = 2;
8346 let opNewValue = 1;
8347 }
8348 def J4_hintjumpr : HInst<
8349 (outs),
8350 (ins IntRegs:$Rs32),
8351 "hintjr($Rs32)",
8352 tc_9faf76ae, TypeJ>, Enc_ecbcc8 {
8353 let Inst{13-0} = 0b00000000000000;
8354 let Inst{31-21} = 0b01010010101;
8355 let isTerminator = 1;
8356 let isIndirectBranch = 1;
8357 let isBranch = 1;
8358 let cofMax1 = 1;
8359 }
8360 def J4_jumpseti : HInst<
8361 (outs GeneralSubRegs:$Rd16),
8362 (ins u6_0Imm:$II, b30_2Imm:$Ii),
8363 "$Rd16 = #$II ; jump $Ii",
8364 tc_49eb22c8, TypeCJ>, Enc_9e4c3f {
8365 let Inst{0-0} = 0b0;
8366 let Inst{31-22} = 0b0001011000;
8367 let hasNewValue = 1;
8368 let opNewValue = 0;
8369 let isTerminator = 1;
8370 let isBranch = 1;
8371 let cofRelax2 = 1;
8372 let cofMax1 = 1;
8373 let Defs = [PC];
8374 let isExtendable = 1;
8375 let opExtendable = 2;
8376 let isExtentSigned = 1;
8377 let opExtentBits = 11;
8378 let opExtentAlign = 2;
8379 }
8380 def J4_jumpsetr : HInst<
8381 (outs GeneralSubRegs:$Rd16),
8382 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8383 "$Rd16 = $Rs16 ; jump $Ii",
8384 tc_49eb22c8, TypeCJ>, Enc_66bce1 {
8385 let Inst{0-0} = 0b0;
8386 let Inst{13-12} = 0b00;
8387 let Inst{31-22} = 0b0001011100;
8388 let hasNewValue = 1;
8389 let opNewValue = 0;
8390 let isTerminator = 1;
8391 let isBranch = 1;
8392 let cofRelax2 = 1;
8393 let cofMax1 = 1;
8394 let Defs = [PC];
8395 let isExtendable = 1;
8396 let opExtendable = 2;
8397 let isExtentSigned = 1;
8398 let opExtentBits = 11;
8399 let opExtentAlign = 2;
8400 }
8401 def J4_tstbit0_f_jumpnv_nt : HInst<
8402 (outs),
8403 (ins IntRegs:$Ns8, b30_2Imm:$Ii),
8404 "if (!tstbit($Ns8.new,#0)) jump:nt $Ii",
8405 tc_746baa8e, TypeNCJ>, Enc_69d63b {
8406 let Inst{0-0} = 0b0;
8407 let Inst{13-8} = 0b000000;
8408 let Inst{19-19} = 0b0;
8409 let Inst{31-22} = 0b0010010111;
8410 let isPredicated = 1;
8411 let isPredicatedFalse = 1;
8412 let isTerminator = 1;
8413 let isBranch = 1;
8414 let isNewValue = 1;
8415 let cofMax1 = 1;
8416 let isRestrictNoSlot1Store = 1;
8417 let Defs = [PC];
8418 let isTaken = Inst{13};
8419 let isExtendable = 1;
8420 let opExtendable = 1;
8421 let isExtentSigned = 1;
8422 let opExtentBits = 11;
8423 let opExtentAlign = 2;
8424 let opNewValue = 0;
8425 }
8426 def J4_tstbit0_f_jumpnv_t : HInst<
8427 (outs),
8428 (ins IntRegs:$Ns8, b30_2Imm:$Ii),
8429 "if (!tstbit($Ns8.new,#0)) jump:t $Ii",
8430 tc_746baa8e, TypeNCJ>, Enc_69d63b {
8431 let Inst{0-0} = 0b0;
8432 let Inst{13-8} = 0b100000;
8433 let Inst{19-19} = 0b0;
8434 let Inst{31-22} = 0b0010010111;
8435 let isPredicated = 1;
8436 let isPredicatedFalse = 1;
8437 let isTerminator = 1;
8438 let isBranch = 1;
8439 let isNewValue = 1;
8440 let cofMax1 = 1;
8441 let isRestrictNoSlot1Store = 1;
8442 let Defs = [PC];
8443 let isTaken = Inst{13};
8444 let isExtendable = 1;
8445 let opExtendable = 1;
8446 let isExtentSigned = 1;
8447 let opExtentBits = 11;
8448 let opExtentAlign = 2;
8449 let opNewValue = 0;
8450 }
8451 def J4_tstbit0_fp0_jump_nt : HInst<
8452 (outs),
8453 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8454 "p0 = tstbit($Rs16,#0); if (!p0.new) jump:nt $Ii",
8455 tc_3cb8ea06, TypeCJ>, Enc_ad1c74 {
8456 let Inst{0-0} = 0b0;
8457 let Inst{13-8} = 0b000011;
8458 let Inst{31-22} = 0b0001000111;
8459 let isPredicated = 1;
8460 let isPredicatedFalse = 1;
8461 let isTerminator = 1;
8462 let isBranch = 1;
8463 let isPredicatedNew = 1;
8464 let cofRelax1 = 1;
8465 let cofRelax2 = 1;
8466 let cofMax1 = 1;
8467 let Uses = [P0];
8468 let Defs = [P0, PC];
8469 let isTaken = Inst{13};
8470 let isExtendable = 1;
8471 let opExtendable = 1;
8472 let isExtentSigned = 1;
8473 let opExtentBits = 11;
8474 let opExtentAlign = 2;
8475 }
8476 def J4_tstbit0_fp0_jump_t : HInst<
8477 (outs),
8478 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8479 "p0 = tstbit($Rs16,#0); if (!p0.new) jump:t $Ii",
8480 tc_3cb8ea06, TypeCJ>, Enc_ad1c74 {
8481 let Inst{0-0} = 0b0;
8482 let Inst{13-8} = 0b100011;
8483 let Inst{31-22} = 0b0001000111;
8484 let isPredicated = 1;
8485 let isPredicatedFalse = 1;
8486 let isTerminator = 1;
8487 let isBranch = 1;
8488 let isPredicatedNew = 1;
8489 let cofRelax1 = 1;
8490 let cofRelax2 = 1;
8491 let cofMax1 = 1;
8492 let Uses = [P0];
8493 let Defs = [P0, PC];
8494 let isTaken = Inst{13};
8495 let isExtendable = 1;
8496 let opExtendable = 1;
8497 let isExtentSigned = 1;
8498 let opExtentBits = 11;
8499 let opExtentAlign = 2;
8500 }
8501 def J4_tstbit0_fp1_jump_nt : HInst<
8502 (outs),
8503 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8504 "p1 = tstbit($Rs16,#0); if (!p1.new) jump:nt $Ii",
8505 tc_3cb8ea06, TypeCJ>, Enc_ad1c74 {
8506 let Inst{0-0} = 0b0;
8507 let Inst{13-8} = 0b000011;
8508 let Inst{31-22} = 0b0001001111;
8509 let isPredicated = 1;
8510 let isPredicatedFalse = 1;
8511 let isTerminator = 1;
8512 let isBranch = 1;
8513 let isPredicatedNew = 1;
8514 let cofRelax1 = 1;
8515 let cofRelax2 = 1;
8516 let cofMax1 = 1;
8517 let Uses = [P1];
8518 let Defs = [P1, PC];
8519 let isTaken = Inst{13};
8520 let isExtendable = 1;
8521 let opExtendable = 1;
8522 let isExtentSigned = 1;
8523 let opExtentBits = 11;
8524 let opExtentAlign = 2;
8525 }
8526 def J4_tstbit0_fp1_jump_t : HInst<
8527 (outs),
8528 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8529 "p1 = tstbit($Rs16,#0); if (!p1.new) jump:t $Ii",
8530 tc_3cb8ea06, TypeCJ>, Enc_ad1c74 {
8531 let Inst{0-0} = 0b0;
8532 let Inst{13-8} = 0b100011;
8533 let Inst{31-22} = 0b0001001111;
8534 let isPredicated = 1;
8535 let isPredicatedFalse = 1;
8536 let isTerminator = 1;
8537 let isBranch = 1;
8538 let isPredicatedNew = 1;
8539 let cofRelax1 = 1;
8540 let cofRelax2 = 1;
8541 let cofMax1 = 1;
8542 let Uses = [P1];
8543 let Defs = [P1, PC];
8544 let isTaken = Inst{13};
8545 let isExtendable = 1;
8546 let opExtendable = 1;
8547 let isExtentSigned = 1;
8548 let opExtentBits = 11;
8549 let opExtentAlign = 2;
8550 }
8551 def J4_tstbit0_t_jumpnv_nt : HInst<
8552 (outs),
8553 (ins IntRegs:$Ns8, b30_2Imm:$Ii),
8554 "if (tstbit($Ns8.new,#0)) jump:nt $Ii",
8555 tc_746baa8e, TypeNCJ>, Enc_69d63b {
8556 let Inst{0-0} = 0b0;
8557 let Inst{13-8} = 0b000000;
8558 let Inst{19-19} = 0b0;
8559 let Inst{31-22} = 0b0010010110;
8560 let isPredicated = 1;
8561 let isTerminator = 1;
8562 let isBranch = 1;
8563 let isNewValue = 1;
8564 let cofMax1 = 1;
8565 let isRestrictNoSlot1Store = 1;
8566 let Defs = [PC];
8567 let isTaken = Inst{13};
8568 let isExtendable = 1;
8569 let opExtendable = 1;
8570 let isExtentSigned = 1;
8571 let opExtentBits = 11;
8572 let opExtentAlign = 2;
8573 let opNewValue = 0;
8574 }
8575 def J4_tstbit0_t_jumpnv_t : HInst<
8576 (outs),
8577 (ins IntRegs:$Ns8, b30_2Imm:$Ii),
8578 "if (tstbit($Ns8.new,#0)) jump:t $Ii",
8579 tc_746baa8e, TypeNCJ>, Enc_69d63b {
8580 let Inst{0-0} = 0b0;
8581 let Inst{13-8} = 0b100000;
8582 let Inst{19-19} = 0b0;
8583 let Inst{31-22} = 0b0010010110;
8584 let isPredicated = 1;
8585 let isTerminator = 1;
8586 let isBranch = 1;
8587 let isNewValue = 1;
8588 let cofMax1 = 1;
8589 let isRestrictNoSlot1Store = 1;
8590 let Defs = [PC];
8591 let isTaken = Inst{13};
8592 let isExtendable = 1;
8593 let opExtendable = 1;
8594 let isExtentSigned = 1;
8595 let opExtentBits = 11;
8596 let opExtentAlign = 2;
8597 let opNewValue = 0;
8598 }
8599 def J4_tstbit0_tp0_jump_nt : HInst<
8600 (outs),
8601 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8602 "p0 = tstbit($Rs16,#0); if (p0.new) jump:nt $Ii",
8603 tc_3cb8ea06, TypeCJ>, Enc_ad1c74 {
8604 let Inst{0-0} = 0b0;
8605 let Inst{13-8} = 0b000011;
8606 let Inst{31-22} = 0b0001000110;
8607 let isPredicated = 1;
8608 let isTerminator = 1;
8609 let isBranch = 1;
8610 let isPredicatedNew = 1;
8611 let cofRelax1 = 1;
8612 let cofRelax2 = 1;
8613 let cofMax1 = 1;
8614 let Uses = [P0];
8615 let Defs = [P0, PC];
8616 let isTaken = Inst{13};
8617 let isExtendable = 1;
8618 let opExtendable = 1;
8619 let isExtentSigned = 1;
8620 let opExtentBits = 11;
8621 let opExtentAlign = 2;
8622 }
8623 def J4_tstbit0_tp0_jump_t : HInst<
8624 (outs),
8625 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8626 "p0 = tstbit($Rs16,#0); if (p0.new) jump:t $Ii",
8627 tc_3cb8ea06, TypeCJ>, Enc_ad1c74 {
8628 let Inst{0-0} = 0b0;
8629 let Inst{13-8} = 0b100011;
8630 let Inst{31-22} = 0b0001000110;
8631 let isPredicated = 1;
8632 let isTerminator = 1;
8633 let isBranch = 1;
8634 let isPredicatedNew = 1;
8635 let cofRelax1 = 1;
8636 let cofRelax2 = 1;
8637 let cofMax1 = 1;
8638 let Uses = [P0];
8639 let Defs = [P0, PC];
8640 let isTaken = Inst{13};
8641 let isExtendable = 1;
8642 let opExtendable = 1;
8643 let isExtentSigned = 1;
8644 let opExtentBits = 11;
8645 let opExtentAlign = 2;
8646 }
8647 def J4_tstbit0_tp1_jump_nt : HInst<
8648 (outs),
8649 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8650 "p1 = tstbit($Rs16,#0); if (p1.new) jump:nt $Ii",
8651 tc_3cb8ea06, TypeCJ>, Enc_ad1c74 {
8652 let Inst{0-0} = 0b0;
8653 let Inst{13-8} = 0b000011;
8654 let Inst{31-22} = 0b0001001110;
8655 let isPredicated = 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_tp1_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_3cb8ea06, TypeCJ>, Enc_ad1c74 {
8676 let Inst{0-0} = 0b0;
8677 let Inst{13-8} = 0b100011;
8678 let Inst{31-22} = 0b0001001110;
8679 let isPredicated = 1;
8680 let isTerminator = 1;
8681 let isBranch = 1;
8682 let isPredicatedNew = 1;
8683 let cofRelax1 = 1;
8684 let cofRelax2 = 1;
8685 let cofMax1 = 1;
8686 let Uses = [P1];
8687 let Defs = [P1, PC];
8688 let isTaken = Inst{13};
8689 let isExtendable = 1;
8690 let opExtendable = 1;
8691 let isExtentSigned = 1;
8692 let opExtentBits = 11;
8693 let opExtentAlign = 2;
8694 }
8695 def L2_deallocframe : HInst<
8696 (outs DoubleRegs:$Rdd32),
8697 (ins IntRegs:$Rs32),
8698 "$Rdd32 = deallocframe($Rs32):raw",
8699 tc_d1090e34, TypeLD>, Enc_3a3d62 {
8700 let Inst{13-5} = 0b000000000;
8701 let Inst{31-21} = 0b10010000000;
8702 let accessSize = DoubleWordAccess;
8703 let mayLoad = 1;
8704 let Uses = [FRAMEKEY];
8705 let Defs = [R29];
8706 }
8707 def L2_loadalignb_io : HInst<
8708 (outs DoubleRegs:$Ryy32),
8709 (ins DoubleRegs:$Ryy32in, IntRegs:$Rs32, s32_0Imm:$Ii),
8710 "$Ryy32 = memb_fifo($Rs32+#$Ii)",
8711 tc_ef52ed71, TypeLD>, Enc_a27588 {
8712 let Inst{24-21} = 0b0100;
8713 let Inst{31-27} = 0b10010;
8714 let addrMode = BaseImmOffset;
8715 let accessSize = ByteAccess;
8716 let mayLoad = 1;
8717 let isExtendable = 1;
8718 let opExtendable = 3;
8719 let isExtentSigned = 1;
8720 let opExtentBits = 11;
8721 let opExtentAlign = 0;
8722 let Constraints = "$Ryy32 = $Ryy32in";
8723 }
8724 def L2_loadalignb_pbr : HInst<
8725 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8726 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, ModRegs:$Mu2),
8727 "$Ryy32 = memb_fifo($Rx32++$Mu2:brev)",
8728 tc_bad2bcaf, TypeLD>, Enc_1f5d8f {
8729 let Inst{12-5} = 0b00000000;
8730 let Inst{31-21} = 0b10011110100;
8731 let accessSize = ByteAccess;
8732 let mayLoad = 1;
8733 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8734 }
8735 def L2_loadalignb_pci : HInst<
8736 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8737 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, s4_0Imm:$Ii, ModRegs:$Mu2),
8738 "$Ryy32 = memb_fifo($Rx32++#$Ii:circ($Mu2))",
8739 tc_03220ffa, TypeLD>, Enc_74aef2 {
8740 let Inst{12-9} = 0b0000;
8741 let Inst{31-21} = 0b10011000100;
8742 let addrMode = PostInc;
8743 let accessSize = ByteAccess;
8744 let mayLoad = 1;
8745 let Uses = [CS];
8746 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8747 }
8748 def L2_loadalignb_pcr : HInst<
8749 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8750 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, ModRegs:$Mu2),
8751 "$Ryy32 = memb_fifo($Rx32++I:circ($Mu2))",
8752 tc_bad2bcaf, TypeLD>, Enc_1f5d8f {
8753 let Inst{12-5} = 0b00010000;
8754 let Inst{31-21} = 0b10011000100;
8755 let addrMode = PostInc;
8756 let accessSize = ByteAccess;
8757 let mayLoad = 1;
8758 let Uses = [CS];
8759 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8760 }
8761 def L2_loadalignb_pi : HInst<
8762 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8763 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, s4_0Imm:$Ii),
8764 "$Ryy32 = memb_fifo($Rx32++#$Ii)",
8765 tc_bad2bcaf, TypeLD>, Enc_6b197f {
8766 let Inst{13-9} = 0b00000;
8767 let Inst{31-21} = 0b10011010100;
8768 let addrMode = PostInc;
8769 let accessSize = ByteAccess;
8770 let mayLoad = 1;
8771 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8772 }
8773 def L2_loadalignb_pr : HInst<
8774 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8775 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, ModRegs:$Mu2),
8776 "$Ryy32 = memb_fifo($Rx32++$Mu2)",
8777 tc_bad2bcaf, TypeLD>, Enc_1f5d8f {
8778 let Inst{12-5} = 0b00000000;
8779 let Inst{31-21} = 0b10011100100;
8780 let addrMode = PostInc;
8781 let accessSize = ByteAccess;
8782 let mayLoad = 1;
8783 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8784 }
8785 def L2_loadalignb_zomap : HInst<
8786 (outs DoubleRegs:$Ryy32),
8787 (ins DoubleRegs:$Ryy32in, IntRegs:$Rs32),
8788 "$Ryy32 = memb_fifo($Rs32)",
8789 tc_ef52ed71, TypeMAPPING> {
8790 let isPseudo = 1;
8791 let isCodeGenOnly = 1;
8792 let Constraints = "$Ryy32 = $Ryy32in";
8793 }
8794 def L2_loadalignh_io : HInst<
8795 (outs DoubleRegs:$Ryy32),
8796 (ins DoubleRegs:$Ryy32in, IntRegs:$Rs32, s31_1Imm:$Ii),
8797 "$Ryy32 = memh_fifo($Rs32+#$Ii)",
8798 tc_ef52ed71, TypeLD>, Enc_5cd7e9 {
8799 let Inst{24-21} = 0b0010;
8800 let Inst{31-27} = 0b10010;
8801 let addrMode = BaseImmOffset;
8802 let accessSize = HalfWordAccess;
8803 let mayLoad = 1;
8804 let isExtendable = 1;
8805 let opExtendable = 3;
8806 let isExtentSigned = 1;
8807 let opExtentBits = 12;
8808 let opExtentAlign = 1;
8809 let Constraints = "$Ryy32 = $Ryy32in";
8810 }
8811 def L2_loadalignh_pbr : HInst<
8812 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8813 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, ModRegs:$Mu2),
8814 "$Ryy32 = memh_fifo($Rx32++$Mu2:brev)",
8815 tc_bad2bcaf, TypeLD>, Enc_1f5d8f {
8816 let Inst{12-5} = 0b00000000;
8817 let Inst{31-21} = 0b10011110010;
8818 let accessSize = HalfWordAccess;
8819 let mayLoad = 1;
8820 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8821 }
8822 def L2_loadalignh_pci : HInst<
8823 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8824 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, s4_1Imm:$Ii, ModRegs:$Mu2),
8825 "$Ryy32 = memh_fifo($Rx32++#$Ii:circ($Mu2))",
8826 tc_03220ffa, TypeLD>, Enc_9e2e1c {
8827 let Inst{12-9} = 0b0000;
8828 let Inst{31-21} = 0b10011000010;
8829 let addrMode = PostInc;
8830 let accessSize = HalfWordAccess;
8831 let mayLoad = 1;
8832 let Uses = [CS];
8833 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8834 }
8835 def L2_loadalignh_pcr : HInst<
8836 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8837 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, ModRegs:$Mu2),
8838 "$Ryy32 = memh_fifo($Rx32++I:circ($Mu2))",
8839 tc_bad2bcaf, TypeLD>, Enc_1f5d8f {
8840 let Inst{12-5} = 0b00010000;
8841 let Inst{31-21} = 0b10011000010;
8842 let addrMode = PostInc;
8843 let accessSize = HalfWordAccess;
8844 let mayLoad = 1;
8845 let Uses = [CS];
8846 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8847 }
8848 def L2_loadalignh_pi : HInst<
8849 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8850 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, s4_1Imm:$Ii),
8851 "$Ryy32 = memh_fifo($Rx32++#$Ii)",
8852 tc_bad2bcaf, TypeLD>, Enc_bd1cbc {
8853 let Inst{13-9} = 0b00000;
8854 let Inst{31-21} = 0b10011010010;
8855 let addrMode = PostInc;
8856 let accessSize = HalfWordAccess;
8857 let mayLoad = 1;
8858 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8859 }
8860 def L2_loadalignh_pr : HInst<
8861 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8862 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, ModRegs:$Mu2),
8863 "$Ryy32 = memh_fifo($Rx32++$Mu2)",
8864 tc_bad2bcaf, TypeLD>, Enc_1f5d8f {
8865 let Inst{12-5} = 0b00000000;
8866 let Inst{31-21} = 0b10011100010;
8867 let addrMode = PostInc;
8868 let accessSize = HalfWordAccess;
8869 let mayLoad = 1;
8870 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8871 }
8872 def L2_loadalignh_zomap : HInst<
8873 (outs DoubleRegs:$Ryy32),
8874 (ins DoubleRegs:$Ryy32in, IntRegs:$Rs32),
8875 "$Ryy32 = memh_fifo($Rs32)",
8876 tc_ef52ed71, TypeMAPPING> {
8877 let isPseudo = 1;
8878 let isCodeGenOnly = 1;
8879 let Constraints = "$Ryy32 = $Ryy32in";
8880 }
8881 def L2_loadbsw2_io : HInst<
8882 (outs IntRegs:$Rd32),
8883 (ins IntRegs:$Rs32, s31_1Imm:$Ii),
8884 "$Rd32 = membh($Rs32+#$Ii)",
8885 tc_7f881c76, TypeLD>, Enc_de0214 {
8886 let Inst{24-21} = 0b0001;
8887 let Inst{31-27} = 0b10010;
8888 let hasNewValue = 1;
8889 let opNewValue = 0;
8890 let addrMode = BaseImmOffset;
8891 let accessSize = HalfWordAccess;
8892 let mayLoad = 1;
8893 let isExtendable = 1;
8894 let opExtendable = 2;
8895 let isExtentSigned = 1;
8896 let opExtentBits = 12;
8897 let opExtentAlign = 1;
8898 }
8899 def L2_loadbsw2_pbr : HInst<
8900 (outs IntRegs:$Rd32, IntRegs:$Rx32),
8901 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
8902 "$Rd32 = membh($Rx32++$Mu2:brev)",
8903 tc_2fc0c436, TypeLD>, Enc_74d4e5 {
8904 let Inst{12-5} = 0b00000000;
8905 let Inst{31-21} = 0b10011110001;
8906 let hasNewValue = 1;
8907 let opNewValue = 0;
8908 let accessSize = HalfWordAccess;
8909 let mayLoad = 1;
8910 let Constraints = "$Rx32 = $Rx32in";
8911 }
8912 def L2_loadbsw2_pci : HInst<
8913 (outs IntRegs:$Rd32, IntRegs:$Rx32),
8914 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, ModRegs:$Mu2),
8915 "$Rd32 = membh($Rx32++#$Ii:circ($Mu2))",
8916 tc_4403ca65, TypeLD>, Enc_e83554 {
8917 let Inst{12-9} = 0b0000;
8918 let Inst{31-21} = 0b10011000001;
8919 let hasNewValue = 1;
8920 let opNewValue = 0;
8921 let addrMode = PostInc;
8922 let accessSize = HalfWordAccess;
8923 let mayLoad = 1;
8924 let Uses = [CS];
8925 let Constraints = "$Rx32 = $Rx32in";
8926 }
8927 def L2_loadbsw2_pcr : HInst<
8928 (outs IntRegs:$Rd32, IntRegs:$Rx32),
8929 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
8930 "$Rd32 = membh($Rx32++I:circ($Mu2))",
8931 tc_2fc0c436, TypeLD>, Enc_74d4e5 {
8932 let Inst{12-5} = 0b00010000;
8933 let Inst{31-21} = 0b10011000001;
8934 let hasNewValue = 1;
8935 let opNewValue = 0;
8936 let addrMode = PostInc;
8937 let accessSize = HalfWordAccess;
8938 let mayLoad = 1;
8939 let Uses = [CS];
8940 let Constraints = "$Rx32 = $Rx32in";
8941 }
8942 def L2_loadbsw2_pi : HInst<
8943 (outs IntRegs:$Rd32, IntRegs:$Rx32),
8944 (ins IntRegs:$Rx32in, s4_1Imm:$Ii),
8945 "$Rd32 = membh($Rx32++#$Ii)",
8946 tc_2fc0c436, TypeLD>, Enc_152467 {
8947 let Inst{13-9} = 0b00000;
8948 let Inst{31-21} = 0b10011010001;
8949 let hasNewValue = 1;
8950 let opNewValue = 0;
8951 let addrMode = PostInc;
8952 let accessSize = HalfWordAccess;
8953 let mayLoad = 1;
8954 let Constraints = "$Rx32 = $Rx32in";
8955 }
8956 def L2_loadbsw2_pr : HInst<
8957 (outs IntRegs:$Rd32, IntRegs:$Rx32),
8958 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
8959 "$Rd32 = membh($Rx32++$Mu2)",
8960 tc_2fc0c436, TypeLD>, Enc_74d4e5 {
8961 let Inst{12-5} = 0b00000000;
8962 let Inst{31-21} = 0b10011100001;
8963 let hasNewValue = 1;
8964 let opNewValue = 0;
8965 let addrMode = PostInc;
8966 let accessSize = HalfWordAccess;
8967 let mayLoad = 1;
8968 let Constraints = "$Rx32 = $Rx32in";
8969 }
8970 def L2_loadbsw2_zomap : HInst<
8971 (outs IntRegs:$Rd32),
8972 (ins IntRegs:$Rs32),
8973 "$Rd32 = membh($Rs32)",
8974 tc_7f881c76, TypeMAPPING> {
8975 let hasNewValue = 1;
8976 let opNewValue = 0;
8977 let isPseudo = 1;
8978 let isCodeGenOnly = 1;
8979 }
8980 def L2_loadbsw4_io : HInst<
8981 (outs DoubleRegs:$Rdd32),
8982 (ins IntRegs:$Rs32, s30_2Imm:$Ii),
8983 "$Rdd32 = membh($Rs32+#$Ii)",
8984 tc_7f881c76, TypeLD>, Enc_2d7491 {
8985 let Inst{24-21} = 0b0111;
8986 let Inst{31-27} = 0b10010;
8987 let addrMode = BaseImmOffset;
8988 let accessSize = WordAccess;
8989 let mayLoad = 1;
8990 let isExtendable = 1;
8991 let opExtendable = 2;
8992 let isExtentSigned = 1;
8993 let opExtentBits = 13;
8994 let opExtentAlign = 2;
8995 }
8996 def L2_loadbsw4_pbr : HInst<
8997 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
8998 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
8999 "$Rdd32 = membh($Rx32++$Mu2:brev)",
9000 tc_2fc0c436, TypeLD>, Enc_7eee72 {
9001 let Inst{12-5} = 0b00000000;
9002 let Inst{31-21} = 0b10011110111;
9003 let accessSize = WordAccess;
9004 let mayLoad = 1;
9005 let Constraints = "$Rx32 = $Rx32in";
9006 }
9007 def L2_loadbsw4_pci : HInst<
9008 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9009 (ins IntRegs:$Rx32in, s4_2Imm:$Ii, ModRegs:$Mu2),
9010 "$Rdd32 = membh($Rx32++#$Ii:circ($Mu2))",
9011 tc_4403ca65, TypeLD>, Enc_70b24b {
9012 let Inst{12-9} = 0b0000;
9013 let Inst{31-21} = 0b10011000111;
9014 let addrMode = PostInc;
9015 let accessSize = WordAccess;
9016 let mayLoad = 1;
9017 let Uses = [CS];
9018 let Constraints = "$Rx32 = $Rx32in";
9019 }
9020 def L2_loadbsw4_pcr : HInst<
9021 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9022 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9023 "$Rdd32 = membh($Rx32++I:circ($Mu2))",
9024 tc_2fc0c436, TypeLD>, Enc_7eee72 {
9025 let Inst{12-5} = 0b00010000;
9026 let Inst{31-21} = 0b10011000111;
9027 let addrMode = PostInc;
9028 let accessSize = WordAccess;
9029 let mayLoad = 1;
9030 let Uses = [CS];
9031 let Constraints = "$Rx32 = $Rx32in";
9032 }
9033 def L2_loadbsw4_pi : HInst<
9034 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9035 (ins IntRegs:$Rx32in, s4_2Imm:$Ii),
9036 "$Rdd32 = membh($Rx32++#$Ii)",
9037 tc_2fc0c436, TypeLD>, Enc_71f1b4 {
9038 let Inst{13-9} = 0b00000;
9039 let Inst{31-21} = 0b10011010111;
9040 let addrMode = PostInc;
9041 let accessSize = WordAccess;
9042 let mayLoad = 1;
9043 let Constraints = "$Rx32 = $Rx32in";
9044 }
9045 def L2_loadbsw4_pr : HInst<
9046 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9047 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9048 "$Rdd32 = membh($Rx32++$Mu2)",
9049 tc_2fc0c436, TypeLD>, Enc_7eee72 {
9050 let Inst{12-5} = 0b00000000;
9051 let Inst{31-21} = 0b10011100111;
9052 let addrMode = PostInc;
9053 let accessSize = WordAccess;
9054 let mayLoad = 1;
9055 let Constraints = "$Rx32 = $Rx32in";
9056 }
9057 def L2_loadbsw4_zomap : HInst<
9058 (outs DoubleRegs:$Rdd32),
9059 (ins IntRegs:$Rs32),
9060 "$Rdd32 = membh($Rs32)",
9061 tc_7f881c76, TypeMAPPING> {
9062 let isPseudo = 1;
9063 let isCodeGenOnly = 1;
9064 }
9065 def L2_loadbzw2_io : HInst<
9066 (outs IntRegs:$Rd32),
9067 (ins IntRegs:$Rs32, s31_1Imm:$Ii),
9068 "$Rd32 = memubh($Rs32+#$Ii)",
9069 tc_7f881c76, TypeLD>, Enc_de0214 {
9070 let Inst{24-21} = 0b0011;
9071 let Inst{31-27} = 0b10010;
9072 let hasNewValue = 1;
9073 let opNewValue = 0;
9074 let addrMode = BaseImmOffset;
9075 let accessSize = HalfWordAccess;
9076 let mayLoad = 1;
9077 let isExtendable = 1;
9078 let opExtendable = 2;
9079 let isExtentSigned = 1;
9080 let opExtentBits = 12;
9081 let opExtentAlign = 1;
9082 }
9083 def L2_loadbzw2_pbr : HInst<
9084 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9085 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9086 "$Rd32 = memubh($Rx32++$Mu2:brev)",
9087 tc_2fc0c436, TypeLD>, Enc_74d4e5 {
9088 let Inst{12-5} = 0b00000000;
9089 let Inst{31-21} = 0b10011110011;
9090 let hasNewValue = 1;
9091 let opNewValue = 0;
9092 let accessSize = HalfWordAccess;
9093 let mayLoad = 1;
9094 let Constraints = "$Rx32 = $Rx32in";
9095 }
9096 def L2_loadbzw2_pci : HInst<
9097 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9098 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, ModRegs:$Mu2),
9099 "$Rd32 = memubh($Rx32++#$Ii:circ($Mu2))",
9100 tc_4403ca65, TypeLD>, Enc_e83554 {
9101 let Inst{12-9} = 0b0000;
9102 let Inst{31-21} = 0b10011000011;
9103 let hasNewValue = 1;
9104 let opNewValue = 0;
9105 let addrMode = PostInc;
9106 let accessSize = HalfWordAccess;
9107 let mayLoad = 1;
9108 let Uses = [CS];
9109 let Constraints = "$Rx32 = $Rx32in";
9110 }
9111 def L2_loadbzw2_pcr : HInst<
9112 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9113 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9114 "$Rd32 = memubh($Rx32++I:circ($Mu2))",
9115 tc_2fc0c436, TypeLD>, Enc_74d4e5 {
9116 let Inst{12-5} = 0b00010000;
9117 let Inst{31-21} = 0b10011000011;
9118 let hasNewValue = 1;
9119 let opNewValue = 0;
9120 let addrMode = PostInc;
9121 let accessSize = HalfWordAccess;
9122 let mayLoad = 1;
9123 let Uses = [CS];
9124 let Constraints = "$Rx32 = $Rx32in";
9125 }
9126 def L2_loadbzw2_pi : HInst<
9127 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9128 (ins IntRegs:$Rx32in, s4_1Imm:$Ii),
9129 "$Rd32 = memubh($Rx32++#$Ii)",
9130 tc_2fc0c436, TypeLD>, Enc_152467 {
9131 let Inst{13-9} = 0b00000;
9132 let Inst{31-21} = 0b10011010011;
9133 let hasNewValue = 1;
9134 let opNewValue = 0;
9135 let addrMode = PostInc;
9136 let accessSize = HalfWordAccess;
9137 let mayLoad = 1;
9138 let Constraints = "$Rx32 = $Rx32in";
9139 }
9140 def L2_loadbzw2_pr : HInst<
9141 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9142 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9143 "$Rd32 = memubh($Rx32++$Mu2)",
9144 tc_2fc0c436, TypeLD>, Enc_74d4e5 {
9145 let Inst{12-5} = 0b00000000;
9146 let Inst{31-21} = 0b10011100011;
9147 let hasNewValue = 1;
9148 let opNewValue = 0;
9149 let addrMode = PostInc;
9150 let accessSize = HalfWordAccess;
9151 let mayLoad = 1;
9152 let Constraints = "$Rx32 = $Rx32in";
9153 }
9154 def L2_loadbzw2_zomap : HInst<
9155 (outs IntRegs:$Rd32),
9156 (ins IntRegs:$Rs32),
9157 "$Rd32 = memubh($Rs32)",
9158 tc_7f881c76, TypeMAPPING> {
9159 let hasNewValue = 1;
9160 let opNewValue = 0;
9161 let isPseudo = 1;
9162 let isCodeGenOnly = 1;
9163 }
9164 def L2_loadbzw4_io : HInst<
9165 (outs DoubleRegs:$Rdd32),
9166 (ins IntRegs:$Rs32, s30_2Imm:$Ii),
9167 "$Rdd32 = memubh($Rs32+#$Ii)",
9168 tc_7f881c76, TypeLD>, Enc_2d7491 {
9169 let Inst{24-21} = 0b0101;
9170 let Inst{31-27} = 0b10010;
9171 let addrMode = BaseImmOffset;
9172 let accessSize = WordAccess;
9173 let mayLoad = 1;
9174 let isExtendable = 1;
9175 let opExtendable = 2;
9176 let isExtentSigned = 1;
9177 let opExtentBits = 13;
9178 let opExtentAlign = 2;
9179 }
9180 def L2_loadbzw4_pbr : HInst<
9181 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9182 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9183 "$Rdd32 = memubh($Rx32++$Mu2:brev)",
9184 tc_2fc0c436, TypeLD>, Enc_7eee72 {
9185 let Inst{12-5} = 0b00000000;
9186 let Inst{31-21} = 0b10011110101;
9187 let accessSize = WordAccess;
9188 let mayLoad = 1;
9189 let Constraints = "$Rx32 = $Rx32in";
9190 }
9191 def L2_loadbzw4_pci : HInst<
9192 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9193 (ins IntRegs:$Rx32in, s4_2Imm:$Ii, ModRegs:$Mu2),
9194 "$Rdd32 = memubh($Rx32++#$Ii:circ($Mu2))",
9195 tc_4403ca65, TypeLD>, Enc_70b24b {
9196 let Inst{12-9} = 0b0000;
9197 let Inst{31-21} = 0b10011000101;
9198 let addrMode = PostInc;
9199 let accessSize = WordAccess;
9200 let mayLoad = 1;
9201 let Uses = [CS];
9202 let Constraints = "$Rx32 = $Rx32in";
9203 }
9204 def L2_loadbzw4_pcr : HInst<
9205 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9206 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9207 "$Rdd32 = memubh($Rx32++I:circ($Mu2))",
9208 tc_2fc0c436, TypeLD>, Enc_7eee72 {
9209 let Inst{12-5} = 0b00010000;
9210 let Inst{31-21} = 0b10011000101;
9211 let addrMode = PostInc;
9212 let accessSize = WordAccess;
9213 let mayLoad = 1;
9214 let Uses = [CS];
9215 let Constraints = "$Rx32 = $Rx32in";
9216 }
9217 def L2_loadbzw4_pi : HInst<
9218 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9219 (ins IntRegs:$Rx32in, s4_2Imm:$Ii),
9220 "$Rdd32 = memubh($Rx32++#$Ii)",
9221 tc_2fc0c436, TypeLD>, Enc_71f1b4 {
9222 let Inst{13-9} = 0b00000;
9223 let Inst{31-21} = 0b10011010101;
9224 let addrMode = PostInc;
9225 let accessSize = WordAccess;
9226 let mayLoad = 1;
9227 let Constraints = "$Rx32 = $Rx32in";
9228 }
9229 def L2_loadbzw4_pr : HInst<
9230 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9231 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9232 "$Rdd32 = memubh($Rx32++$Mu2)",
9233 tc_2fc0c436, TypeLD>, Enc_7eee72 {
9234 let Inst{12-5} = 0b00000000;
9235 let Inst{31-21} = 0b10011100101;
9236 let addrMode = PostInc;
9237 let accessSize = WordAccess;
9238 let mayLoad = 1;
9239 let Constraints = "$Rx32 = $Rx32in";
9240 }
9241 def L2_loadbzw4_zomap : HInst<
9242 (outs DoubleRegs:$Rdd32),
9243 (ins IntRegs:$Rs32),
9244 "$Rdd32 = memubh($Rs32)",
9245 tc_7f881c76, TypeMAPPING> {
9246 let isPseudo = 1;
9247 let isCodeGenOnly = 1;
9248 }
9249 def L2_loadrb_io : HInst<
9250 (outs IntRegs:$Rd32),
9251 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
9252 "$Rd32 = memb($Rs32+#$Ii)",
9253 tc_7f881c76, TypeLD>, Enc_211aaa, AddrModeRel, PostInc_BaseImm {
9254 let Inst{24-21} = 0b1000;
9255 let Inst{31-27} = 0b10010;
9256 let hasNewValue = 1;
9257 let opNewValue = 0;
9258 let addrMode = BaseImmOffset;
9259 let accessSize = ByteAccess;
9260 let mayLoad = 1;
9261 let CextOpcode = "L2_loadrb";
9262 let BaseOpcode = "L2_loadrb_io";
9263 let isPredicable = 1;
9264 let isExtendable = 1;
9265 let opExtendable = 2;
9266 let isExtentSigned = 1;
9267 let opExtentBits = 11;
9268 let opExtentAlign = 0;
9269 }
9270 def L2_loadrb_pbr : HInst<
9271 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9272 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9273 "$Rd32 = memb($Rx32++$Mu2:brev)",
9274 tc_2fc0c436, TypeLD>, Enc_74d4e5 {
9275 let Inst{12-5} = 0b00000000;
9276 let Inst{31-21} = 0b10011111000;
9277 let hasNewValue = 1;
9278 let opNewValue = 0;
9279 let accessSize = ByteAccess;
9280 let mayLoad = 1;
9281 let Constraints = "$Rx32 = $Rx32in";
9282 }
9283 def L2_loadrb_pci : HInst<
9284 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9285 (ins IntRegs:$Rx32in, s4_0Imm:$Ii, ModRegs:$Mu2),
9286 "$Rd32 = memb($Rx32++#$Ii:circ($Mu2))",
9287 tc_4403ca65, TypeLD>, Enc_e0a47a {
9288 let Inst{12-9} = 0b0000;
9289 let Inst{31-21} = 0b10011001000;
9290 let hasNewValue = 1;
9291 let opNewValue = 0;
9292 let addrMode = PostInc;
9293 let accessSize = ByteAccess;
9294 let mayLoad = 1;
9295 let Uses = [CS];
9296 let Constraints = "$Rx32 = $Rx32in";
9297 }
9298 def L2_loadrb_pcr : HInst<
9299 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9300 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9301 "$Rd32 = memb($Rx32++I:circ($Mu2))",
9302 tc_2fc0c436, TypeLD>, Enc_74d4e5 {
9303 let Inst{12-5} = 0b00010000;
9304 let Inst{31-21} = 0b10011001000;
9305 let hasNewValue = 1;
9306 let opNewValue = 0;
9307 let addrMode = PostInc;
9308 let accessSize = ByteAccess;
9309 let mayLoad = 1;
9310 let Uses = [CS];
9311 let Constraints = "$Rx32 = $Rx32in";
9312 }
9313 def L2_loadrb_pi : HInst<
9314 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9315 (ins IntRegs:$Rx32in, s4_0Imm:$Ii),
9316 "$Rd32 = memb($Rx32++#$Ii)",
9317 tc_2fc0c436, TypeLD>, Enc_222336, PredNewRel, PostInc_BaseImm {
9318 let Inst{13-9} = 0b00000;
9319 let Inst{31-21} = 0b10011011000;
9320 let hasNewValue = 1;
9321 let opNewValue = 0;
9322 let addrMode = PostInc;
9323 let accessSize = ByteAccess;
9324 let mayLoad = 1;
9325 let CextOpcode = "L2_loadrb";
9326 let BaseOpcode = "L2_loadrb_pi";
9327 let isPredicable = 1;
9328 let Constraints = "$Rx32 = $Rx32in";
9329 }
9330 def L2_loadrb_pr : HInst<
9331 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9332 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9333 "$Rd32 = memb($Rx32++$Mu2)",
9334 tc_2fc0c436, TypeLD>, Enc_74d4e5 {
9335 let Inst{12-5} = 0b00000000;
9336 let Inst{31-21} = 0b10011101000;
9337 let hasNewValue = 1;
9338 let opNewValue = 0;
9339 let addrMode = PostInc;
9340 let accessSize = ByteAccess;
9341 let mayLoad = 1;
9342 let Constraints = "$Rx32 = $Rx32in";
9343 }
9344 def L2_loadrb_zomap : HInst<
9345 (outs IntRegs:$Rd32),
9346 (ins IntRegs:$Rs32),
9347 "$Rd32 = memb($Rs32)",
9348 tc_7f881c76, TypeMAPPING> {
9349 let hasNewValue = 1;
9350 let opNewValue = 0;
9351 let isPseudo = 1;
9352 let isCodeGenOnly = 1;
9353 }
9354 def L2_loadrbgp : HInst<
9355 (outs IntRegs:$Rd32),
9356 (ins u32_0Imm:$Ii),
9357 "$Rd32 = memb(gp+#$Ii)",
9358 tc_9c98e8af, TypeV2LDST>, Enc_25bef0, AddrModeRel {
9359 let Inst{24-21} = 0b1000;
9360 let Inst{31-27} = 0b01001;
9361 let hasNewValue = 1;
9362 let opNewValue = 0;
9363 let accessSize = ByteAccess;
9364 let mayLoad = 1;
9365 let Uses = [GP];
9366 let BaseOpcode = "L4_loadrb_abs";
9367 let isPredicable = 1;
9368 let opExtendable = 1;
9369 let isExtentSigned = 0;
9370 let opExtentBits = 16;
9371 let opExtentAlign = 0;
9372 }
9373 def L2_loadrd_io : HInst<
9374 (outs DoubleRegs:$Rdd32),
9375 (ins IntRegs:$Rs32, s29_3Imm:$Ii),
9376 "$Rdd32 = memd($Rs32+#$Ii)",
9377 tc_7f881c76, TypeLD>, Enc_fa3ba4, AddrModeRel, PostInc_BaseImm {
9378 let Inst{24-21} = 0b1110;
9379 let Inst{31-27} = 0b10010;
9380 let addrMode = BaseImmOffset;
9381 let accessSize = DoubleWordAccess;
9382 let mayLoad = 1;
9383 let CextOpcode = "L2_loadrd";
9384 let BaseOpcode = "L2_loadrd_io";
9385 let isPredicable = 1;
9386 let isExtendable = 1;
9387 let opExtendable = 2;
9388 let isExtentSigned = 1;
9389 let opExtentBits = 14;
9390 let opExtentAlign = 3;
9391 }
9392 def L2_loadrd_pbr : HInst<
9393 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9394 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9395 "$Rdd32 = memd($Rx32++$Mu2:brev)",
9396 tc_2fc0c436, TypeLD>, Enc_7eee72 {
9397 let Inst{12-5} = 0b00000000;
9398 let Inst{31-21} = 0b10011111110;
9399 let accessSize = DoubleWordAccess;
9400 let mayLoad = 1;
9401 let Constraints = "$Rx32 = $Rx32in";
9402 }
9403 def L2_loadrd_pci : HInst<
9404 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9405 (ins IntRegs:$Rx32in, s4_3Imm:$Ii, ModRegs:$Mu2),
9406 "$Rdd32 = memd($Rx32++#$Ii:circ($Mu2))",
9407 tc_4403ca65, TypeLD>, Enc_b05839 {
9408 let Inst{12-9} = 0b0000;
9409 let Inst{31-21} = 0b10011001110;
9410 let addrMode = PostInc;
9411 let accessSize = DoubleWordAccess;
9412 let mayLoad = 1;
9413 let Uses = [CS];
9414 let Constraints = "$Rx32 = $Rx32in";
9415 }
9416 def L2_loadrd_pcr : HInst<
9417 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9418 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9419 "$Rdd32 = memd($Rx32++I:circ($Mu2))",
9420 tc_2fc0c436, TypeLD>, Enc_7eee72 {
9421 let Inst{12-5} = 0b00010000;
9422 let Inst{31-21} = 0b10011001110;
9423 let addrMode = PostInc;
9424 let accessSize = DoubleWordAccess;
9425 let mayLoad = 1;
9426 let Uses = [CS];
9427 let Constraints = "$Rx32 = $Rx32in";
9428 }
9429 def L2_loadrd_pi : HInst<
9430 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9431 (ins IntRegs:$Rx32in, s4_3Imm:$Ii),
9432 "$Rdd32 = memd($Rx32++#$Ii)",
9433 tc_2fc0c436, TypeLD>, Enc_5bdd42, PredNewRel, PostInc_BaseImm {
9434 let Inst{13-9} = 0b00000;
9435 let Inst{31-21} = 0b10011011110;
9436 let addrMode = PostInc;
9437 let accessSize = DoubleWordAccess;
9438 let mayLoad = 1;
9439 let CextOpcode = "L2_loadrd";
9440 let BaseOpcode = "L2_loadrd_pi";
9441 let isPredicable = 1;
9442 let Constraints = "$Rx32 = $Rx32in";
9443 }
9444 def L2_loadrd_pr : HInst<
9445 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9446 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9447 "$Rdd32 = memd($Rx32++$Mu2)",
9448 tc_2fc0c436, TypeLD>, Enc_7eee72 {
9449 let Inst{12-5} = 0b00000000;
9450 let Inst{31-21} = 0b10011101110;
9451 let addrMode = PostInc;
9452 let accessSize = DoubleWordAccess;
9453 let mayLoad = 1;
9454 let Constraints = "$Rx32 = $Rx32in";
9455 }
9456 def L2_loadrd_zomap : HInst<
9457 (outs DoubleRegs:$Rdd32),
9458 (ins IntRegs:$Rs32),
9459 "$Rdd32 = memd($Rs32)",
9460 tc_7f881c76, TypeMAPPING> {
9461 let isPseudo = 1;
9462 let isCodeGenOnly = 1;
9463 }
9464 def L2_loadrdgp : HInst<
9465 (outs DoubleRegs:$Rdd32),
9466 (ins u29_3Imm:$Ii),
9467 "$Rdd32 = memd(gp+#$Ii)",
9468 tc_9c98e8af, TypeV2LDST>, Enc_509701, AddrModeRel {
9469 let Inst{24-21} = 0b1110;
9470 let Inst{31-27} = 0b01001;
9471 let accessSize = DoubleWordAccess;
9472 let mayLoad = 1;
9473 let Uses = [GP];
9474 let BaseOpcode = "L4_loadrd_abs";
9475 let isPredicable = 1;
9476 let opExtendable = 1;
9477 let isExtentSigned = 0;
9478 let opExtentBits = 19;
9479 let opExtentAlign = 3;
9480 }
9481 def L2_loadrh_io : HInst<
9482 (outs IntRegs:$Rd32),
9483 (ins IntRegs:$Rs32, s31_1Imm:$Ii),
9484 "$Rd32 = memh($Rs32+#$Ii)",
9485 tc_7f881c76, TypeLD>, Enc_de0214, AddrModeRel, PostInc_BaseImm {
9486 let Inst{24-21} = 0b1010;
9487 let Inst{31-27} = 0b10010;
9488 let hasNewValue = 1;
9489 let opNewValue = 0;
9490 let addrMode = BaseImmOffset;
9491 let accessSize = HalfWordAccess;
9492 let mayLoad = 1;
9493 let CextOpcode = "L2_loadrh";
9494 let BaseOpcode = "L2_loadrh_io";
9495 let isPredicable = 1;
9496 let isExtendable = 1;
9497 let opExtendable = 2;
9498 let isExtentSigned = 1;
9499 let opExtentBits = 12;
9500 let opExtentAlign = 1;
9501 }
9502 def L2_loadrh_pbr : HInst<
9503 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9504 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9505 "$Rd32 = memh($Rx32++$Mu2:brev)",
9506 tc_2fc0c436, TypeLD>, Enc_74d4e5 {
9507 let Inst{12-5} = 0b00000000;
9508 let Inst{31-21} = 0b10011111010;
9509 let hasNewValue = 1;
9510 let opNewValue = 0;
9511 let accessSize = HalfWordAccess;
9512 let mayLoad = 1;
9513 let Constraints = "$Rx32 = $Rx32in";
9514 }
9515 def L2_loadrh_pci : HInst<
9516 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9517 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, ModRegs:$Mu2),
9518 "$Rd32 = memh($Rx32++#$Ii:circ($Mu2))",
9519 tc_4403ca65, TypeLD>, Enc_e83554 {
9520 let Inst{12-9} = 0b0000;
9521 let Inst{31-21} = 0b10011001010;
9522 let hasNewValue = 1;
9523 let opNewValue = 0;
9524 let addrMode = PostInc;
9525 let accessSize = HalfWordAccess;
9526 let mayLoad = 1;
9527 let Uses = [CS];
9528 let Constraints = "$Rx32 = $Rx32in";
9529 }
9530 def L2_loadrh_pcr : HInst<
9531 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9532 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9533 "$Rd32 = memh($Rx32++I:circ($Mu2))",
9534 tc_2fc0c436, TypeLD>, Enc_74d4e5 {
9535 let Inst{12-5} = 0b00010000;
9536 let Inst{31-21} = 0b10011001010;
9537 let hasNewValue = 1;
9538 let opNewValue = 0;
9539 let addrMode = PostInc;
9540 let accessSize = HalfWordAccess;
9541 let mayLoad = 1;
9542 let Uses = [CS];
9543 let Constraints = "$Rx32 = $Rx32in";
9544 }
9545 def L2_loadrh_pi : HInst<
9546 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9547 (ins IntRegs:$Rx32in, s4_1Imm:$Ii),
9548 "$Rd32 = memh($Rx32++#$Ii)",
9549 tc_2fc0c436, TypeLD>, Enc_152467, PredNewRel, PostInc_BaseImm {
9550 let Inst{13-9} = 0b00000;
9551 let Inst{31-21} = 0b10011011010;
9552 let hasNewValue = 1;
9553 let opNewValue = 0;
9554 let addrMode = PostInc;
9555 let accessSize = HalfWordAccess;
9556 let mayLoad = 1;
9557 let CextOpcode = "L2_loadrh";
9558 let BaseOpcode = "L2_loadrh_pi";
9559 let isPredicable = 1;
9560 let Constraints = "$Rx32 = $Rx32in";
9561 }
9562 def L2_loadrh_pr : HInst<
9563 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9564 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9565 "$Rd32 = memh($Rx32++$Mu2)",
9566 tc_2fc0c436, TypeLD>, Enc_74d4e5 {
9567 let Inst{12-5} = 0b00000000;
9568 let Inst{31-21} = 0b10011101010;
9569 let hasNewValue = 1;
9570 let opNewValue = 0;
9571 let addrMode = PostInc;
9572 let accessSize = HalfWordAccess;
9573 let mayLoad = 1;
9574 let Constraints = "$Rx32 = $Rx32in";
9575 }
9576 def L2_loadrh_zomap : HInst<
9577 (outs IntRegs:$Rd32),
9578 (ins IntRegs:$Rs32),
9579 "$Rd32 = memh($Rs32)",
9580 tc_7f881c76, TypeMAPPING> {
9581 let hasNewValue = 1;
9582 let opNewValue = 0;
9583 let isPseudo = 1;
9584 let isCodeGenOnly = 1;
9585 }
9586 def L2_loadrhgp : HInst<
9587 (outs IntRegs:$Rd32),
9588 (ins u31_1Imm:$Ii),
9589 "$Rd32 = memh(gp+#$Ii)",
9590 tc_9c98e8af, TypeV2LDST>, Enc_8df4be, AddrModeRel {
9591 let Inst{24-21} = 0b1010;
9592 let Inst{31-27} = 0b01001;
9593 let hasNewValue = 1;
9594 let opNewValue = 0;
9595 let accessSize = HalfWordAccess;
9596 let mayLoad = 1;
9597 let Uses = [GP];
9598 let BaseOpcode = "L4_loadrh_abs";
9599 let isPredicable = 1;
9600 let opExtendable = 1;
9601 let isExtentSigned = 0;
9602 let opExtentBits = 17;
9603 let opExtentAlign = 1;
9604 }
9605 def L2_loadri_io : HInst<
9606 (outs IntRegs:$Rd32),
9607 (ins IntRegs:$Rs32, s30_2Imm:$Ii),
9608 "$Rd32 = memw($Rs32+#$Ii)",
9609 tc_7f881c76, TypeLD>, Enc_2a3787, AddrModeRel, PostInc_BaseImm {
9610 let Inst{24-21} = 0b1100;
9611 let Inst{31-27} = 0b10010;
9612 let hasNewValue = 1;
9613 let opNewValue = 0;
9614 let addrMode = BaseImmOffset;
9615 let accessSize = WordAccess;
9616 let mayLoad = 1;
9617 let CextOpcode = "L2_loadri";
9618 let BaseOpcode = "L2_loadri_io";
9619 let isPredicable = 1;
9620 let isExtendable = 1;
9621 let opExtendable = 2;
9622 let isExtentSigned = 1;
9623 let opExtentBits = 13;
9624 let opExtentAlign = 2;
9625 }
9626 def L2_loadri_pbr : HInst<
9627 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9628 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9629 "$Rd32 = memw($Rx32++$Mu2:brev)",
9630 tc_2fc0c436, TypeLD>, Enc_74d4e5 {
9631 let Inst{12-5} = 0b00000000;
9632 let Inst{31-21} = 0b10011111100;
9633 let hasNewValue = 1;
9634 let opNewValue = 0;
9635 let accessSize = WordAccess;
9636 let mayLoad = 1;
9637 let Constraints = "$Rx32 = $Rx32in";
9638 }
9639 def L2_loadri_pci : HInst<
9640 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9641 (ins IntRegs:$Rx32in, s4_2Imm:$Ii, ModRegs:$Mu2),
9642 "$Rd32 = memw($Rx32++#$Ii:circ($Mu2))",
9643 tc_4403ca65, TypeLD>, Enc_27fd0e {
9644 let Inst{12-9} = 0b0000;
9645 let Inst{31-21} = 0b10011001100;
9646 let hasNewValue = 1;
9647 let opNewValue = 0;
9648 let addrMode = PostInc;
9649 let accessSize = WordAccess;
9650 let mayLoad = 1;
9651 let Uses = [CS];
9652 let Constraints = "$Rx32 = $Rx32in";
9653 }
9654 def L2_loadri_pcr : HInst<
9655 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9656 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9657 "$Rd32 = memw($Rx32++I:circ($Mu2))",
9658 tc_2fc0c436, TypeLD>, Enc_74d4e5 {
9659 let Inst{12-5} = 0b00010000;
9660 let Inst{31-21} = 0b10011001100;
9661 let hasNewValue = 1;
9662 let opNewValue = 0;
9663 let addrMode = PostInc;
9664 let accessSize = WordAccess;
9665 let mayLoad = 1;
9666 let Uses = [CS];
9667 let Constraints = "$Rx32 = $Rx32in";
9668 }
9669 def L2_loadri_pi : HInst<
9670 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9671 (ins IntRegs:$Rx32in, s4_2Imm:$Ii),
9672 "$Rd32 = memw($Rx32++#$Ii)",
9673 tc_2fc0c436, TypeLD>, Enc_3d920a, PredNewRel, PostInc_BaseImm {
9674 let Inst{13-9} = 0b00000;
9675 let Inst{31-21} = 0b10011011100;
9676 let hasNewValue = 1;
9677 let opNewValue = 0;
9678 let addrMode = PostInc;
9679 let accessSize = WordAccess;
9680 let mayLoad = 1;
9681 let CextOpcode = "L2_loadri";
9682 let BaseOpcode = "L2_loadri_pi";
9683 let isPredicable = 1;
9684 let Constraints = "$Rx32 = $Rx32in";
9685 }
9686 def L2_loadri_pr : HInst<
9687 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9688 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9689 "$Rd32 = memw($Rx32++$Mu2)",
9690 tc_2fc0c436, TypeLD>, Enc_74d4e5 {
9691 let Inst{12-5} = 0b00000000;
9692 let Inst{31-21} = 0b10011101100;
9693 let hasNewValue = 1;
9694 let opNewValue = 0;
9695 let addrMode = PostInc;
9696 let accessSize = WordAccess;
9697 let mayLoad = 1;
9698 let Constraints = "$Rx32 = $Rx32in";
9699 }
9700 def L2_loadri_zomap : HInst<
9701 (outs IntRegs:$Rd32),
9702 (ins IntRegs:$Rs32),
9703 "$Rd32 = memw($Rs32)",
9704 tc_7f881c76, TypeMAPPING> {
9705 let hasNewValue = 1;
9706 let opNewValue = 0;
9707 let isPseudo = 1;
9708 let isCodeGenOnly = 1;
9709 }
9710 def L2_loadrigp : HInst<
9711 (outs IntRegs:$Rd32),
9712 (ins u30_2Imm:$Ii),
9713 "$Rd32 = memw(gp+#$Ii)",
9714 tc_9c98e8af, TypeV2LDST>, Enc_4f4ed7, AddrModeRel {
9715 let Inst{24-21} = 0b1100;
9716 let Inst{31-27} = 0b01001;
9717 let hasNewValue = 1;
9718 let opNewValue = 0;
9719 let accessSize = WordAccess;
9720 let mayLoad = 1;
9721 let Uses = [GP];
9722 let BaseOpcode = "L4_loadri_abs";
9723 let isPredicable = 1;
9724 let opExtendable = 1;
9725 let isExtentSigned = 0;
9726 let opExtentBits = 18;
9727 let opExtentAlign = 2;
9728 }
9729 def L2_loadrub_io : HInst<
9730 (outs IntRegs:$Rd32),
9731 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
9732 "$Rd32 = memub($Rs32+#$Ii)",
9733 tc_7f881c76, TypeLD>, Enc_211aaa, AddrModeRel, PostInc_BaseImm {
9734 let Inst{24-21} = 0b1001;
9735 let Inst{31-27} = 0b10010;
9736 let hasNewValue = 1;
9737 let opNewValue = 0;
9738 let addrMode = BaseImmOffset;
9739 let accessSize = ByteAccess;
9740 let mayLoad = 1;
9741 let CextOpcode = "L2_loadrub";
9742 let BaseOpcode = "L2_loadrub_io";
9743 let isPredicable = 1;
9744 let isExtendable = 1;
9745 let opExtendable = 2;
9746 let isExtentSigned = 1;
9747 let opExtentBits = 11;
9748 let opExtentAlign = 0;
9749 }
9750 def L2_loadrub_pbr : HInst<
9751 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9752 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9753 "$Rd32 = memub($Rx32++$Mu2:brev)",
9754 tc_2fc0c436, TypeLD>, Enc_74d4e5 {
9755 let Inst{12-5} = 0b00000000;
9756 let Inst{31-21} = 0b10011111001;
9757 let hasNewValue = 1;
9758 let opNewValue = 0;
9759 let accessSize = ByteAccess;
9760 let mayLoad = 1;
9761 let Constraints = "$Rx32 = $Rx32in";
9762 }
9763 def L2_loadrub_pci : HInst<
9764 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9765 (ins IntRegs:$Rx32in, s4_0Imm:$Ii, ModRegs:$Mu2),
9766 "$Rd32 = memub($Rx32++#$Ii:circ($Mu2))",
9767 tc_4403ca65, TypeLD>, Enc_e0a47a {
9768 let Inst{12-9} = 0b0000;
9769 let Inst{31-21} = 0b10011001001;
9770 let hasNewValue = 1;
9771 let opNewValue = 0;
9772 let addrMode = PostInc;
9773 let accessSize = ByteAccess;
9774 let mayLoad = 1;
9775 let Uses = [CS];
9776 let Constraints = "$Rx32 = $Rx32in";
9777 }
9778 def L2_loadrub_pcr : HInst<
9779 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9780 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9781 "$Rd32 = memub($Rx32++I:circ($Mu2))",
9782 tc_2fc0c436, TypeLD>, Enc_74d4e5 {
9783 let Inst{12-5} = 0b00010000;
9784 let Inst{31-21} = 0b10011001001;
9785 let hasNewValue = 1;
9786 let opNewValue = 0;
9787 let addrMode = PostInc;
9788 let accessSize = ByteAccess;
9789 let mayLoad = 1;
9790 let Uses = [CS];
9791 let Constraints = "$Rx32 = $Rx32in";
9792 }
9793 def L2_loadrub_pi : HInst<
9794 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9795 (ins IntRegs:$Rx32in, s4_0Imm:$Ii),
9796 "$Rd32 = memub($Rx32++#$Ii)",
9797 tc_2fc0c436, TypeLD>, Enc_222336, PredNewRel, PostInc_BaseImm {
9798 let Inst{13-9} = 0b00000;
9799 let Inst{31-21} = 0b10011011001;
9800 let hasNewValue = 1;
9801 let opNewValue = 0;
9802 let addrMode = PostInc;
9803 let accessSize = ByteAccess;
9804 let mayLoad = 1;
9805 let CextOpcode = "L2_loadrub";
9806 let BaseOpcode = "L2_loadrub_pi";
9807 let isPredicable = 1;
9808 let Constraints = "$Rx32 = $Rx32in";
9809 }
9810 def L2_loadrub_pr : HInst<
9811 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9812 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9813 "$Rd32 = memub($Rx32++$Mu2)",
9814 tc_2fc0c436, TypeLD>, Enc_74d4e5 {
9815 let Inst{12-5} = 0b00000000;
9816 let Inst{31-21} = 0b10011101001;
9817 let hasNewValue = 1;
9818 let opNewValue = 0;
9819 let addrMode = PostInc;
9820 let accessSize = ByteAccess;
9821 let mayLoad = 1;
9822 let Constraints = "$Rx32 = $Rx32in";
9823 }
9824 def L2_loadrub_zomap : HInst<
9825 (outs IntRegs:$Rd32),
9826 (ins IntRegs:$Rs32),
9827 "$Rd32 = memub($Rs32)",
9828 tc_7f881c76, TypeMAPPING> {
9829 let hasNewValue = 1;
9830 let opNewValue = 0;
9831 let isPseudo = 1;
9832 let isCodeGenOnly = 1;
9833 }
9834 def L2_loadrubgp : HInst<
9835 (outs IntRegs:$Rd32),
9836 (ins u32_0Imm:$Ii),
9837 "$Rd32 = memub(gp+#$Ii)",
9838 tc_9c98e8af, TypeV2LDST>, Enc_25bef0, AddrModeRel {
9839 let Inst{24-21} = 0b1001;
9840 let Inst{31-27} = 0b01001;
9841 let hasNewValue = 1;
9842 let opNewValue = 0;
9843 let accessSize = ByteAccess;
9844 let mayLoad = 1;
9845 let Uses = [GP];
9846 let BaseOpcode = "L4_loadrub_abs";
9847 let isPredicable = 1;
9848 let opExtendable = 1;
9849 let isExtentSigned = 0;
9850 let opExtentBits = 16;
9851 let opExtentAlign = 0;
9852 }
9853 def L2_loadruh_io : HInst<
9854 (outs IntRegs:$Rd32),
9855 (ins IntRegs:$Rs32, s31_1Imm:$Ii),
9856 "$Rd32 = memuh($Rs32+#$Ii)",
9857 tc_7f881c76, TypeLD>, Enc_de0214, AddrModeRel, PostInc_BaseImm {
9858 let Inst{24-21} = 0b1011;
9859 let Inst{31-27} = 0b10010;
9860 let hasNewValue = 1;
9861 let opNewValue = 0;
9862 let addrMode = BaseImmOffset;
9863 let accessSize = HalfWordAccess;
9864 let mayLoad = 1;
9865 let CextOpcode = "L2_loadruh";
9866 let BaseOpcode = "L2_loadruh_io";
9867 let isPredicable = 1;
9868 let isExtendable = 1;
9869 let opExtendable = 2;
9870 let isExtentSigned = 1;
9871 let opExtentBits = 12;
9872 let opExtentAlign = 1;
9873 }
9874 def L2_loadruh_pbr : HInst<
9875 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9876 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9877 "$Rd32 = memuh($Rx32++$Mu2:brev)",
9878 tc_2fc0c436, TypeLD>, Enc_74d4e5 {
9879 let Inst{12-5} = 0b00000000;
9880 let Inst{31-21} = 0b10011111011;
9881 let hasNewValue = 1;
9882 let opNewValue = 0;
9883 let accessSize = HalfWordAccess;
9884 let mayLoad = 1;
9885 let Constraints = "$Rx32 = $Rx32in";
9886 }
9887 def L2_loadruh_pci : HInst<
9888 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9889 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, ModRegs:$Mu2),
9890 "$Rd32 = memuh($Rx32++#$Ii:circ($Mu2))",
9891 tc_4403ca65, TypeLD>, Enc_e83554 {
9892 let Inst{12-9} = 0b0000;
9893 let Inst{31-21} = 0b10011001011;
9894 let hasNewValue = 1;
9895 let opNewValue = 0;
9896 let addrMode = PostInc;
9897 let accessSize = HalfWordAccess;
9898 let mayLoad = 1;
9899 let Uses = [CS];
9900 let Constraints = "$Rx32 = $Rx32in";
9901 }
9902 def L2_loadruh_pcr : HInst<
9903 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9904 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9905 "$Rd32 = memuh($Rx32++I:circ($Mu2))",
9906 tc_2fc0c436, TypeLD>, Enc_74d4e5 {
9907 let Inst{12-5} = 0b00010000;
9908 let Inst{31-21} = 0b10011001011;
9909 let hasNewValue = 1;
9910 let opNewValue = 0;
9911 let addrMode = PostInc;
9912 let accessSize = HalfWordAccess;
9913 let mayLoad = 1;
9914 let Uses = [CS];
9915 let Constraints = "$Rx32 = $Rx32in";
9916 }
9917 def L2_loadruh_pi : HInst<
9918 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9919 (ins IntRegs:$Rx32in, s4_1Imm:$Ii),
9920 "$Rd32 = memuh($Rx32++#$Ii)",
9921 tc_2fc0c436, TypeLD>, Enc_152467, PredNewRel, PostInc_BaseImm {
9922 let Inst{13-9} = 0b00000;
9923 let Inst{31-21} = 0b10011011011;
9924 let hasNewValue = 1;
9925 let opNewValue = 0;
9926 let addrMode = PostInc;
9927 let accessSize = HalfWordAccess;
9928 let mayLoad = 1;
9929 let CextOpcode = "L2_loadruh";
9930 let BaseOpcode = "L2_loadruh_pi";
9931 let isPredicable = 1;
9932 let Constraints = "$Rx32 = $Rx32in";
9933 }
9934 def L2_loadruh_pr : HInst<
9935 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9936 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9937 "$Rd32 = memuh($Rx32++$Mu2)",
9938 tc_2fc0c436, TypeLD>, Enc_74d4e5 {
9939 let Inst{12-5} = 0b00000000;
9940 let Inst{31-21} = 0b10011101011;
9941 let hasNewValue = 1;
9942 let opNewValue = 0;
9943 let addrMode = PostInc;
9944 let accessSize = HalfWordAccess;
9945 let mayLoad = 1;
9946 let Constraints = "$Rx32 = $Rx32in";
9947 }
9948 def L2_loadruh_zomap : HInst<
9949 (outs IntRegs:$Rd32),
9950 (ins IntRegs:$Rs32),
9951 "$Rd32 = memuh($Rs32)",
9952 tc_7f881c76, TypeMAPPING> {
9953 let hasNewValue = 1;
9954 let opNewValue = 0;
9955 let isPseudo = 1;
9956 let isCodeGenOnly = 1;
9957 }
9958 def L2_loadruhgp : HInst<
9959 (outs IntRegs:$Rd32),
9960 (ins u31_1Imm:$Ii),
9961 "$Rd32 = memuh(gp+#$Ii)",
9962 tc_9c98e8af, TypeV2LDST>, Enc_8df4be, AddrModeRel {
9963 let Inst{24-21} = 0b1011;
9964 let Inst{31-27} = 0b01001;
9965 let hasNewValue = 1;
9966 let opNewValue = 0;
9967 let accessSize = HalfWordAccess;
9968 let mayLoad = 1;
9969 let Uses = [GP];
9970 let BaseOpcode = "L4_loadruh_abs";
9971 let isPredicable = 1;
9972 let opExtendable = 1;
9973 let isExtentSigned = 0;
9974 let opExtentBits = 17;
9975 let opExtentAlign = 1;
9976 }
9977 def L2_loadw_locked : HInst<
9978 (outs IntRegs:$Rd32),
9979 (ins IntRegs:$Rs32),
9980 "$Rd32 = memw_locked($Rs32)",
9981 tc_6aa5711a, TypeLD>, Enc_5e2823 {
9982 let Inst{13-5} = 0b000000000;
9983 let Inst{31-21} = 0b10010010000;
9984 let hasNewValue = 1;
9985 let opNewValue = 0;
9986 let accessSize = WordAccess;
9987 let mayLoad = 1;
9988 let isSoloAX = 1;
9989 }
9990 def L2_ploadrbf_io : HInst<
9991 (outs IntRegs:$Rd32),
9992 (ins PredRegs:$Pt4, IntRegs:$Rs32, u32_0Imm:$Ii),
9993 "if (!$Pt4) $Rd32 = memb($Rs32+#$Ii)",
9994 tc_ef52ed71, TypeV2LDST>, Enc_a21d47, AddrModeRel {
9995 let Inst{13-13} = 0b0;
9996 let Inst{31-21} = 0b01000101000;
9997 let isPredicated = 1;
9998 let isPredicatedFalse = 1;
9999 let hasNewValue = 1;
10000 let opNewValue = 0;
10001 let addrMode = BaseImmOffset;
10002 let accessSize = ByteAccess;
10003 let mayLoad = 1;
10004 let CextOpcode = "L2_loadrb";
10005 let BaseOpcode = "L2_loadrb_io";
10006 let isExtendable = 1;
10007 let opExtendable = 3;
10008 let isExtentSigned = 0;
10009 let opExtentBits = 6;
10010 let opExtentAlign = 0;
10011 }
10012 def L2_ploadrbf_pi : HInst<
10013 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10014 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_0Imm:$Ii),
10015 "if (!$Pt4) $Rd32 = memb($Rx32++#$Ii)",
10016 tc_bad2bcaf, TypeLD>, Enc_f4413a, PredNewRel {
10017 let Inst{13-11} = 0b101;
10018 let Inst{31-21} = 0b10011011000;
10019 let isPredicated = 1;
10020 let isPredicatedFalse = 1;
10021 let hasNewValue = 1;
10022 let opNewValue = 0;
10023 let addrMode = PostInc;
10024 let accessSize = ByteAccess;
10025 let mayLoad = 1;
10026 let BaseOpcode = "L2_loadrb_pi";
10027 let Constraints = "$Rx32 = $Rx32in";
10028 }
10029 def L2_ploadrbf_zomap : HInst<
10030 (outs IntRegs:$Rd32),
10031 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10032 "if (!$Pt4) $Rd32 = memb($Rs32)",
10033 tc_ef52ed71, TypeMAPPING> {
10034 let hasNewValue = 1;
10035 let opNewValue = 0;
10036 let isPseudo = 1;
10037 let isCodeGenOnly = 1;
10038 }
10039 def L2_ploadrbfnew_io : HInst<
10040 (outs IntRegs:$Rd32),
10041 (ins PredRegs:$Pt4, IntRegs:$Rs32, u32_0Imm:$Ii),
10042 "if (!$Pt4.new) $Rd32 = memb($Rs32+#$Ii)",
10043 tc_2fc0c436, TypeV2LDST>, Enc_a21d47, AddrModeRel {
10044 let Inst{13-13} = 0b0;
10045 let Inst{31-21} = 0b01000111000;
10046 let isPredicated = 1;
10047 let isPredicatedFalse = 1;
10048 let hasNewValue = 1;
10049 let opNewValue = 0;
10050 let addrMode = BaseImmOffset;
10051 let accessSize = ByteAccess;
10052 let isPredicatedNew = 1;
10053 let mayLoad = 1;
10054 let CextOpcode = "L2_loadrb";
10055 let BaseOpcode = "L2_loadrb_io";
10056 let isExtendable = 1;
10057 let opExtendable = 3;
10058 let isExtentSigned = 0;
10059 let opExtentBits = 6;
10060 let opExtentAlign = 0;
10061 }
10062 def L2_ploadrbfnew_pi : HInst<
10063 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10064 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_0Imm:$Ii),
10065 "if (!$Pt4.new) $Rd32 = memb($Rx32++#$Ii)",
10066 tc_63fe3df7, TypeLD>, Enc_f4413a, PredNewRel {
10067 let Inst{13-11} = 0b111;
10068 let Inst{31-21} = 0b10011011000;
10069 let isPredicated = 1;
10070 let isPredicatedFalse = 1;
10071 let hasNewValue = 1;
10072 let opNewValue = 0;
10073 let addrMode = PostInc;
10074 let accessSize = ByteAccess;
10075 let isPredicatedNew = 1;
10076 let mayLoad = 1;
10077 let BaseOpcode = "L2_loadrb_pi";
10078 let Constraints = "$Rx32 = $Rx32in";
10079 }
10080 def L2_ploadrbfnew_zomap : HInst<
10081 (outs IntRegs:$Rd32),
10082 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10083 "if (!$Pt4.new) $Rd32 = memb($Rs32)",
10084 tc_2fc0c436, TypeMAPPING> {
10085 let hasNewValue = 1;
10086 let opNewValue = 0;
10087 let isPseudo = 1;
10088 let isCodeGenOnly = 1;
10089 }
10090 def L2_ploadrbt_io : HInst<
10091 (outs IntRegs:$Rd32),
10092 (ins PredRegs:$Pt4, IntRegs:$Rs32, u32_0Imm:$Ii),
10093 "if ($Pt4) $Rd32 = memb($Rs32+#$Ii)",
10094 tc_ef52ed71, TypeV2LDST>, Enc_a21d47, AddrModeRel {
10095 let Inst{13-13} = 0b0;
10096 let Inst{31-21} = 0b01000001000;
10097 let isPredicated = 1;
10098 let hasNewValue = 1;
10099 let opNewValue = 0;
10100 let addrMode = BaseImmOffset;
10101 let accessSize = ByteAccess;
10102 let mayLoad = 1;
10103 let CextOpcode = "L2_loadrb";
10104 let BaseOpcode = "L2_loadrb_io";
10105 let isExtendable = 1;
10106 let opExtendable = 3;
10107 let isExtentSigned = 0;
10108 let opExtentBits = 6;
10109 let opExtentAlign = 0;
10110 }
10111 def L2_ploadrbt_pi : HInst<
10112 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10113 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_0Imm:$Ii),
10114 "if ($Pt4) $Rd32 = memb($Rx32++#$Ii)",
10115 tc_bad2bcaf, TypeLD>, Enc_f4413a, PredNewRel {
10116 let Inst{13-11} = 0b100;
10117 let Inst{31-21} = 0b10011011000;
10118 let isPredicated = 1;
10119 let hasNewValue = 1;
10120 let opNewValue = 0;
10121 let addrMode = PostInc;
10122 let accessSize = ByteAccess;
10123 let mayLoad = 1;
10124 let BaseOpcode = "L2_loadrb_pi";
10125 let Constraints = "$Rx32 = $Rx32in";
10126 }
10127 def L2_ploadrbt_zomap : HInst<
10128 (outs IntRegs:$Rd32),
10129 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10130 "if ($Pt4) $Rd32 = memb($Rs32)",
10131 tc_ef52ed71, TypeMAPPING> {
10132 let hasNewValue = 1;
10133 let opNewValue = 0;
10134 let isPseudo = 1;
10135 let isCodeGenOnly = 1;
10136 }
10137 def L2_ploadrbtnew_io : HInst<
10138 (outs IntRegs:$Rd32),
10139 (ins PredRegs:$Pt4, IntRegs:$Rs32, u32_0Imm:$Ii),
10140 "if ($Pt4.new) $Rd32 = memb($Rs32+#$Ii)",
10141 tc_2fc0c436, TypeV2LDST>, Enc_a21d47, AddrModeRel {
10142 let Inst{13-13} = 0b0;
10143 let Inst{31-21} = 0b01000011000;
10144 let isPredicated = 1;
10145 let hasNewValue = 1;
10146 let opNewValue = 0;
10147 let addrMode = BaseImmOffset;
10148 let accessSize = ByteAccess;
10149 let isPredicatedNew = 1;
10150 let mayLoad = 1;
10151 let CextOpcode = "L2_loadrb";
10152 let BaseOpcode = "L2_loadrb_io";
10153 let isExtendable = 1;
10154 let opExtendable = 3;
10155 let isExtentSigned = 0;
10156 let opExtentBits = 6;
10157 let opExtentAlign = 0;
10158 }
10159 def L2_ploadrbtnew_pi : HInst<
10160 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10161 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_0Imm:$Ii),
10162 "if ($Pt4.new) $Rd32 = memb($Rx32++#$Ii)",
10163 tc_63fe3df7, TypeLD>, Enc_f4413a, PredNewRel {
10164 let Inst{13-11} = 0b110;
10165 let Inst{31-21} = 0b10011011000;
10166 let isPredicated = 1;
10167 let hasNewValue = 1;
10168 let opNewValue = 0;
10169 let addrMode = PostInc;
10170 let accessSize = ByteAccess;
10171 let isPredicatedNew = 1;
10172 let mayLoad = 1;
10173 let BaseOpcode = "L2_loadrb_pi";
10174 let Constraints = "$Rx32 = $Rx32in";
10175 }
10176 def L2_ploadrbtnew_zomap : HInst<
10177 (outs IntRegs:$Rd32),
10178 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10179 "if ($Pt4.new) $Rd32 = memb($Rs32)",
10180 tc_2fc0c436, TypeMAPPING> {
10181 let hasNewValue = 1;
10182 let opNewValue = 0;
10183 let isPseudo = 1;
10184 let isCodeGenOnly = 1;
10185 }
10186 def L2_ploadrdf_io : HInst<
10187 (outs DoubleRegs:$Rdd32),
10188 (ins PredRegs:$Pt4, IntRegs:$Rs32, u29_3Imm:$Ii),
10189 "if (!$Pt4) $Rdd32 = memd($Rs32+#$Ii)",
10190 tc_ef52ed71, TypeV2LDST>, Enc_acd6ed, AddrModeRel {
10191 let Inst{13-13} = 0b0;
10192 let Inst{31-21} = 0b01000101110;
10193 let isPredicated = 1;
10194 let isPredicatedFalse = 1;
10195 let addrMode = BaseImmOffset;
10196 let accessSize = DoubleWordAccess;
10197 let mayLoad = 1;
10198 let CextOpcode = "L2_loadrd";
10199 let BaseOpcode = "L2_loadrd_io";
10200 let isExtendable = 1;
10201 let opExtendable = 3;
10202 let isExtentSigned = 0;
10203 let opExtentBits = 9;
10204 let opExtentAlign = 3;
10205 }
10206 def L2_ploadrdf_pi : HInst<
10207 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
10208 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_3Imm:$Ii),
10209 "if (!$Pt4) $Rdd32 = memd($Rx32++#$Ii)",
10210 tc_bad2bcaf, TypeLD>, Enc_9d1247, PredNewRel {
10211 let Inst{13-11} = 0b101;
10212 let Inst{31-21} = 0b10011011110;
10213 let isPredicated = 1;
10214 let isPredicatedFalse = 1;
10215 let addrMode = PostInc;
10216 let accessSize = DoubleWordAccess;
10217 let mayLoad = 1;
10218 let BaseOpcode = "L2_loadrd_pi";
10219 let Constraints = "$Rx32 = $Rx32in";
10220 }
10221 def L2_ploadrdf_zomap : HInst<
10222 (outs DoubleRegs:$Rdd32),
10223 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10224 "if (!$Pt4) $Rdd32 = memd($Rs32)",
10225 tc_ef52ed71, TypeMAPPING> {
10226 let isPseudo = 1;
10227 let isCodeGenOnly = 1;
10228 }
10229 def L2_ploadrdfnew_io : HInst<
10230 (outs DoubleRegs:$Rdd32),
10231 (ins PredRegs:$Pt4, IntRegs:$Rs32, u29_3Imm:$Ii),
10232 "if (!$Pt4.new) $Rdd32 = memd($Rs32+#$Ii)",
10233 tc_2fc0c436, TypeV2LDST>, Enc_acd6ed, AddrModeRel {
10234 let Inst{13-13} = 0b0;
10235 let Inst{31-21} = 0b01000111110;
10236 let isPredicated = 1;
10237 let isPredicatedFalse = 1;
10238 let addrMode = BaseImmOffset;
10239 let accessSize = DoubleWordAccess;
10240 let isPredicatedNew = 1;
10241 let mayLoad = 1;
10242 let CextOpcode = "L2_loadrd";
10243 let BaseOpcode = "L2_loadrd_io";
10244 let isExtendable = 1;
10245 let opExtendable = 3;
10246 let isExtentSigned = 0;
10247 let opExtentBits = 9;
10248 let opExtentAlign = 3;
10249 }
10250 def L2_ploadrdfnew_pi : HInst<
10251 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
10252 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_3Imm:$Ii),
10253 "if (!$Pt4.new) $Rdd32 = memd($Rx32++#$Ii)",
10254 tc_63fe3df7, TypeLD>, Enc_9d1247, PredNewRel {
10255 let Inst{13-11} = 0b111;
10256 let Inst{31-21} = 0b10011011110;
10257 let isPredicated = 1;
10258 let isPredicatedFalse = 1;
10259 let addrMode = PostInc;
10260 let accessSize = DoubleWordAccess;
10261 let isPredicatedNew = 1;
10262 let mayLoad = 1;
10263 let BaseOpcode = "L2_loadrd_pi";
10264 let Constraints = "$Rx32 = $Rx32in";
10265 }
10266 def L2_ploadrdfnew_zomap : HInst<
10267 (outs DoubleRegs:$Rdd32),
10268 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10269 "if (!$Pt4.new) $Rdd32 = memd($Rs32)",
10270 tc_2fc0c436, TypeMAPPING> {
10271 let isPseudo = 1;
10272 let isCodeGenOnly = 1;
10273 }
10274 def L2_ploadrdt_io : HInst<
10275 (outs DoubleRegs:$Rdd32),
10276 (ins PredRegs:$Pt4, IntRegs:$Rs32, u29_3Imm:$Ii),
10277 "if ($Pt4) $Rdd32 = memd($Rs32+#$Ii)",
10278 tc_ef52ed71, TypeV2LDST>, Enc_acd6ed, AddrModeRel {
10279 let Inst{13-13} = 0b0;
10280 let Inst{31-21} = 0b01000001110;
10281 let isPredicated = 1;
10282 let addrMode = BaseImmOffset;
10283 let accessSize = DoubleWordAccess;
10284 let mayLoad = 1;
10285 let CextOpcode = "L2_loadrd";
10286 let BaseOpcode = "L2_loadrd_io";
10287 let isExtendable = 1;
10288 let opExtendable = 3;
10289 let isExtentSigned = 0;
10290 let opExtentBits = 9;
10291 let opExtentAlign = 3;
10292 }
10293 def L2_ploadrdt_pi : HInst<
10294 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
10295 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_3Imm:$Ii),
10296 "if ($Pt4) $Rdd32 = memd($Rx32++#$Ii)",
10297 tc_bad2bcaf, TypeLD>, Enc_9d1247, PredNewRel {
10298 let Inst{13-11} = 0b100;
10299 let Inst{31-21} = 0b10011011110;
10300 let isPredicated = 1;
10301 let addrMode = PostInc;
10302 let accessSize = DoubleWordAccess;
10303 let mayLoad = 1;
10304 let BaseOpcode = "L2_loadrd_pi";
10305 let Constraints = "$Rx32 = $Rx32in";
10306 }
10307 def L2_ploadrdt_zomap : HInst<
10308 (outs DoubleRegs:$Rdd32),
10309 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10310 "if ($Pt4) $Rdd32 = memd($Rs32)",
10311 tc_ef52ed71, TypeMAPPING> {
10312 let isPseudo = 1;
10313 let isCodeGenOnly = 1;
10314 }
10315 def L2_ploadrdtnew_io : HInst<
10316 (outs DoubleRegs:$Rdd32),
10317 (ins PredRegs:$Pt4, IntRegs:$Rs32, u29_3Imm:$Ii),
10318 "if ($Pt4.new) $Rdd32 = memd($Rs32+#$Ii)",
10319 tc_2fc0c436, TypeV2LDST>, Enc_acd6ed, AddrModeRel {
10320 let Inst{13-13} = 0b0;
10321 let Inst{31-21} = 0b01000011110;
10322 let isPredicated = 1;
10323 let addrMode = BaseImmOffset;
10324 let accessSize = DoubleWordAccess;
10325 let isPredicatedNew = 1;
10326 let mayLoad = 1;
10327 let CextOpcode = "L2_loadrd";
10328 let BaseOpcode = "L2_loadrd_io";
10329 let isExtendable = 1;
10330 let opExtendable = 3;
10331 let isExtentSigned = 0;
10332 let opExtentBits = 9;
10333 let opExtentAlign = 3;
10334 }
10335 def L2_ploadrdtnew_pi : HInst<
10336 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
10337 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_3Imm:$Ii),
10338 "if ($Pt4.new) $Rdd32 = memd($Rx32++#$Ii)",
10339 tc_63fe3df7, TypeLD>, Enc_9d1247, PredNewRel {
10340 let Inst{13-11} = 0b110;
10341 let Inst{31-21} = 0b10011011110;
10342 let isPredicated = 1;
10343 let addrMode = PostInc;
10344 let accessSize = DoubleWordAccess;
10345 let isPredicatedNew = 1;
10346 let mayLoad = 1;
10347 let BaseOpcode = "L2_loadrd_pi";
10348 let Constraints = "$Rx32 = $Rx32in";
10349 }
10350 def L2_ploadrdtnew_zomap : HInst<
10351 (outs DoubleRegs:$Rdd32),
10352 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10353 "if ($Pt4.new) $Rdd32 = memd($Rs32)",
10354 tc_2fc0c436, TypeMAPPING> {
10355 let isPseudo = 1;
10356 let isCodeGenOnly = 1;
10357 }
10358 def L2_ploadrhf_io : HInst<
10359 (outs IntRegs:$Rd32),
10360 (ins PredRegs:$Pt4, IntRegs:$Rs32, u31_1Imm:$Ii),
10361 "if (!$Pt4) $Rd32 = memh($Rs32+#$Ii)",
10362 tc_ef52ed71, TypeV2LDST>, Enc_a198f6, AddrModeRel {
10363 let Inst{13-13} = 0b0;
10364 let Inst{31-21} = 0b01000101010;
10365 let isPredicated = 1;
10366 let isPredicatedFalse = 1;
10367 let hasNewValue = 1;
10368 let opNewValue = 0;
10369 let addrMode = BaseImmOffset;
10370 let accessSize = HalfWordAccess;
10371 let mayLoad = 1;
10372 let CextOpcode = "L2_loadrh";
10373 let BaseOpcode = "L2_loadrh_io";
10374 let isExtendable = 1;
10375 let opExtendable = 3;
10376 let isExtentSigned = 0;
10377 let opExtentBits = 7;
10378 let opExtentAlign = 1;
10379 }
10380 def L2_ploadrhf_pi : HInst<
10381 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10382 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_1Imm:$Ii),
10383 "if (!$Pt4) $Rd32 = memh($Rx32++#$Ii)",
10384 tc_bad2bcaf, TypeLD>, Enc_733b27, PredNewRel {
10385 let Inst{13-11} = 0b101;
10386 let Inst{31-21} = 0b10011011010;
10387 let isPredicated = 1;
10388 let isPredicatedFalse = 1;
10389 let hasNewValue = 1;
10390 let opNewValue = 0;
10391 let addrMode = PostInc;
10392 let accessSize = HalfWordAccess;
10393 let mayLoad = 1;
10394 let BaseOpcode = "L2_loadrh_pi";
10395 let Constraints = "$Rx32 = $Rx32in";
10396 }
10397 def L2_ploadrhf_zomap : HInst<
10398 (outs IntRegs:$Rd32),
10399 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10400 "if (!$Pt4) $Rd32 = memh($Rs32)",
10401 tc_ef52ed71, TypeMAPPING> {
10402 let hasNewValue = 1;
10403 let opNewValue = 0;
10404 let isPseudo = 1;
10405 let isCodeGenOnly = 1;
10406 }
10407 def L2_ploadrhfnew_io : HInst<
10408 (outs IntRegs:$Rd32),
10409 (ins PredRegs:$Pt4, IntRegs:$Rs32, u31_1Imm:$Ii),
10410 "if (!$Pt4.new) $Rd32 = memh($Rs32+#$Ii)",
10411 tc_2fc0c436, TypeV2LDST>, Enc_a198f6, AddrModeRel {
10412 let Inst{13-13} = 0b0;
10413 let Inst{31-21} = 0b01000111010;
10414 let isPredicated = 1;
10415 let isPredicatedFalse = 1;
10416 let hasNewValue = 1;
10417 let opNewValue = 0;
10418 let addrMode = BaseImmOffset;
10419 let accessSize = HalfWordAccess;
10420 let isPredicatedNew = 1;
10421 let mayLoad = 1;
10422 let CextOpcode = "L2_loadrh";
10423 let BaseOpcode = "L2_loadrh_io";
10424 let isExtendable = 1;
10425 let opExtendable = 3;
10426 let isExtentSigned = 0;
10427 let opExtentBits = 7;
10428 let opExtentAlign = 1;
10429 }
10430 def L2_ploadrhfnew_pi : HInst<
10431 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10432 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_1Imm:$Ii),
10433 "if (!$Pt4.new) $Rd32 = memh($Rx32++#$Ii)",
10434 tc_63fe3df7, TypeLD>, Enc_733b27, PredNewRel {
10435 let Inst{13-11} = 0b111;
10436 let Inst{31-21} = 0b10011011010;
10437 let isPredicated = 1;
10438 let isPredicatedFalse = 1;
10439 let hasNewValue = 1;
10440 let opNewValue = 0;
10441 let addrMode = PostInc;
10442 let accessSize = HalfWordAccess;
10443 let isPredicatedNew = 1;
10444 let mayLoad = 1;
10445 let BaseOpcode = "L2_loadrh_pi";
10446 let Constraints = "$Rx32 = $Rx32in";
10447 }
10448 def L2_ploadrhfnew_zomap : HInst<
10449 (outs IntRegs:$Rd32),
10450 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10451 "if (!$Pt4.new) $Rd32 = memh($Rs32)",
10452 tc_2fc0c436, TypeMAPPING> {
10453 let hasNewValue = 1;
10454 let opNewValue = 0;
10455 let isPseudo = 1;
10456 let isCodeGenOnly = 1;
10457 }
10458 def L2_ploadrht_io : HInst<
10459 (outs IntRegs:$Rd32),
10460 (ins PredRegs:$Pt4, IntRegs:$Rs32, u31_1Imm:$Ii),
10461 "if ($Pt4) $Rd32 = memh($Rs32+#$Ii)",
10462 tc_ef52ed71, TypeV2LDST>, Enc_a198f6, AddrModeRel {
10463 let Inst{13-13} = 0b0;
10464 let Inst{31-21} = 0b01000001010;
10465 let isPredicated = 1;
10466 let hasNewValue = 1;
10467 let opNewValue = 0;
10468 let addrMode = BaseImmOffset;
10469 let accessSize = HalfWordAccess;
10470 let mayLoad = 1;
10471 let CextOpcode = "L2_loadrh";
10472 let BaseOpcode = "L2_loadrh_io";
10473 let isExtendable = 1;
10474 let opExtendable = 3;
10475 let isExtentSigned = 0;
10476 let opExtentBits = 7;
10477 let opExtentAlign = 1;
10478 }
10479 def L2_ploadrht_pi : HInst<
10480 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10481 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_1Imm:$Ii),
10482 "if ($Pt4) $Rd32 = memh($Rx32++#$Ii)",
10483 tc_bad2bcaf, TypeLD>, Enc_733b27, PredNewRel {
10484 let Inst{13-11} = 0b100;
10485 let Inst{31-21} = 0b10011011010;
10486 let isPredicated = 1;
10487 let hasNewValue = 1;
10488 let opNewValue = 0;
10489 let addrMode = PostInc;
10490 let accessSize = HalfWordAccess;
10491 let mayLoad = 1;
10492 let BaseOpcode = "L2_loadrh_pi";
10493 let Constraints = "$Rx32 = $Rx32in";
10494 }
10495 def L2_ploadrht_zomap : HInst<
10496 (outs IntRegs:$Rd32),
10497 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10498 "if ($Pt4) $Rd32 = memh($Rs32)",
10499 tc_ef52ed71, TypeMAPPING> {
10500 let hasNewValue = 1;
10501 let opNewValue = 0;
10502 let isPseudo = 1;
10503 let isCodeGenOnly = 1;
10504 }
10505 def L2_ploadrhtnew_io : HInst<
10506 (outs IntRegs:$Rd32),
10507 (ins PredRegs:$Pt4, IntRegs:$Rs32, u31_1Imm:$Ii),
10508 "if ($Pt4.new) $Rd32 = memh($Rs32+#$Ii)",
10509 tc_2fc0c436, TypeV2LDST>, Enc_a198f6, AddrModeRel {
10510 let Inst{13-13} = 0b0;
10511 let Inst{31-21} = 0b01000011010;
10512 let isPredicated = 1;
10513 let hasNewValue = 1;
10514 let opNewValue = 0;
10515 let addrMode = BaseImmOffset;
10516 let accessSize = HalfWordAccess;
10517 let isPredicatedNew = 1;
10518 let mayLoad = 1;
10519 let CextOpcode = "L2_loadrh";
10520 let BaseOpcode = "L2_loadrh_io";
10521 let isExtendable = 1;
10522 let opExtendable = 3;
10523 let isExtentSigned = 0;
10524 let opExtentBits = 7;
10525 let opExtentAlign = 1;
10526 }
10527 def L2_ploadrhtnew_pi : HInst<
10528 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10529 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_1Imm:$Ii),
10530 "if ($Pt4.new) $Rd32 = memh($Rx32++#$Ii)",
10531 tc_63fe3df7, TypeLD>, Enc_733b27, PredNewRel {
10532 let Inst{13-11} = 0b110;
10533 let Inst{31-21} = 0b10011011010;
10534 let isPredicated = 1;
10535 let hasNewValue = 1;
10536 let opNewValue = 0;
10537 let addrMode = PostInc;
10538 let accessSize = HalfWordAccess;
10539 let isPredicatedNew = 1;
10540 let mayLoad = 1;
10541 let BaseOpcode = "L2_loadrh_pi";
10542 let Constraints = "$Rx32 = $Rx32in";
10543 }
10544 def L2_ploadrhtnew_zomap : HInst<
10545 (outs IntRegs:$Rd32),
10546 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10547 "if ($Pt4.new) $Rd32 = memh($Rs32)",
10548 tc_2fc0c436, TypeMAPPING> {
10549 let hasNewValue = 1;
10550 let opNewValue = 0;
10551 let isPseudo = 1;
10552 let isCodeGenOnly = 1;
10553 }
10554 def L2_ploadrif_io : HInst<
10555 (outs IntRegs:$Rd32),
10556 (ins PredRegs:$Pt4, IntRegs:$Rs32, u30_2Imm:$Ii),
10557 "if (!$Pt4) $Rd32 = memw($Rs32+#$Ii)",
10558 tc_ef52ed71, TypeV2LDST>, Enc_f82eaf, AddrModeRel {
10559 let Inst{13-13} = 0b0;
10560 let Inst{31-21} = 0b01000101100;
10561 let isPredicated = 1;
10562 let isPredicatedFalse = 1;
10563 let hasNewValue = 1;
10564 let opNewValue = 0;
10565 let addrMode = BaseImmOffset;
10566 let accessSize = WordAccess;
10567 let mayLoad = 1;
10568 let CextOpcode = "L2_loadri";
10569 let BaseOpcode = "L2_loadri_io";
10570 let isExtendable = 1;
10571 let opExtendable = 3;
10572 let isExtentSigned = 0;
10573 let opExtentBits = 8;
10574 let opExtentAlign = 2;
10575 }
10576 def L2_ploadrif_pi : HInst<
10577 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10578 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_2Imm:$Ii),
10579 "if (!$Pt4) $Rd32 = memw($Rx32++#$Ii)",
10580 tc_bad2bcaf, TypeLD>, Enc_b97f71, PredNewRel {
10581 let Inst{13-11} = 0b101;
10582 let Inst{31-21} = 0b10011011100;
10583 let isPredicated = 1;
10584 let isPredicatedFalse = 1;
10585 let hasNewValue = 1;
10586 let opNewValue = 0;
10587 let addrMode = PostInc;
10588 let accessSize = WordAccess;
10589 let mayLoad = 1;
10590 let BaseOpcode = "L2_loadri_pi";
10591 let Constraints = "$Rx32 = $Rx32in";
10592 }
10593 def L2_ploadrif_zomap : HInst<
10594 (outs IntRegs:$Rd32),
10595 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10596 "if (!$Pt4) $Rd32 = memw($Rs32)",
10597 tc_ef52ed71, TypeMAPPING> {
10598 let hasNewValue = 1;
10599 let opNewValue = 0;
10600 let isPseudo = 1;
10601 let isCodeGenOnly = 1;
10602 }
10603 def L2_ploadrifnew_io : HInst<
10604 (outs IntRegs:$Rd32),
10605 (ins PredRegs:$Pt4, IntRegs:$Rs32, u30_2Imm:$Ii),
10606 "if (!$Pt4.new) $Rd32 = memw($Rs32+#$Ii)",
10607 tc_2fc0c436, TypeV2LDST>, Enc_f82eaf, AddrModeRel {
10608 let Inst{13-13} = 0b0;
10609 let Inst{31-21} = 0b01000111100;
10610 let isPredicated = 1;
10611 let isPredicatedFalse = 1;
10612 let hasNewValue = 1;
10613 let opNewValue = 0;
10614 let addrMode = BaseImmOffset;
10615 let accessSize = WordAccess;
10616 let isPredicatedNew = 1;
10617 let mayLoad = 1;
10618 let CextOpcode = "L2_loadri";
10619 let BaseOpcode = "L2_loadri_io";
10620 let isExtendable = 1;
10621 let opExtendable = 3;
10622 let isExtentSigned = 0;
10623 let opExtentBits = 8;
10624 let opExtentAlign = 2;
10625 }
10626 def L2_ploadrifnew_pi : HInst<
10627 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10628 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_2Imm:$Ii),
10629 "if (!$Pt4.new) $Rd32 = memw($Rx32++#$Ii)",
10630 tc_63fe3df7, TypeLD>, Enc_b97f71, PredNewRel {
10631 let Inst{13-11} = 0b111;
10632 let Inst{31-21} = 0b10011011100;
10633 let isPredicated = 1;
10634 let isPredicatedFalse = 1;
10635 let hasNewValue = 1;
10636 let opNewValue = 0;
10637 let addrMode = PostInc;
10638 let accessSize = WordAccess;
10639 let isPredicatedNew = 1;
10640 let mayLoad = 1;
10641 let BaseOpcode = "L2_loadri_pi";
10642 let Constraints = "$Rx32 = $Rx32in";
10643 }
10644 def L2_ploadrifnew_zomap : HInst<
10645 (outs IntRegs:$Rd32),
10646 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10647 "if (!$Pt4.new) $Rd32 = memw($Rs32)",
10648 tc_2fc0c436, TypeMAPPING> {
10649 let hasNewValue = 1;
10650 let opNewValue = 0;
10651 let isPseudo = 1;
10652 let isCodeGenOnly = 1;
10653 }
10654 def L2_ploadrit_io : HInst<
10655 (outs IntRegs:$Rd32),
10656 (ins PredRegs:$Pt4, IntRegs:$Rs32, u30_2Imm:$Ii),
10657 "if ($Pt4) $Rd32 = memw($Rs32+#$Ii)",
10658 tc_ef52ed71, TypeV2LDST>, Enc_f82eaf, AddrModeRel {
10659 let Inst{13-13} = 0b0;
10660 let Inst{31-21} = 0b01000001100;
10661 let isPredicated = 1;
10662 let hasNewValue = 1;
10663 let opNewValue = 0;
10664 let addrMode = BaseImmOffset;
10665 let accessSize = WordAccess;
10666 let mayLoad = 1;
10667 let CextOpcode = "L2_loadri";
10668 let BaseOpcode = "L2_loadri_io";
10669 let isExtendable = 1;
10670 let opExtendable = 3;
10671 let isExtentSigned = 0;
10672 let opExtentBits = 8;
10673 let opExtentAlign = 2;
10674 }
10675 def L2_ploadrit_pi : HInst<
10676 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10677 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_2Imm:$Ii),
10678 "if ($Pt4) $Rd32 = memw($Rx32++#$Ii)",
10679 tc_bad2bcaf, TypeLD>, Enc_b97f71, PredNewRel {
10680 let Inst{13-11} = 0b100;
10681 let Inst{31-21} = 0b10011011100;
10682 let isPredicated = 1;
10683 let hasNewValue = 1;
10684 let opNewValue = 0;
10685 let addrMode = PostInc;
10686 let accessSize = WordAccess;
10687 let mayLoad = 1;
10688 let BaseOpcode = "L2_loadri_pi";
10689 let Constraints = "$Rx32 = $Rx32in";
10690 }
10691 def L2_ploadrit_zomap : HInst<
10692 (outs IntRegs:$Rd32),
10693 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10694 "if ($Pt4) $Rd32 = memw($Rs32)",
10695 tc_ef52ed71, TypeMAPPING> {
10696 let hasNewValue = 1;
10697 let opNewValue = 0;
10698 let isPseudo = 1;
10699 let isCodeGenOnly = 1;
10700 }
10701 def L2_ploadritnew_io : HInst<
10702 (outs IntRegs:$Rd32),
10703 (ins PredRegs:$Pt4, IntRegs:$Rs32, u30_2Imm:$Ii),
10704 "if ($Pt4.new) $Rd32 = memw($Rs32+#$Ii)",
10705 tc_2fc0c436, TypeV2LDST>, Enc_f82eaf, AddrModeRel {
10706 let Inst{13-13} = 0b0;
10707 let Inst{31-21} = 0b01000011100;
10708 let isPredicated = 1;
10709 let hasNewValue = 1;
10710 let opNewValue = 0;
10711 let addrMode = BaseImmOffset;
10712 let accessSize = WordAccess;
10713 let isPredicatedNew = 1;
10714 let mayLoad = 1;
10715 let CextOpcode = "L2_loadri";
10716 let BaseOpcode = "L2_loadri_io";
10717 let isExtendable = 1;
10718 let opExtendable = 3;
10719 let isExtentSigned = 0;
10720 let opExtentBits = 8;
10721 let opExtentAlign = 2;
10722 }
10723 def L2_ploadritnew_pi : HInst<
10724 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10725 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_2Imm:$Ii),
10726 "if ($Pt4.new) $Rd32 = memw($Rx32++#$Ii)",
10727 tc_63fe3df7, TypeLD>, Enc_b97f71, PredNewRel {
10728 let Inst{13-11} = 0b110;
10729 let Inst{31-21} = 0b10011011100;
10730 let isPredicated = 1;
10731 let hasNewValue = 1;
10732 let opNewValue = 0;
10733 let addrMode = PostInc;
10734 let accessSize = WordAccess;
10735 let isPredicatedNew = 1;
10736 let mayLoad = 1;
10737 let BaseOpcode = "L2_loadri_pi";
10738 let Constraints = "$Rx32 = $Rx32in";
10739 }
10740 def L2_ploadritnew_zomap : HInst<
10741 (outs IntRegs:$Rd32),
10742 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10743 "if ($Pt4.new) $Rd32 = memw($Rs32)",
10744 tc_2fc0c436, TypeMAPPING> {
10745 let hasNewValue = 1;
10746 let opNewValue = 0;
10747 let isPseudo = 1;
10748 let isCodeGenOnly = 1;
10749 }
10750 def L2_ploadrubf_io : HInst<
10751 (outs IntRegs:$Rd32),
10752 (ins PredRegs:$Pt4, IntRegs:$Rs32, u32_0Imm:$Ii),
10753 "if (!$Pt4) $Rd32 = memub($Rs32+#$Ii)",
10754 tc_ef52ed71, TypeV2LDST>, Enc_a21d47, AddrModeRel {
10755 let Inst{13-13} = 0b0;
10756 let Inst{31-21} = 0b01000101001;
10757 let isPredicated = 1;
10758 let isPredicatedFalse = 1;
10759 let hasNewValue = 1;
10760 let opNewValue = 0;
10761 let addrMode = BaseImmOffset;
10762 let accessSize = ByteAccess;
10763 let mayLoad = 1;
10764 let CextOpcode = "L2_loadrub";
10765 let BaseOpcode = "L2_loadrub_io";
10766 let isExtendable = 1;
10767 let opExtendable = 3;
10768 let isExtentSigned = 0;
10769 let opExtentBits = 6;
10770 let opExtentAlign = 0;
10771 }
10772 def L2_ploadrubf_pi : HInst<
10773 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10774 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_0Imm:$Ii),
10775 "if (!$Pt4) $Rd32 = memub($Rx32++#$Ii)",
10776 tc_bad2bcaf, TypeLD>, Enc_f4413a, PredNewRel {
10777 let Inst{13-11} = 0b101;
10778 let Inst{31-21} = 0b10011011001;
10779 let isPredicated = 1;
10780 let isPredicatedFalse = 1;
10781 let hasNewValue = 1;
10782 let opNewValue = 0;
10783 let addrMode = PostInc;
10784 let accessSize = ByteAccess;
10785 let mayLoad = 1;
10786 let BaseOpcode = "L2_loadrub_pi";
10787 let Constraints = "$Rx32 = $Rx32in";
10788 }
10789 def L2_ploadrubf_zomap : HInst<
10790 (outs IntRegs:$Rd32),
10791 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10792 "if (!$Pt4) $Rd32 = memub($Rs32)",
10793 tc_ef52ed71, TypeMAPPING> {
10794 let hasNewValue = 1;
10795 let opNewValue = 0;
10796 let isPseudo = 1;
10797 let isCodeGenOnly = 1;
10798 }
10799 def L2_ploadrubfnew_io : HInst<
10800 (outs IntRegs:$Rd32),
10801 (ins PredRegs:$Pt4, IntRegs:$Rs32, u32_0Imm:$Ii),
10802 "if (!$Pt4.new) $Rd32 = memub($Rs32+#$Ii)",
10803 tc_2fc0c436, TypeV2LDST>, Enc_a21d47, AddrModeRel {
10804 let Inst{13-13} = 0b0;
10805 let Inst{31-21} = 0b01000111001;
10806 let isPredicated = 1;
10807 let isPredicatedFalse = 1;
10808 let hasNewValue = 1;
10809 let opNewValue = 0;
10810 let addrMode = BaseImmOffset;
10811 let accessSize = ByteAccess;
10812 let isPredicatedNew = 1;
10813 let mayLoad = 1;
10814 let CextOpcode = "L2_loadrub";
10815 let BaseOpcode = "L2_loadrub_io";
10816 let isExtendable = 1;
10817 let opExtendable = 3;
10818 let isExtentSigned = 0;
10819 let opExtentBits = 6;
10820 let opExtentAlign = 0;
10821 }
10822 def L2_ploadrubfnew_pi : HInst<
10823 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10824 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_0Imm:$Ii),
10825 "if (!$Pt4.new) $Rd32 = memub($Rx32++#$Ii)",
10826 tc_63fe3df7, TypeLD>, Enc_f4413a, PredNewRel {
10827 let Inst{13-11} = 0b111;
10828 let Inst{31-21} = 0b10011011001;
10829 let isPredicated = 1;
10830 let isPredicatedFalse = 1;
10831 let hasNewValue = 1;
10832 let opNewValue = 0;
10833 let addrMode = PostInc;
10834 let accessSize = ByteAccess;
10835 let isPredicatedNew = 1;
10836 let mayLoad = 1;
10837 let BaseOpcode = "L2_loadrub_pi";
10838 let Constraints = "$Rx32 = $Rx32in";
10839 }
10840 def L2_ploadrubfnew_zomap : HInst<
10841 (outs IntRegs:$Rd32),
10842 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10843 "if (!$Pt4.new) $Rd32 = memub($Rs32)",
10844 tc_2fc0c436, TypeMAPPING> {
10845 let hasNewValue = 1;
10846 let opNewValue = 0;
10847 let isPseudo = 1;
10848 let isCodeGenOnly = 1;
10849 }
10850 def L2_ploadrubt_io : HInst<
10851 (outs IntRegs:$Rd32),
10852 (ins PredRegs:$Pt4, IntRegs:$Rs32, u32_0Imm:$Ii),
10853 "if ($Pt4) $Rd32 = memub($Rs32+#$Ii)",
10854 tc_ef52ed71, TypeV2LDST>, Enc_a21d47, AddrModeRel {
10855 let Inst{13-13} = 0b0;
10856 let Inst{31-21} = 0b01000001001;
10857 let isPredicated = 1;
10858 let hasNewValue = 1;
10859 let opNewValue = 0;
10860 let addrMode = BaseImmOffset;
10861 let accessSize = ByteAccess;
10862 let mayLoad = 1;
10863 let CextOpcode = "L2_loadrub";
10864 let BaseOpcode = "L2_loadrub_io";
10865 let isExtendable = 1;
10866 let opExtendable = 3;
10867 let isExtentSigned = 0;
10868 let opExtentBits = 6;
10869 let opExtentAlign = 0;
10870 }
10871 def L2_ploadrubt_pi : HInst<
10872 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10873 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_0Imm:$Ii),
10874 "if ($Pt4) $Rd32 = memub($Rx32++#$Ii)",
10875 tc_bad2bcaf, TypeLD>, Enc_f4413a, PredNewRel {
10876 let Inst{13-11} = 0b100;
10877 let Inst{31-21} = 0b10011011001;
10878 let isPredicated = 1;
10879 let hasNewValue = 1;
10880 let opNewValue = 0;
10881 let addrMode = PostInc;
10882 let accessSize = ByteAccess;
10883 let mayLoad = 1;
10884 let BaseOpcode = "L2_loadrub_pi";
10885 let Constraints = "$Rx32 = $Rx32in";
10886 }
10887 def L2_ploadrubt_zomap : HInst<
10888 (outs IntRegs:$Rd32),
10889 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10890 "if ($Pt4) $Rd32 = memub($Rs32)",
10891 tc_ef52ed71, TypeMAPPING> {
10892 let hasNewValue = 1;
10893 let opNewValue = 0;
10894 let isPseudo = 1;
10895 let isCodeGenOnly = 1;
10896 }
10897 def L2_ploadrubtnew_io : HInst<
10898 (outs IntRegs:$Rd32),
10899 (ins PredRegs:$Pt4, IntRegs:$Rs32, u32_0Imm:$Ii),
10900 "if ($Pt4.new) $Rd32 = memub($Rs32+#$Ii)",
10901 tc_2fc0c436, TypeV2LDST>, Enc_a21d47, AddrModeRel {
10902 let Inst{13-13} = 0b0;
10903 let Inst{31-21} = 0b01000011001;
10904 let isPredicated = 1;
10905 let hasNewValue = 1;
10906 let opNewValue = 0;
10907 let addrMode = BaseImmOffset;
10908 let accessSize = ByteAccess;
10909 let isPredicatedNew = 1;
10910 let mayLoad = 1;
10911 let CextOpcode = "L2_loadrub";
10912 let BaseOpcode = "L2_loadrub_io";
10913 let isExtendable = 1;
10914 let opExtendable = 3;
10915 let isExtentSigned = 0;
10916 let opExtentBits = 6;
10917 let opExtentAlign = 0;
10918 }
10919 def L2_ploadrubtnew_pi : HInst<
10920 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10921 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_0Imm:$Ii),
10922 "if ($Pt4.new) $Rd32 = memub($Rx32++#$Ii)",
10923 tc_63fe3df7, TypeLD>, Enc_f4413a, PredNewRel {
10924 let Inst{13-11} = 0b110;
10925 let Inst{31-21} = 0b10011011001;
10926 let isPredicated = 1;
10927 let hasNewValue = 1;
10928 let opNewValue = 0;
10929 let addrMode = PostInc;
10930 let accessSize = ByteAccess;
10931 let isPredicatedNew = 1;
10932 let mayLoad = 1;
10933 let BaseOpcode = "L2_loadrub_pi";
10934 let Constraints = "$Rx32 = $Rx32in";
10935 }
10936 def L2_ploadrubtnew_zomap : HInst<
10937 (outs IntRegs:$Rd32),
10938 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10939 "if ($Pt4.new) $Rd32 = memub($Rs32)",
10940 tc_2fc0c436, TypeMAPPING> {
10941 let hasNewValue = 1;
10942 let opNewValue = 0;
10943 let isPseudo = 1;
10944 let isCodeGenOnly = 1;
10945 }
10946 def L2_ploadruhf_io : HInst<
10947 (outs IntRegs:$Rd32),
10948 (ins PredRegs:$Pt4, IntRegs:$Rs32, u31_1Imm:$Ii),
10949 "if (!$Pt4) $Rd32 = memuh($Rs32+#$Ii)",
10950 tc_ef52ed71, TypeV2LDST>, Enc_a198f6, AddrModeRel {
10951 let Inst{13-13} = 0b0;
10952 let Inst{31-21} = 0b01000101011;
10953 let isPredicated = 1;
10954 let isPredicatedFalse = 1;
10955 let hasNewValue = 1;
10956 let opNewValue = 0;
10957 let addrMode = BaseImmOffset;
10958 let accessSize = HalfWordAccess;
10959 let mayLoad = 1;
10960 let CextOpcode = "L2_loadruh";
10961 let BaseOpcode = "L2_loadruh_io";
10962 let isExtendable = 1;
10963 let opExtendable = 3;
10964 let isExtentSigned = 0;
10965 let opExtentBits = 7;
10966 let opExtentAlign = 1;
10967 }
10968 def L2_ploadruhf_pi : HInst<
10969 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10970 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_1Imm:$Ii),
10971 "if (!$Pt4) $Rd32 = memuh($Rx32++#$Ii)",
10972 tc_bad2bcaf, TypeLD>, Enc_733b27, PredNewRel {
10973 let Inst{13-11} = 0b101;
10974 let Inst{31-21} = 0b10011011011;
10975 let isPredicated = 1;
10976 let isPredicatedFalse = 1;
10977 let hasNewValue = 1;
10978 let opNewValue = 0;
10979 let addrMode = PostInc;
10980 let accessSize = HalfWordAccess;
10981 let mayLoad = 1;
10982 let BaseOpcode = "L2_loadruh_pi";
10983 let Constraints = "$Rx32 = $Rx32in";
10984 }
10985 def L2_ploadruhf_zomap : HInst<
10986 (outs IntRegs:$Rd32),
10987 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10988 "if (!$Pt4) $Rd32 = memuh($Rs32)",
10989 tc_ef52ed71, TypeMAPPING> {
10990 let hasNewValue = 1;
10991 let opNewValue = 0;
10992 let isPseudo = 1;
10993 let isCodeGenOnly = 1;
10994 }
10995 def L2_ploadruhfnew_io : HInst<
10996 (outs IntRegs:$Rd32),
10997 (ins PredRegs:$Pt4, IntRegs:$Rs32, u31_1Imm:$Ii),
10998 "if (!$Pt4.new) $Rd32 = memuh($Rs32+#$Ii)",
10999 tc_2fc0c436, TypeV2LDST>, Enc_a198f6, AddrModeRel {
11000 let Inst{13-13} = 0b0;
11001 let Inst{31-21} = 0b01000111011;
11002 let isPredicated = 1;
11003 let isPredicatedFalse = 1;
11004 let hasNewValue = 1;
11005 let opNewValue = 0;
11006 let addrMode = BaseImmOffset;
11007 let accessSize = HalfWordAccess;
11008 let isPredicatedNew = 1;
11009 let mayLoad = 1;
11010 let CextOpcode = "L2_loadruh";
11011 let BaseOpcode = "L2_loadruh_io";
11012 let isExtendable = 1;
11013 let opExtendable = 3;
11014 let isExtentSigned = 0;
11015 let opExtentBits = 7;
11016 let opExtentAlign = 1;
11017 }
11018 def L2_ploadruhfnew_pi : HInst<
11019 (outs IntRegs:$Rd32, IntRegs:$Rx32),
11020 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_1Imm:$Ii),
11021 "if (!$Pt4.new) $Rd32 = memuh($Rx32++#$Ii)",
11022 tc_63fe3df7, TypeLD>, Enc_733b27, PredNewRel {
11023 let Inst{13-11} = 0b111;
11024 let Inst{31-21} = 0b10011011011;
11025 let isPredicated = 1;
11026 let isPredicatedFalse = 1;
11027 let hasNewValue = 1;
11028 let opNewValue = 0;
11029 let addrMode = PostInc;
11030 let accessSize = HalfWordAccess;
11031 let isPredicatedNew = 1;
11032 let mayLoad = 1;
11033 let BaseOpcode = "L2_loadruh_pi";
11034 let Constraints = "$Rx32 = $Rx32in";
11035 }
11036 def L2_ploadruhfnew_zomap : HInst<
11037 (outs IntRegs:$Rd32),
11038 (ins PredRegs:$Pt4, IntRegs:$Rs32),
11039 "if (!$Pt4.new) $Rd32 = memuh($Rs32)",
11040 tc_2fc0c436, TypeMAPPING> {
11041 let hasNewValue = 1;
11042 let opNewValue = 0;
11043 let isPseudo = 1;
11044 let isCodeGenOnly = 1;
11045 }
11046 def L2_ploadruht_io : HInst<
11047 (outs IntRegs:$Rd32),
11048 (ins PredRegs:$Pt4, IntRegs:$Rs32, u31_1Imm:$Ii),
11049 "if ($Pt4) $Rd32 = memuh($Rs32+#$Ii)",
11050 tc_ef52ed71, TypeV2LDST>, Enc_a198f6, AddrModeRel {
11051 let Inst{13-13} = 0b0;
11052 let Inst{31-21} = 0b01000001011;
11053 let isPredicated = 1;
11054 let hasNewValue = 1;
11055 let opNewValue = 0;
11056 let addrMode = BaseImmOffset;
11057 let accessSize = HalfWordAccess;
11058 let mayLoad = 1;
11059 let CextOpcode = "L2_loadruh";
11060 let BaseOpcode = "L2_loadruh_io";
11061 let isExtendable = 1;
11062 let opExtendable = 3;
11063 let isExtentSigned = 0;
11064 let opExtentBits = 7;
11065 let opExtentAlign = 1;
11066 }
11067 def L2_ploadruht_pi : HInst<
11068 (outs IntRegs:$Rd32, IntRegs:$Rx32),
11069 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_1Imm:$Ii),
11070 "if ($Pt4) $Rd32 = memuh($Rx32++#$Ii)",
11071 tc_bad2bcaf, TypeLD>, Enc_733b27, PredNewRel {
11072 let Inst{13-11} = 0b100;
11073 let Inst{31-21} = 0b10011011011;
11074 let isPredicated = 1;
11075 let hasNewValue = 1;
11076 let opNewValue = 0;
11077 let addrMode = PostInc;
11078 let accessSize = HalfWordAccess;
11079 let mayLoad = 1;
11080 let BaseOpcode = "L2_loadruh_pi";
11081 let Constraints = "$Rx32 = $Rx32in";
11082 }
11083 def L2_ploadruht_zomap : HInst<
11084 (outs IntRegs:$Rd32),
11085 (ins PredRegs:$Pt4, IntRegs:$Rs32),
11086 "if ($Pt4) $Rd32 = memuh($Rs32)",
11087 tc_ef52ed71, TypeMAPPING> {
11088 let hasNewValue = 1;
11089 let opNewValue = 0;
11090 let isPseudo = 1;
11091 let isCodeGenOnly = 1;
11092 }
11093 def L2_ploadruhtnew_io : HInst<
11094 (outs IntRegs:$Rd32),
11095 (ins PredRegs:$Pt4, IntRegs:$Rs32, u31_1Imm:$Ii),
11096 "if ($Pt4.new) $Rd32 = memuh($Rs32+#$Ii)",
11097 tc_2fc0c436, TypeV2LDST>, Enc_a198f6, AddrModeRel {
11098 let Inst{13-13} = 0b0;
11099 let Inst{31-21} = 0b01000011011;
11100 let isPredicated = 1;
11101 let hasNewValue = 1;
11102 let opNewValue = 0;
11103 let addrMode = BaseImmOffset;
11104 let accessSize = HalfWordAccess;
11105 let isPredicatedNew = 1;
11106 let mayLoad = 1;
11107 let CextOpcode = "L2_loadruh";
11108 let BaseOpcode = "L2_loadruh_io";
11109 let isExtendable = 1;
11110 let opExtendable = 3;
11111 let isExtentSigned = 0;
11112 let opExtentBits = 7;
11113 let opExtentAlign = 1;
11114 }
11115 def L2_ploadruhtnew_pi : HInst<
11116 (outs IntRegs:$Rd32, IntRegs:$Rx32),
11117 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_1Imm:$Ii),
11118 "if ($Pt4.new) $Rd32 = memuh($Rx32++#$Ii)",
11119 tc_63fe3df7, TypeLD>, Enc_733b27, PredNewRel {
11120 let Inst{13-11} = 0b110;
11121 let Inst{31-21} = 0b10011011011;
11122 let isPredicated = 1;
11123 let hasNewValue = 1;
11124 let opNewValue = 0;
11125 let addrMode = PostInc;
11126 let accessSize = HalfWordAccess;
11127 let isPredicatedNew = 1;
11128 let mayLoad = 1;
11129 let BaseOpcode = "L2_loadruh_pi";
11130 let Constraints = "$Rx32 = $Rx32in";
11131 }
11132 def L2_ploadruhtnew_zomap : HInst<
11133 (outs IntRegs:$Rd32),
11134 (ins PredRegs:$Pt4, IntRegs:$Rs32),
11135 "if ($Pt4.new) $Rd32 = memuh($Rs32)",
11136 tc_2fc0c436, TypeMAPPING> {
11137 let hasNewValue = 1;
11138 let opNewValue = 0;
11139 let isPseudo = 1;
11140 let isCodeGenOnly = 1;
11141 }
11142 def L4_add_memopb_io : HInst<
11143 (outs),
11144 (ins IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
11145 "memb($Rs32+#$Ii) += $Rt32",
11146 tc_44126683, TypeV4LDST>, Enc_d44e31 {
11147 let Inst{6-5} = 0b00;
11148 let Inst{13-13} = 0b0;
11149 let Inst{31-21} = 0b00111110000;
11150 let addrMode = BaseImmOffset;
11151 let accessSize = ByteAccess;
11152 let mayLoad = 1;
11153 let isRestrictNoSlot1Store = 1;
11154 let mayStore = 1;
11155 let isExtendable = 1;
11156 let opExtendable = 1;
11157 let isExtentSigned = 0;
11158 let opExtentBits = 6;
11159 let opExtentAlign = 0;
11160 }
11161 def L4_add_memopb_zomap : HInst<
11162 (outs),
11163 (ins IntRegs:$Rs32, IntRegs:$Rt32),
11164 "memb($Rs32) += $Rt32",
11165 tc_44126683, TypeMAPPING> {
11166 let isPseudo = 1;
11167 let isCodeGenOnly = 1;
11168 }
11169 def L4_add_memoph_io : HInst<
11170 (outs),
11171 (ins IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
11172 "memh($Rs32+#$Ii) += $Rt32",
11173 tc_44126683, TypeV4LDST>, Enc_163a3c {
11174 let Inst{6-5} = 0b00;
11175 let Inst{13-13} = 0b0;
11176 let Inst{31-21} = 0b00111110001;
11177 let addrMode = BaseImmOffset;
11178 let accessSize = HalfWordAccess;
11179 let mayLoad = 1;
11180 let isRestrictNoSlot1Store = 1;
11181 let mayStore = 1;
11182 let isExtendable = 1;
11183 let opExtendable = 1;
11184 let isExtentSigned = 0;
11185 let opExtentBits = 7;
11186 let opExtentAlign = 1;
11187 }
11188 def L4_add_memoph_zomap : HInst<
11189 (outs),
11190 (ins IntRegs:$Rs32, IntRegs:$Rt32),
11191 "memh($Rs32) += $Rt32",
11192 tc_44126683, TypeMAPPING> {
11193 let isPseudo = 1;
11194 let isCodeGenOnly = 1;
11195 }
11196 def L4_add_memopw_io : HInst<
11197 (outs),
11198 (ins IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Rt32),
11199 "memw($Rs32+#$Ii) += $Rt32",
11200 tc_44126683, TypeV4LDST>, Enc_226535 {
11201 let Inst{6-5} = 0b00;
11202 let Inst{13-13} = 0b0;
11203 let Inst{31-21} = 0b00111110010;
11204 let addrMode = BaseImmOffset;
11205 let accessSize = WordAccess;
11206 let mayLoad = 1;
11207 let isRestrictNoSlot1Store = 1;
11208 let mayStore = 1;
11209 let isExtendable = 1;
11210 let opExtendable = 1;
11211 let isExtentSigned = 0;
11212 let opExtentBits = 8;
11213 let opExtentAlign = 2;
11214 }
11215 def L4_add_memopw_zomap : HInst<
11216 (outs),
11217 (ins IntRegs:$Rs32, IntRegs:$Rt32),
11218 "memw($Rs32) += $Rt32",
11219 tc_44126683, TypeMAPPING> {
11220 let isPseudo = 1;
11221 let isCodeGenOnly = 1;
11222 }
11223 def L4_and_memopb_io : HInst<
11224 (outs),
11225 (ins IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
11226 "memb($Rs32+#$Ii) &= $Rt32",
11227 tc_44126683, TypeV4LDST>, Enc_d44e31 {
11228 let Inst{6-5} = 0b10;
11229 let Inst{13-13} = 0b0;
11230 let Inst{31-21} = 0b00111110000;
11231 let addrMode = BaseImmOffset;
11232 let accessSize = ByteAccess;
11233 let mayLoad = 1;
11234 let isRestrictNoSlot1Store = 1;
11235 let mayStore = 1;
11236 let isExtendable = 1;
11237 let opExtendable = 1;
11238 let isExtentSigned = 0;
11239 let opExtentBits = 6;
11240 let opExtentAlign = 0;
11241 }
11242 def L4_and_memopb_zomap : HInst<
11243 (outs),
11244 (ins IntRegs:$Rs32, IntRegs:$Rt32),
11245 "memb($Rs32) &= $Rt32",
11246 tc_44126683, TypeMAPPING> {
11247 let isPseudo = 1;
11248 let isCodeGenOnly = 1;
11249 }
11250 def L4_and_memoph_io : HInst<
11251 (outs),
11252 (ins IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
11253 "memh($Rs32+#$Ii) &= $Rt32",
11254 tc_44126683, TypeV4LDST>, Enc_163a3c {
11255 let Inst{6-5} = 0b10;
11256 let Inst{13-13} = 0b0;
11257 let Inst{31-21} = 0b00111110001;
11258 let addrMode = BaseImmOffset;
11259 let accessSize = HalfWordAccess;
11260 let mayLoad = 1;
11261 let isRestrictNoSlot1Store = 1;
11262 let mayStore = 1;
11263 let isExtendable = 1;
11264 let opExtendable = 1;
11265 let isExtentSigned = 0;
11266 let opExtentBits = 7;
11267 let opExtentAlign = 1;
11268 }
11269 def L4_and_memoph_zomap : HInst<
11270 (outs),
11271 (ins IntRegs:$Rs32, IntRegs:$Rt32),
11272 "memh($Rs32) &= $Rt32",
11273 tc_44126683, TypeMAPPING> {
11274 let isPseudo = 1;
11275 let isCodeGenOnly = 1;
11276 }
11277 def L4_and_memopw_io : HInst<
11278 (outs),
11279 (ins IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Rt32),
11280 "memw($Rs32+#$Ii) &= $Rt32",
11281 tc_44126683, TypeV4LDST>, Enc_226535 {
11282 let Inst{6-5} = 0b10;
11283 let Inst{13-13} = 0b0;
11284 let Inst{31-21} = 0b00111110010;
11285 let addrMode = BaseImmOffset;
11286 let accessSize = WordAccess;
11287 let mayLoad = 1;
11288 let isRestrictNoSlot1Store = 1;
11289 let mayStore = 1;
11290 let isExtendable = 1;
11291 let opExtendable = 1;
11292 let isExtentSigned = 0;
11293 let opExtentBits = 8;
11294 let opExtentAlign = 2;
11295 }
11296 def L4_and_memopw_zomap : HInst<
11297 (outs),
11298 (ins IntRegs:$Rs32, IntRegs:$Rt32),
11299 "memw($Rs32) &= $Rt32",
11300 tc_44126683, TypeMAPPING> {
11301 let isPseudo = 1;
11302 let isCodeGenOnly = 1;
11303 }
11304 def L4_iadd_memopb_io : HInst<
11305 (outs),
11306 (ins IntRegs:$Rs32, u32_0Imm:$Ii, u5_0Imm:$II),
11307 "memb($Rs32+#$Ii) += #$II",
11308 tc_44126683, TypeV4LDST>, Enc_46c951 {
11309 let Inst{6-5} = 0b00;
11310 let Inst{13-13} = 0b0;
11311 let Inst{31-21} = 0b00111111000;
11312 let addrMode = BaseImmOffset;
11313 let accessSize = ByteAccess;
11314 let mayLoad = 1;
11315 let isRestrictNoSlot1Store = 1;
11316 let mayStore = 1;
11317 let isExtendable = 1;
11318 let opExtendable = 1;
11319 let isExtentSigned = 0;
11320 let opExtentBits = 6;
11321 let opExtentAlign = 0;
11322 }
11323 def L4_iadd_memopb_zomap : HInst<
11324 (outs),
11325 (ins IntRegs:$Rs32, u5_0Imm:$II),
11326 "memb($Rs32) += #$II",
11327 tc_44126683, TypeMAPPING> {
11328 let isPseudo = 1;
11329 let isCodeGenOnly = 1;
11330 }
11331 def L4_iadd_memoph_io : HInst<
11332 (outs),
11333 (ins IntRegs:$Rs32, u31_1Imm:$Ii, u5_0Imm:$II),
11334 "memh($Rs32+#$Ii) += #$II",
11335 tc_44126683, TypeV4LDST>, Enc_e66a97 {
11336 let Inst{6-5} = 0b00;
11337 let Inst{13-13} = 0b0;
11338 let Inst{31-21} = 0b00111111001;
11339 let addrMode = BaseImmOffset;
11340 let accessSize = HalfWordAccess;
11341 let mayLoad = 1;
11342 let isRestrictNoSlot1Store = 1;
11343 let mayStore = 1;
11344 let isExtendable = 1;
11345 let opExtendable = 1;
11346 let isExtentSigned = 0;
11347 let opExtentBits = 7;
11348 let opExtentAlign = 1;
11349 }
11350 def L4_iadd_memoph_zomap : HInst<
11351 (outs),
11352 (ins IntRegs:$Rs32, u5_0Imm:$II),
11353 "memh($Rs32) += #$II",
11354 tc_44126683, TypeMAPPING> {
11355 let isPseudo = 1;
11356 let isCodeGenOnly = 1;
11357 }
11358 def L4_iadd_memopw_io : HInst<
11359 (outs),
11360 (ins IntRegs:$Rs32, u30_2Imm:$Ii, u5_0Imm:$II),
11361 "memw($Rs32+#$Ii) += #$II",
11362 tc_44126683, TypeV4LDST>, Enc_84b2cd {
11363 let Inst{6-5} = 0b00;
11364 let Inst{13-13} = 0b0;
11365 let Inst{31-21} = 0b00111111010;
11366 let addrMode = BaseImmOffset;
11367 let accessSize = WordAccess;
11368 let mayLoad = 1;
11369 let isRestrictNoSlot1Store = 1;
11370 let mayStore = 1;
11371 let isExtendable = 1;
11372 let opExtendable = 1;
11373 let isExtentSigned = 0;
11374 let opExtentBits = 8;
11375 let opExtentAlign = 2;
11376 }
11377 def L4_iadd_memopw_zomap : HInst<
11378 (outs),
11379 (ins IntRegs:$Rs32, u5_0Imm:$II),
11380 "memw($Rs32) += #$II",
11381 tc_44126683, TypeMAPPING> {
11382 let isPseudo = 1;
11383 let isCodeGenOnly = 1;
11384 }
11385 def L4_iand_memopb_io : HInst<
11386 (outs),
11387 (ins IntRegs:$Rs32, u32_0Imm:$Ii, u5_0Imm:$II),
11388 "memb($Rs32+#$Ii) = clrbit(#$II)",
11389 tc_44126683, TypeV4LDST>, Enc_46c951 {
11390 let Inst{6-5} = 0b10;
11391 let Inst{13-13} = 0b0;
11392 let Inst{31-21} = 0b00111111000;
11393 let addrMode = BaseImmOffset;
11394 let accessSize = ByteAccess;
11395 let mayLoad = 1;
11396 let isRestrictNoSlot1Store = 1;
11397 let mayStore = 1;
11398 let isExtendable = 1;
11399 let opExtendable = 1;
11400 let isExtentSigned = 0;
11401 let opExtentBits = 6;
11402 let opExtentAlign = 0;
11403 }
11404 def L4_iand_memopb_zomap : HInst<
11405 (outs),
11406 (ins IntRegs:$Rs32, u5_0Imm:$II),
11407 "memb($Rs32) = clrbit(#$II)",
11408 tc_44126683, TypeMAPPING> {
11409 let isPseudo = 1;
11410 let isCodeGenOnly = 1;
11411 }
11412 def L4_iand_memoph_io : HInst<
11413 (outs),
11414 (ins IntRegs:$Rs32, u31_1Imm:$Ii, u5_0Imm:$II),
11415 "memh($Rs32+#$Ii) = clrbit(#$II)",
11416 tc_44126683, TypeV4LDST>, Enc_e66a97 {
11417 let Inst{6-5} = 0b10;
11418 let Inst{13-13} = 0b0;
11419 let Inst{31-21} = 0b00111111001;
11420 let addrMode = BaseImmOffset;
11421 let accessSize = HalfWordAccess;
11422 let mayLoad = 1;
11423 let isRestrictNoSlot1Store = 1;
11424 let mayStore = 1;
11425 let isExtendable = 1;
11426 let opExtendable = 1;
11427 let isExtentSigned = 0;
11428 let opExtentBits = 7;
11429 let opExtentAlign = 1;
11430 }
11431 def L4_iand_memoph_zomap : HInst<
11432 (outs),
11433 (ins IntRegs:$Rs32, u5_0Imm:$II),
11434 "memh($Rs32) = clrbit(#$II)",
11435 tc_44126683, TypeMAPPING> {
11436 let isPseudo = 1;
11437 let isCodeGenOnly = 1;
11438 }
11439 def L4_iand_memopw_io : HInst<
11440 (outs),
11441 (ins IntRegs:$Rs32, u30_2Imm:$Ii, u5_0Imm:$II),
11442 "memw($Rs32+#$Ii) = clrbit(#$II)",
11443 tc_44126683, TypeV4LDST>, Enc_84b2cd {
11444 let Inst{6-5} = 0b10;
11445 let Inst{13-13} = 0b0;
11446 let Inst{31-21} = 0b00111111010;
11447 let addrMode = BaseImmOffset;
11448 let accessSize = WordAccess;
11449 let mayLoad = 1;
11450 let isRestrictNoSlot1Store = 1;
11451 let mayStore = 1;
11452 let isExtendable = 1;
11453 let opExtendable = 1;
11454 let isExtentSigned = 0;
11455 let opExtentBits = 8;
11456 let opExtentAlign = 2;
11457 }
11458 def L4_iand_memopw_zomap : HInst<
11459 (outs),
11460 (ins IntRegs:$Rs32, u5_0Imm:$II),
11461 "memw($Rs32) = clrbit(#$II)",
11462 tc_44126683, TypeMAPPING> {
11463 let isPseudo = 1;
11464 let isCodeGenOnly = 1;
11465 }
11466 def L4_ior_memopb_io : HInst<
11467 (outs),
11468 (ins IntRegs:$Rs32, u32_0Imm:$Ii, u5_0Imm:$II),
11469 "memb($Rs32+#$Ii) = setbit(#$II)",
11470 tc_44126683, TypeV4LDST>, Enc_46c951 {
11471 let Inst{6-5} = 0b11;
11472 let Inst{13-13} = 0b0;
11473 let Inst{31-21} = 0b00111111000;
11474 let addrMode = BaseImmOffset;
11475 let accessSize = ByteAccess;
11476 let mayLoad = 1;
11477 let isRestrictNoSlot1Store = 1;
11478 let mayStore = 1;
11479 let isExtendable = 1;
11480 let opExtendable = 1;
11481 let isExtentSigned = 0;
11482 let opExtentBits = 6;
11483 let opExtentAlign = 0;
11484 }
11485 def L4_ior_memopb_zomap : HInst<
11486 (outs),
11487 (ins IntRegs:$Rs32, u5_0Imm:$II),
11488 "memb($Rs32) = setbit(#$II)",
11489 tc_44126683, TypeMAPPING> {
11490 let isPseudo = 1;
11491 let isCodeGenOnly = 1;
11492 }
11493 def L4_ior_memoph_io : HInst<
11494 (outs),
11495 (ins IntRegs:$Rs32, u31_1Imm:$Ii, u5_0Imm:$II),
11496 "memh($Rs32+#$Ii) = setbit(#$II)",
11497 tc_44126683, TypeV4LDST>, Enc_e66a97 {
11498 let Inst{6-5} = 0b11;
11499 let Inst{13-13} = 0b0;
11500 let Inst{31-21} = 0b00111111001;
11501 let addrMode = BaseImmOffset;
11502 let accessSize = HalfWordAccess;
11503 let mayLoad = 1;
11504 let isRestrictNoSlot1Store = 1;
11505 let mayStore = 1;
11506 let isExtendable = 1;
11507 let opExtendable = 1;
11508 let isExtentSigned = 0;
11509 let opExtentBits = 7;
11510 let opExtentAlign = 1;
11511 }
11512 def L4_ior_memoph_zomap : HInst<
11513 (outs),
11514 (ins IntRegs:$Rs32, u5_0Imm:$II),
11515 "memh($Rs32) = setbit(#$II)",
11516 tc_44126683, TypeMAPPING> {
11517 let isPseudo = 1;
11518 let isCodeGenOnly = 1;
11519 }
11520 def L4_ior_memopw_io : HInst<
11521 (outs),
11522 (ins IntRegs:$Rs32, u30_2Imm:$Ii, u5_0Imm:$II),
11523 "memw($Rs32+#$Ii) = setbit(#$II)",
11524 tc_44126683, TypeV4LDST>, Enc_84b2cd {
11525 let Inst{6-5} = 0b11;
11526 let Inst{13-13} = 0b0;
11527 let Inst{31-21} = 0b00111111010;
11528 let addrMode = BaseImmOffset;
11529 let accessSize = WordAccess;
11530 let mayLoad = 1;
11531 let isRestrictNoSlot1Store = 1;
11532 let mayStore = 1;
11533 let isExtendable = 1;
11534 let opExtendable = 1;
11535 let isExtentSigned = 0;
11536 let opExtentBits = 8;
11537 let opExtentAlign = 2;
11538 }
11539 def L4_ior_memopw_zomap : HInst<
11540 (outs),
11541 (ins IntRegs:$Rs32, u5_0Imm:$II),
11542 "memw($Rs32) = setbit(#$II)",
11543 tc_44126683, TypeMAPPING> {
11544 let isPseudo = 1;
11545 let isCodeGenOnly = 1;
11546 }
11547 def L4_isub_memopb_io : HInst<
11548 (outs),
11549 (ins IntRegs:$Rs32, u32_0Imm:$Ii, u5_0Imm:$II),
11550 "memb($Rs32+#$Ii) -= #$II",
11551 tc_44126683, TypeV4LDST>, Enc_46c951 {
11552 let Inst{6-5} = 0b01;
11553 let Inst{13-13} = 0b0;
11554 let Inst{31-21} = 0b00111111000;
11555 let addrMode = BaseImmOffset;
11556 let accessSize = ByteAccess;
11557 let mayLoad = 1;
11558 let isRestrictNoSlot1Store = 1;
11559 let mayStore = 1;
11560 let isExtendable = 1;
11561 let opExtendable = 1;
11562 let isExtentSigned = 0;
11563 let opExtentBits = 6;
11564 let opExtentAlign = 0;
11565 }
11566 def L4_isub_memopb_zomap : HInst<
11567 (outs),
11568 (ins IntRegs:$Rs32, u5_0Imm:$II),
11569 "memb($Rs32) -= #$II",
11570 tc_44126683, TypeMAPPING> {
11571 let isPseudo = 1;
11572 let isCodeGenOnly = 1;
11573 }
11574 def L4_isub_memoph_io : HInst<
11575 (outs),
11576 (ins IntRegs:$Rs32, u31_1Imm:$Ii, u5_0Imm:$II),
11577 "memh($Rs32+#$Ii) -= #$II",
11578 tc_44126683, TypeV4LDST>, Enc_e66a97 {
11579 let Inst{6-5} = 0b01;
11580 let Inst{13-13} = 0b0;
11581 let Inst{31-21} = 0b00111111001;
11582 let addrMode = BaseImmOffset;
11583 let accessSize = HalfWordAccess;
11584 let mayLoad = 1;
11585 let isRestrictNoSlot1Store = 1;
11586 let mayStore = 1;
11587 let isExtendable = 1;
11588 let opExtendable = 1;
11589 let isExtentSigned = 0;
11590 let opExtentBits = 7;
11591 let opExtentAlign = 1;
11592 }
11593 def L4_isub_memoph_zomap : HInst<
11594 (outs),
11595 (ins IntRegs:$Rs32, u5_0Imm:$II),
11596 "memh($Rs32) -= #$II",
11597 tc_44126683, TypeMAPPING> {
11598 let isPseudo = 1;
11599 let isCodeGenOnly = 1;
11600 }
11601 def L4_isub_memopw_io : HInst<
11602 (outs),
11603 (ins IntRegs:$Rs32, u30_2Imm:$Ii, u5_0Imm:$II),
11604 "memw($Rs32+#$Ii) -= #$II",
11605 tc_44126683, TypeV4LDST>, Enc_84b2cd {
11606 let Inst{6-5} = 0b01;
11607 let Inst{13-13} = 0b0;
11608 let Inst{31-21} = 0b00111111010;
11609 let addrMode = BaseImmOffset;
11610 let accessSize = WordAccess;
11611 let mayLoad = 1;
11612 let isRestrictNoSlot1Store = 1;
11613 let mayStore = 1;
11614 let isExtendable = 1;
11615 let opExtendable = 1;
11616 let isExtentSigned = 0;
11617 let opExtentBits = 8;
11618 let opExtentAlign = 2;
11619 }
11620 def L4_isub_memopw_zomap : HInst<
11621 (outs),
11622 (ins IntRegs:$Rs32, u5_0Imm:$II),
11623 "memw($Rs32) -= #$II",
11624 tc_44126683, TypeMAPPING> {
11625 let isPseudo = 1;
11626 let isCodeGenOnly = 1;
11627 }
11628 def L4_loadalignb_ap : HInst<
11629 (outs DoubleRegs:$Ryy32, IntRegs:$Re32),
11630 (ins DoubleRegs:$Ryy32in, u32_0Imm:$II),
11631 "$Ryy32 = memb_fifo($Re32=#$II)",
11632 tc_5acef64a, TypeLD>, Enc_f394d3 {
11633 let Inst{7-7} = 0b0;
11634 let Inst{13-12} = 0b01;
11635 let Inst{31-21} = 0b10011010100;
11636 let addrMode = AbsoluteSet;
11637 let accessSize = ByteAccess;
11638 let mayLoad = 1;
11639 let isExtended = 1;
11640 let DecoderNamespace = "MustExtend";
11641 let isExtendable = 1;
11642 let opExtendable = 3;
11643 let isExtentSigned = 0;
11644 let opExtentBits = 6;
11645 let opExtentAlign = 0;
11646 let Constraints = "$Ryy32 = $Ryy32in";
11647 }
11648 def L4_loadalignb_ur : HInst<
11649 (outs DoubleRegs:$Ryy32),
11650 (ins DoubleRegs:$Ryy32in, IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
11651 "$Ryy32 = memb_fifo($Rt32<<#$Ii+#$II)",
11652 tc_0cd51c76, TypeLD>, Enc_04c959 {
11653 let Inst{12-12} = 0b1;
11654 let Inst{31-21} = 0b10011100100;
11655 let addrMode = BaseLongOffset;
11656 let accessSize = ByteAccess;
11657 let mayLoad = 1;
11658 let isExtended = 1;
11659 let InputType = "imm";
11660 let DecoderNamespace = "MustExtend";
11661 let isExtendable = 1;
11662 let opExtendable = 4;
11663 let isExtentSigned = 0;
11664 let opExtentBits = 6;
11665 let opExtentAlign = 0;
11666 let Constraints = "$Ryy32 = $Ryy32in";
11667 }
11668 def L4_loadalignh_ap : HInst<
11669 (outs DoubleRegs:$Ryy32, IntRegs:$Re32),
11670 (ins DoubleRegs:$Ryy32in, u32_0Imm:$II),
11671 "$Ryy32 = memh_fifo($Re32=#$II)",
11672 tc_5acef64a, TypeLD>, Enc_f394d3 {
11673 let Inst{7-7} = 0b0;
11674 let Inst{13-12} = 0b01;
11675 let Inst{31-21} = 0b10011010010;
11676 let addrMode = AbsoluteSet;
11677 let accessSize = HalfWordAccess;
11678 let mayLoad = 1;
11679 let isExtended = 1;
11680 let DecoderNamespace = "MustExtend";
11681 let isExtendable = 1;
11682 let opExtendable = 3;
11683 let isExtentSigned = 0;
11684 let opExtentBits = 6;
11685 let opExtentAlign = 0;
11686 let Constraints = "$Ryy32 = $Ryy32in";
11687 }
11688 def L4_loadalignh_ur : HInst<
11689 (outs DoubleRegs:$Ryy32),
11690 (ins DoubleRegs:$Ryy32in, IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
11691 "$Ryy32 = memh_fifo($Rt32<<#$Ii+#$II)",
11692 tc_0cd51c76, TypeLD>, Enc_04c959 {
11693 let Inst{12-12} = 0b1;
11694 let Inst{31-21} = 0b10011100010;
11695 let addrMode = BaseLongOffset;
11696 let accessSize = HalfWordAccess;
11697 let mayLoad = 1;
11698 let isExtended = 1;
11699 let InputType = "imm";
11700 let DecoderNamespace = "MustExtend";
11701 let isExtendable = 1;
11702 let opExtendable = 4;
11703 let isExtentSigned = 0;
11704 let opExtentBits = 6;
11705 let opExtentAlign = 0;
11706 let Constraints = "$Ryy32 = $Ryy32in";
11707 }
11708 def L4_loadbsw2_ap : HInst<
11709 (outs IntRegs:$Rd32, IntRegs:$Re32),
11710 (ins u32_0Imm:$II),
11711 "$Rd32 = membh($Re32=#$II)",
11712 tc_b77c481f, TypeLD>, Enc_323f2d {
11713 let Inst{7-7} = 0b0;
11714 let Inst{13-12} = 0b01;
11715 let Inst{31-21} = 0b10011010001;
11716 let hasNewValue = 1;
11717 let opNewValue = 0;
11718 let addrMode = AbsoluteSet;
11719 let accessSize = HalfWordAccess;
11720 let mayLoad = 1;
11721 let isExtended = 1;
11722 let DecoderNamespace = "MustExtend";
11723 let isExtendable = 1;
11724 let opExtendable = 2;
11725 let isExtentSigned = 0;
11726 let opExtentBits = 6;
11727 let opExtentAlign = 0;
11728 }
11729 def L4_loadbsw2_ur : HInst<
11730 (outs IntRegs:$Rd32),
11731 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
11732 "$Rd32 = membh($Rt32<<#$Ii+#$II)",
11733 tc_cf47a43f, TypeLD>, Enc_4f677b {
11734 let Inst{12-12} = 0b1;
11735 let Inst{31-21} = 0b10011100001;
11736 let hasNewValue = 1;
11737 let opNewValue = 0;
11738 let addrMode = BaseLongOffset;
11739 let accessSize = HalfWordAccess;
11740 let mayLoad = 1;
11741 let isExtended = 1;
11742 let InputType = "imm";
11743 let DecoderNamespace = "MustExtend";
11744 let isExtendable = 1;
11745 let opExtendable = 3;
11746 let isExtentSigned = 0;
11747 let opExtentBits = 6;
11748 let opExtentAlign = 0;
11749 }
11750 def L4_loadbsw4_ap : HInst<
11751 (outs DoubleRegs:$Rdd32, IntRegs:$Re32),
11752 (ins u32_0Imm:$II),
11753 "$Rdd32 = membh($Re32=#$II)",
11754 tc_b77c481f, TypeLD>, Enc_7fa7f6 {
11755 let Inst{7-7} = 0b0;
11756 let Inst{13-12} = 0b01;
11757 let Inst{31-21} = 0b10011010111;
11758 let addrMode = AbsoluteSet;
11759 let accessSize = WordAccess;
11760 let mayLoad = 1;
11761 let isExtended = 1;
11762 let DecoderNamespace = "MustExtend";
11763 let isExtendable = 1;
11764 let opExtendable = 2;
11765 let isExtentSigned = 0;
11766 let opExtentBits = 6;
11767 let opExtentAlign = 0;
11768 }
11769 def L4_loadbsw4_ur : HInst<
11770 (outs DoubleRegs:$Rdd32),
11771 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
11772 "$Rdd32 = membh($Rt32<<#$Ii+#$II)",
11773 tc_cf47a43f, TypeLD>, Enc_6185fe {
11774 let Inst{12-12} = 0b1;
11775 let Inst{31-21} = 0b10011100111;
11776 let addrMode = BaseLongOffset;
11777 let accessSize = WordAccess;
11778 let mayLoad = 1;
11779 let isExtended = 1;
11780 let InputType = "imm";
11781 let DecoderNamespace = "MustExtend";
11782 let isExtendable = 1;
11783 let opExtendable = 3;
11784 let isExtentSigned = 0;
11785 let opExtentBits = 6;
11786 let opExtentAlign = 0;
11787 }
11788 def L4_loadbzw2_ap : HInst<
11789 (outs IntRegs:$Rd32, IntRegs:$Re32),
11790 (ins u32_0Imm:$II),
11791 "$Rd32 = memubh($Re32=#$II)",
11792 tc_b77c481f, TypeLD>, Enc_323f2d {
11793 let Inst{7-7} = 0b0;
11794 let Inst{13-12} = 0b01;
11795 let Inst{31-21} = 0b10011010011;
11796 let hasNewValue = 1;
11797 let opNewValue = 0;
11798 let addrMode = AbsoluteSet;
11799 let accessSize = HalfWordAccess;
11800 let mayLoad = 1;
11801 let isExtended = 1;
11802 let DecoderNamespace = "MustExtend";
11803 let isExtendable = 1;
11804 let opExtendable = 2;
11805 let isExtentSigned = 0;
11806 let opExtentBits = 6;
11807 let opExtentAlign = 0;
11808 }
11809 def L4_loadbzw2_ur : HInst<
11810 (outs IntRegs:$Rd32),
11811 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
11812 "$Rd32 = memubh($Rt32<<#$Ii+#$II)",
11813 tc_cf47a43f, TypeLD>, Enc_4f677b {
11814 let Inst{12-12} = 0b1;
11815 let Inst{31-21} = 0b10011100011;
11816 let hasNewValue = 1;
11817 let opNewValue = 0;
11818 let addrMode = BaseLongOffset;
11819 let accessSize = HalfWordAccess;
11820 let mayLoad = 1;
11821 let isExtended = 1;
11822 let InputType = "imm";
11823 let DecoderNamespace = "MustExtend";
11824 let isExtendable = 1;
11825 let opExtendable = 3;
11826 let isExtentSigned = 0;
11827 let opExtentBits = 6;
11828 let opExtentAlign = 0;
11829 }
11830 def L4_loadbzw4_ap : HInst<
11831 (outs DoubleRegs:$Rdd32, IntRegs:$Re32),
11832 (ins u32_0Imm:$II),
11833 "$Rdd32 = memubh($Re32=#$II)",
11834 tc_b77c481f, TypeLD>, Enc_7fa7f6 {
11835 let Inst{7-7} = 0b0;
11836 let Inst{13-12} = 0b01;
11837 let Inst{31-21} = 0b10011010101;
11838 let addrMode = AbsoluteSet;
11839 let accessSize = WordAccess;
11840 let mayLoad = 1;
11841 let isExtended = 1;
11842 let DecoderNamespace = "MustExtend";
11843 let isExtendable = 1;
11844 let opExtendable = 2;
11845 let isExtentSigned = 0;
11846 let opExtentBits = 6;
11847 let opExtentAlign = 0;
11848 }
11849 def L4_loadbzw4_ur : HInst<
11850 (outs DoubleRegs:$Rdd32),
11851 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
11852 "$Rdd32 = memubh($Rt32<<#$Ii+#$II)",
11853 tc_cf47a43f, TypeLD>, Enc_6185fe {
11854 let Inst{12-12} = 0b1;
11855 let Inst{31-21} = 0b10011100101;
11856 let addrMode = BaseLongOffset;
11857 let accessSize = WordAccess;
11858 let mayLoad = 1;
11859 let isExtended = 1;
11860 let InputType = "imm";
11861 let DecoderNamespace = "MustExtend";
11862 let isExtendable = 1;
11863 let opExtendable = 3;
11864 let isExtentSigned = 0;
11865 let opExtentBits = 6;
11866 let opExtentAlign = 0;
11867 }
11868 def L4_loadd_locked : HInst<
11869 (outs DoubleRegs:$Rdd32),
11870 (ins IntRegs:$Rs32),
11871 "$Rdd32 = memd_locked($Rs32)",
11872 tc_6aa5711a, TypeLD>, Enc_3a3d62 {
11873 let Inst{13-5} = 0b010000000;
11874 let Inst{31-21} = 0b10010010000;
11875 let accessSize = DoubleWordAccess;
11876 let mayLoad = 1;
11877 let isSoloAX = 1;
11878 }
11879 def L4_loadrb_ap : HInst<
11880 (outs IntRegs:$Rd32, IntRegs:$Re32),
11881 (ins u32_0Imm:$II),
11882 "$Rd32 = memb($Re32=#$II)",
11883 tc_b77c481f, TypeLD>, Enc_323f2d {
11884 let Inst{7-7} = 0b0;
11885 let Inst{13-12} = 0b01;
11886 let Inst{31-21} = 0b10011011000;
11887 let hasNewValue = 1;
11888 let opNewValue = 0;
11889 let addrMode = AbsoluteSet;
11890 let accessSize = ByteAccess;
11891 let mayLoad = 1;
11892 let isExtended = 1;
11893 let DecoderNamespace = "MustExtend";
11894 let isExtendable = 1;
11895 let opExtendable = 2;
11896 let isExtentSigned = 0;
11897 let opExtentBits = 6;
11898 let opExtentAlign = 0;
11899 }
11900 def L4_loadrb_rr : HInst<
11901 (outs IntRegs:$Rd32),
11902 (ins IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
11903 "$Rd32 = memb($Rs32+$Rt32<<#$Ii)",
11904 tc_f47d212f, TypeLD>, Enc_da664b, AddrModeRel, ImmRegShl {
11905 let Inst{6-5} = 0b00;
11906 let Inst{31-21} = 0b00111010000;
11907 let hasNewValue = 1;
11908 let opNewValue = 0;
11909 let addrMode = BaseRegOffset;
11910 let accessSize = ByteAccess;
11911 let mayLoad = 1;
11912 let CextOpcode = "L2_loadrb";
11913 let InputType = "reg";
11914 let BaseOpcode = "L4_loadrb_rr";
11915 let isPredicable = 1;
11916 }
11917 def L4_loadrb_ur : HInst<
11918 (outs IntRegs:$Rd32),
11919 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
11920 "$Rd32 = memb($Rt32<<#$Ii+#$II)",
11921 tc_cf47a43f, TypeLD>, Enc_4f677b, AddrModeRel, ImmRegShl {
11922 let Inst{12-12} = 0b1;
11923 let Inst{31-21} = 0b10011101000;
11924 let hasNewValue = 1;
11925 let opNewValue = 0;
11926 let addrMode = BaseLongOffset;
11927 let accessSize = ByteAccess;
11928 let mayLoad = 1;
11929 let isExtended = 1;
11930 let CextOpcode = "L2_loadrb";
11931 let InputType = "imm";
11932 let DecoderNamespace = "MustExtend";
11933 let isExtendable = 1;
11934 let opExtendable = 3;
11935 let isExtentSigned = 0;
11936 let opExtentBits = 6;
11937 let opExtentAlign = 0;
11938 }
11939 def L4_loadrd_ap : HInst<
11940 (outs DoubleRegs:$Rdd32, IntRegs:$Re32),
11941 (ins u32_0Imm:$II),
11942 "$Rdd32 = memd($Re32=#$II)",
11943 tc_b77c481f, TypeLD>, Enc_7fa7f6 {
11944 let Inst{7-7} = 0b0;
11945 let Inst{13-12} = 0b01;
11946 let Inst{31-21} = 0b10011011110;
11947 let addrMode = AbsoluteSet;
11948 let accessSize = DoubleWordAccess;
11949 let mayLoad = 1;
11950 let isExtended = 1;
11951 let DecoderNamespace = "MustExtend";
11952 let isExtendable = 1;
11953 let opExtendable = 2;
11954 let isExtentSigned = 0;
11955 let opExtentBits = 6;
11956 let opExtentAlign = 0;
11957 }
11958 def L4_loadrd_rr : HInst<
11959 (outs DoubleRegs:$Rdd32),
11960 (ins IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
11961 "$Rdd32 = memd($Rs32+$Rt32<<#$Ii)",
11962 tc_f47d212f, TypeLD>, Enc_84bff1, AddrModeRel, ImmRegShl {
11963 let Inst{6-5} = 0b00;
11964 let Inst{31-21} = 0b00111010110;
11965 let addrMode = BaseRegOffset;
11966 let accessSize = DoubleWordAccess;
11967 let mayLoad = 1;
11968 let CextOpcode = "L2_loadrd";
11969 let InputType = "reg";
11970 let BaseOpcode = "L4_loadrd_rr";
11971 let isPredicable = 1;
11972 }
11973 def L4_loadrd_ur : HInst<
11974 (outs DoubleRegs:$Rdd32),
11975 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
11976 "$Rdd32 = memd($Rt32<<#$Ii+#$II)",
11977 tc_cf47a43f, TypeLD>, Enc_6185fe, AddrModeRel, ImmRegShl {
11978 let Inst{12-12} = 0b1;
11979 let Inst{31-21} = 0b10011101110;
11980 let addrMode = BaseLongOffset;
11981 let accessSize = DoubleWordAccess;
11982 let mayLoad = 1;
11983 let isExtended = 1;
11984 let CextOpcode = "L2_loadrd";
11985 let InputType = "imm";
11986 let DecoderNamespace = "MustExtend";
11987 let isExtendable = 1;
11988 let opExtendable = 3;
11989 let isExtentSigned = 0;
11990 let opExtentBits = 6;
11991 let opExtentAlign = 0;
11992 }
11993 def L4_loadrh_ap : HInst<
11994 (outs IntRegs:$Rd32, IntRegs:$Re32),
11995 (ins u32_0Imm:$II),
11996 "$Rd32 = memh($Re32=#$II)",
11997 tc_b77c481f, TypeLD>, Enc_323f2d {
11998 let Inst{7-7} = 0b0;
11999 let Inst{13-12} = 0b01;
12000 let Inst{31-21} = 0b10011011010;
12001 let hasNewValue = 1;
12002 let opNewValue = 0;
12003 let addrMode = AbsoluteSet;
12004 let accessSize = HalfWordAccess;
12005 let mayLoad = 1;
12006 let isExtended = 1;
12007 let DecoderNamespace = "MustExtend";
12008 let isExtendable = 1;
12009 let opExtendable = 2;
12010 let isExtentSigned = 0;
12011 let opExtentBits = 6;
12012 let opExtentAlign = 0;
12013 }
12014 def L4_loadrh_rr : HInst<
12015 (outs IntRegs:$Rd32),
12016 (ins IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12017 "$Rd32 = memh($Rs32+$Rt32<<#$Ii)",
12018 tc_f47d212f, TypeLD>, Enc_da664b, AddrModeRel, ImmRegShl {
12019 let Inst{6-5} = 0b00;
12020 let Inst{31-21} = 0b00111010010;
12021 let hasNewValue = 1;
12022 let opNewValue = 0;
12023 let addrMode = BaseRegOffset;
12024 let accessSize = HalfWordAccess;
12025 let mayLoad = 1;
12026 let CextOpcode = "L2_loadrh";
12027 let InputType = "reg";
12028 let BaseOpcode = "L4_loadrh_rr";
12029 let isPredicable = 1;
12030 }
12031 def L4_loadrh_ur : HInst<
12032 (outs IntRegs:$Rd32),
12033 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
12034 "$Rd32 = memh($Rt32<<#$Ii+#$II)",
12035 tc_cf47a43f, TypeLD>, Enc_4f677b, AddrModeRel, ImmRegShl {
12036 let Inst{12-12} = 0b1;
12037 let Inst{31-21} = 0b10011101010;
12038 let hasNewValue = 1;
12039 let opNewValue = 0;
12040 let addrMode = BaseLongOffset;
12041 let accessSize = HalfWordAccess;
12042 let mayLoad = 1;
12043 let isExtended = 1;
12044 let CextOpcode = "L2_loadrh";
12045 let InputType = "imm";
12046 let DecoderNamespace = "MustExtend";
12047 let isExtendable = 1;
12048 let opExtendable = 3;
12049 let isExtentSigned = 0;
12050 let opExtentBits = 6;
12051 let opExtentAlign = 0;
12052 }
12053 def L4_loadri_ap : HInst<
12054 (outs IntRegs:$Rd32, IntRegs:$Re32),
12055 (ins u32_0Imm:$II),
12056 "$Rd32 = memw($Re32=#$II)",
12057 tc_b77c481f, TypeLD>, Enc_323f2d {
12058 let Inst{7-7} = 0b0;
12059 let Inst{13-12} = 0b01;
12060 let Inst{31-21} = 0b10011011100;
12061 let hasNewValue = 1;
12062 let opNewValue = 0;
12063 let addrMode = AbsoluteSet;
12064 let accessSize = WordAccess;
12065 let mayLoad = 1;
12066 let isExtended = 1;
12067 let DecoderNamespace = "MustExtend";
12068 let isExtendable = 1;
12069 let opExtendable = 2;
12070 let isExtentSigned = 0;
12071 let opExtentBits = 6;
12072 let opExtentAlign = 0;
12073 }
12074 def L4_loadri_rr : HInst<
12075 (outs IntRegs:$Rd32),
12076 (ins IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12077 "$Rd32 = memw($Rs32+$Rt32<<#$Ii)",
12078 tc_f47d212f, TypeLD>, Enc_da664b, AddrModeRel, ImmRegShl {
12079 let Inst{6-5} = 0b00;
12080 let Inst{31-21} = 0b00111010100;
12081 let hasNewValue = 1;
12082 let opNewValue = 0;
12083 let addrMode = BaseRegOffset;
12084 let accessSize = WordAccess;
12085 let mayLoad = 1;
12086 let CextOpcode = "L2_loadri";
12087 let InputType = "reg";
12088 let BaseOpcode = "L4_loadri_rr";
12089 let isPredicable = 1;
12090 }
12091 def L4_loadri_ur : HInst<
12092 (outs IntRegs:$Rd32),
12093 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
12094 "$Rd32 = memw($Rt32<<#$Ii+#$II)",
12095 tc_cf47a43f, TypeLD>, Enc_4f677b, AddrModeRel, ImmRegShl {
12096 let Inst{12-12} = 0b1;
12097 let Inst{31-21} = 0b10011101100;
12098 let hasNewValue = 1;
12099 let opNewValue = 0;
12100 let addrMode = BaseLongOffset;
12101 let accessSize = WordAccess;
12102 let mayLoad = 1;
12103 let isExtended = 1;
12104 let CextOpcode = "L2_loadri";
12105 let InputType = "imm";
12106 let DecoderNamespace = "MustExtend";
12107 let isExtendable = 1;
12108 let opExtendable = 3;
12109 let isExtentSigned = 0;
12110 let opExtentBits = 6;
12111 let opExtentAlign = 0;
12112 }
12113 def L4_loadrub_ap : HInst<
12114 (outs IntRegs:$Rd32, IntRegs:$Re32),
12115 (ins u32_0Imm:$II),
12116 "$Rd32 = memub($Re32=#$II)",
12117 tc_b77c481f, TypeLD>, Enc_323f2d {
12118 let Inst{7-7} = 0b0;
12119 let Inst{13-12} = 0b01;
12120 let Inst{31-21} = 0b10011011001;
12121 let hasNewValue = 1;
12122 let opNewValue = 0;
12123 let addrMode = AbsoluteSet;
12124 let accessSize = ByteAccess;
12125 let mayLoad = 1;
12126 let isExtended = 1;
12127 let DecoderNamespace = "MustExtend";
12128 let isExtendable = 1;
12129 let opExtendable = 2;
12130 let isExtentSigned = 0;
12131 let opExtentBits = 6;
12132 let opExtentAlign = 0;
12133 }
12134 def L4_loadrub_rr : HInst<
12135 (outs IntRegs:$Rd32),
12136 (ins IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12137 "$Rd32 = memub($Rs32+$Rt32<<#$Ii)",
12138 tc_f47d212f, TypeLD>, Enc_da664b, AddrModeRel, ImmRegShl {
12139 let Inst{6-5} = 0b00;
12140 let Inst{31-21} = 0b00111010001;
12141 let hasNewValue = 1;
12142 let opNewValue = 0;
12143 let addrMode = BaseRegOffset;
12144 let accessSize = ByteAccess;
12145 let mayLoad = 1;
12146 let CextOpcode = "L2_loadrub";
12147 let InputType = "reg";
12148 let BaseOpcode = "L4_loadrub_rr";
12149 let isPredicable = 1;
12150 }
12151 def L4_loadrub_ur : HInst<
12152 (outs IntRegs:$Rd32),
12153 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
12154 "$Rd32 = memub($Rt32<<#$Ii+#$II)",
12155 tc_cf47a43f, TypeLD>, Enc_4f677b, AddrModeRel, ImmRegShl {
12156 let Inst{12-12} = 0b1;
12157 let Inst{31-21} = 0b10011101001;
12158 let hasNewValue = 1;
12159 let opNewValue = 0;
12160 let addrMode = BaseLongOffset;
12161 let accessSize = ByteAccess;
12162 let mayLoad = 1;
12163 let isExtended = 1;
12164 let CextOpcode = "L2_loadrub";
12165 let InputType = "imm";
12166 let DecoderNamespace = "MustExtend";
12167 let isExtendable = 1;
12168 let opExtendable = 3;
12169 let isExtentSigned = 0;
12170 let opExtentBits = 6;
12171 let opExtentAlign = 0;
12172 }
12173 def L4_loadruh_ap : HInst<
12174 (outs IntRegs:$Rd32, IntRegs:$Re32),
12175 (ins u32_0Imm:$II),
12176 "$Rd32 = memuh($Re32=#$II)",
12177 tc_b77c481f, TypeLD>, Enc_323f2d {
12178 let Inst{7-7} = 0b0;
12179 let Inst{13-12} = 0b01;
12180 let Inst{31-21} = 0b10011011011;
12181 let hasNewValue = 1;
12182 let opNewValue = 0;
12183 let addrMode = AbsoluteSet;
12184 let accessSize = HalfWordAccess;
12185 let mayLoad = 1;
12186 let isExtended = 1;
12187 let DecoderNamespace = "MustExtend";
12188 let isExtendable = 1;
12189 let opExtendable = 2;
12190 let isExtentSigned = 0;
12191 let opExtentBits = 6;
12192 let opExtentAlign = 0;
12193 }
12194 def L4_loadruh_rr : HInst<
12195 (outs IntRegs:$Rd32),
12196 (ins IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12197 "$Rd32 = memuh($Rs32+$Rt32<<#$Ii)",
12198 tc_f47d212f, TypeLD>, Enc_da664b, AddrModeRel, ImmRegShl {
12199 let Inst{6-5} = 0b00;
12200 let Inst{31-21} = 0b00111010011;
12201 let hasNewValue = 1;
12202 let opNewValue = 0;
12203 let addrMode = BaseRegOffset;
12204 let accessSize = HalfWordAccess;
12205 let mayLoad = 1;
12206 let CextOpcode = "L2_loadruh";
12207 let InputType = "reg";
12208 let BaseOpcode = "L4_loadruh_rr";
12209 let isPredicable = 1;
12210 }
12211 def L4_loadruh_ur : HInst<
12212 (outs IntRegs:$Rd32),
12213 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
12214 "$Rd32 = memuh($Rt32<<#$Ii+#$II)",
12215 tc_cf47a43f, TypeLD>, Enc_4f677b, AddrModeRel, ImmRegShl {
12216 let Inst{12-12} = 0b1;
12217 let Inst{31-21} = 0b10011101011;
12218 let hasNewValue = 1;
12219 let opNewValue = 0;
12220 let addrMode = BaseLongOffset;
12221 let accessSize = HalfWordAccess;
12222 let mayLoad = 1;
12223 let isExtended = 1;
12224 let CextOpcode = "L2_loadruh";
12225 let InputType = "imm";
12226 let DecoderNamespace = "MustExtend";
12227 let isExtendable = 1;
12228 let opExtendable = 3;
12229 let isExtentSigned = 0;
12230 let opExtentBits = 6;
12231 let opExtentAlign = 0;
12232 }
12233 def L4_or_memopb_io : HInst<
12234 (outs),
12235 (ins IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
12236 "memb($Rs32+#$Ii) |= $Rt32",
12237 tc_44126683, TypeV4LDST>, Enc_d44e31 {
12238 let Inst{6-5} = 0b11;
12239 let Inst{13-13} = 0b0;
12240 let Inst{31-21} = 0b00111110000;
12241 let addrMode = BaseImmOffset;
12242 let accessSize = ByteAccess;
12243 let mayLoad = 1;
12244 let isRestrictNoSlot1Store = 1;
12245 let mayStore = 1;
12246 let isExtendable = 1;
12247 let opExtendable = 1;
12248 let isExtentSigned = 0;
12249 let opExtentBits = 6;
12250 let opExtentAlign = 0;
12251 }
12252 def L4_or_memopb_zomap : HInst<
12253 (outs),
12254 (ins IntRegs:$Rs32, IntRegs:$Rt32),
12255 "memb($Rs32) |= $Rt32",
12256 tc_44126683, TypeMAPPING> {
12257 let isPseudo = 1;
12258 let isCodeGenOnly = 1;
12259 }
12260 def L4_or_memoph_io : HInst<
12261 (outs),
12262 (ins IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
12263 "memh($Rs32+#$Ii) |= $Rt32",
12264 tc_44126683, TypeV4LDST>, Enc_163a3c {
12265 let Inst{6-5} = 0b11;
12266 let Inst{13-13} = 0b0;
12267 let Inst{31-21} = 0b00111110001;
12268 let addrMode = BaseImmOffset;
12269 let accessSize = HalfWordAccess;
12270 let mayLoad = 1;
12271 let isRestrictNoSlot1Store = 1;
12272 let mayStore = 1;
12273 let isExtendable = 1;
12274 let opExtendable = 1;
12275 let isExtentSigned = 0;
12276 let opExtentBits = 7;
12277 let opExtentAlign = 1;
12278 }
12279 def L4_or_memoph_zomap : HInst<
12280 (outs),
12281 (ins IntRegs:$Rs32, IntRegs:$Rt32),
12282 "memh($Rs32) |= $Rt32",
12283 tc_44126683, TypeMAPPING> {
12284 let isPseudo = 1;
12285 let isCodeGenOnly = 1;
12286 }
12287 def L4_or_memopw_io : HInst<
12288 (outs),
12289 (ins IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Rt32),
12290 "memw($Rs32+#$Ii) |= $Rt32",
12291 tc_44126683, TypeV4LDST>, Enc_226535 {
12292 let Inst{6-5} = 0b11;
12293 let Inst{13-13} = 0b0;
12294 let Inst{31-21} = 0b00111110010;
12295 let addrMode = BaseImmOffset;
12296 let accessSize = WordAccess;
12297 let mayLoad = 1;
12298 let isRestrictNoSlot1Store = 1;
12299 let mayStore = 1;
12300 let isExtendable = 1;
12301 let opExtendable = 1;
12302 let isExtentSigned = 0;
12303 let opExtentBits = 8;
12304 let opExtentAlign = 2;
12305 }
12306 def L4_or_memopw_zomap : HInst<
12307 (outs),
12308 (ins IntRegs:$Rs32, IntRegs:$Rt32),
12309 "memw($Rs32) |= $Rt32",
12310 tc_44126683, TypeMAPPING> {
12311 let isPseudo = 1;
12312 let isCodeGenOnly = 1;
12313 }
12314 def L4_ploadrbf_abs : HInst<
12315 (outs IntRegs:$Rd32),
12316 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12317 "if (!$Pt4) $Rd32 = memb(#$Ii)",
12318 tc_1d5a38a8, TypeLD>, Enc_2301d6, AddrModeRel {
12319 let Inst{7-5} = 0b100;
12320 let Inst{13-11} = 0b101;
12321 let Inst{31-21} = 0b10011111000;
12322 let isPredicated = 1;
12323 let isPredicatedFalse = 1;
12324 let hasNewValue = 1;
12325 let opNewValue = 0;
12326 let addrMode = Absolute;
12327 let accessSize = ByteAccess;
12328 let mayLoad = 1;
12329 let isExtended = 1;
12330 let CextOpcode = "L2_loadrb";
12331 let BaseOpcode = "L4_loadrb_abs";
12332 let DecoderNamespace = "MustExtend";
12333 let isExtendable = 1;
12334 let opExtendable = 2;
12335 let isExtentSigned = 0;
12336 let opExtentBits = 6;
12337 let opExtentAlign = 0;
12338 }
12339 def L4_ploadrbf_rr : HInst<
12340 (outs IntRegs:$Rd32),
12341 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12342 "if (!$Pv4) $Rd32 = memb($Rs32+$Rt32<<#$Ii)",
12343 tc_9ef61e5c, TypeLD>, Enc_2e1979, AddrModeRel {
12344 let Inst{31-21} = 0b00110001000;
12345 let isPredicated = 1;
12346 let isPredicatedFalse = 1;
12347 let hasNewValue = 1;
12348 let opNewValue = 0;
12349 let addrMode = BaseRegOffset;
12350 let accessSize = ByteAccess;
12351 let mayLoad = 1;
12352 let CextOpcode = "L2_loadrb";
12353 let InputType = "reg";
12354 let BaseOpcode = "L4_loadrb_rr";
12355 }
12356 def L4_ploadrbfnew_abs : HInst<
12357 (outs IntRegs:$Rd32),
12358 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12359 "if (!$Pt4.new) $Rd32 = memb(#$Ii)",
12360 tc_b77c481f, TypeLD>, Enc_2301d6, AddrModeRel {
12361 let Inst{7-5} = 0b100;
12362 let Inst{13-11} = 0b111;
12363 let Inst{31-21} = 0b10011111000;
12364 let isPredicated = 1;
12365 let isPredicatedFalse = 1;
12366 let hasNewValue = 1;
12367 let opNewValue = 0;
12368 let addrMode = Absolute;
12369 let accessSize = ByteAccess;
12370 let isPredicatedNew = 1;
12371 let mayLoad = 1;
12372 let isExtended = 1;
12373 let CextOpcode = "L2_loadrb";
12374 let BaseOpcode = "L4_loadrb_abs";
12375 let DecoderNamespace = "MustExtend";
12376 let isExtendable = 1;
12377 let opExtendable = 2;
12378 let isExtentSigned = 0;
12379 let opExtentBits = 6;
12380 let opExtentAlign = 0;
12381 }
12382 def L4_ploadrbfnew_rr : HInst<
12383 (outs IntRegs:$Rd32),
12384 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12385 "if (!$Pv4.new) $Rd32 = memb($Rs32+$Rt32<<#$Ii)",
12386 tc_b7dd427e, TypeLD>, Enc_2e1979, AddrModeRel {
12387 let Inst{31-21} = 0b00110011000;
12388 let isPredicated = 1;
12389 let isPredicatedFalse = 1;
12390 let hasNewValue = 1;
12391 let opNewValue = 0;
12392 let addrMode = BaseRegOffset;
12393 let accessSize = ByteAccess;
12394 let isPredicatedNew = 1;
12395 let mayLoad = 1;
12396 let CextOpcode = "L2_loadrb";
12397 let InputType = "reg";
12398 let BaseOpcode = "L4_loadrb_rr";
12399 }
12400 def L4_ploadrbt_abs : HInst<
12401 (outs IntRegs:$Rd32),
12402 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12403 "if ($Pt4) $Rd32 = memb(#$Ii)",
12404 tc_1d5a38a8, TypeLD>, Enc_2301d6, AddrModeRel {
12405 let Inst{7-5} = 0b100;
12406 let Inst{13-11} = 0b100;
12407 let Inst{31-21} = 0b10011111000;
12408 let isPredicated = 1;
12409 let hasNewValue = 1;
12410 let opNewValue = 0;
12411 let addrMode = Absolute;
12412 let accessSize = ByteAccess;
12413 let mayLoad = 1;
12414 let isExtended = 1;
12415 let CextOpcode = "L2_loadrb";
12416 let BaseOpcode = "L4_loadrb_abs";
12417 let DecoderNamespace = "MustExtend";
12418 let isExtendable = 1;
12419 let opExtendable = 2;
12420 let isExtentSigned = 0;
12421 let opExtentBits = 6;
12422 let opExtentAlign = 0;
12423 }
12424 def L4_ploadrbt_rr : HInst<
12425 (outs IntRegs:$Rd32),
12426 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12427 "if ($Pv4) $Rd32 = memb($Rs32+$Rt32<<#$Ii)",
12428 tc_9ef61e5c, TypeLD>, Enc_2e1979, AddrModeRel {
12429 let Inst{31-21} = 0b00110000000;
12430 let isPredicated = 1;
12431 let hasNewValue = 1;
12432 let opNewValue = 0;
12433 let addrMode = BaseRegOffset;
12434 let accessSize = ByteAccess;
12435 let mayLoad = 1;
12436 let CextOpcode = "L2_loadrb";
12437 let InputType = "reg";
12438 let BaseOpcode = "L4_loadrb_rr";
12439 }
12440 def L4_ploadrbtnew_abs : HInst<
12441 (outs IntRegs:$Rd32),
12442 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12443 "if ($Pt4.new) $Rd32 = memb(#$Ii)",
12444 tc_b77c481f, TypeLD>, Enc_2301d6, AddrModeRel {
12445 let Inst{7-5} = 0b100;
12446 let Inst{13-11} = 0b110;
12447 let Inst{31-21} = 0b10011111000;
12448 let isPredicated = 1;
12449 let hasNewValue = 1;
12450 let opNewValue = 0;
12451 let addrMode = Absolute;
12452 let accessSize = ByteAccess;
12453 let isPredicatedNew = 1;
12454 let mayLoad = 1;
12455 let isExtended = 1;
12456 let CextOpcode = "L2_loadrb";
12457 let BaseOpcode = "L4_loadrb_abs";
12458 let DecoderNamespace = "MustExtend";
12459 let isExtendable = 1;
12460 let opExtendable = 2;
12461 let isExtentSigned = 0;
12462 let opExtentBits = 6;
12463 let opExtentAlign = 0;
12464 }
12465 def L4_ploadrbtnew_rr : HInst<
12466 (outs IntRegs:$Rd32),
12467 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12468 "if ($Pv4.new) $Rd32 = memb($Rs32+$Rt32<<#$Ii)",
12469 tc_b7dd427e, TypeLD>, Enc_2e1979, AddrModeRel {
12470 let Inst{31-21} = 0b00110010000;
12471 let isPredicated = 1;
12472 let hasNewValue = 1;
12473 let opNewValue = 0;
12474 let addrMode = BaseRegOffset;
12475 let accessSize = ByteAccess;
12476 let isPredicatedNew = 1;
12477 let mayLoad = 1;
12478 let CextOpcode = "L2_loadrb";
12479 let InputType = "reg";
12480 let BaseOpcode = "L4_loadrb_rr";
12481 }
12482 def L4_ploadrdf_abs : HInst<
12483 (outs DoubleRegs:$Rdd32),
12484 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12485 "if (!$Pt4) $Rdd32 = memd(#$Ii)",
12486 tc_1d5a38a8, TypeLD>, Enc_2a7b91, AddrModeRel {
12487 let Inst{7-5} = 0b100;
12488 let Inst{13-11} = 0b101;
12489 let Inst{31-21} = 0b10011111110;
12490 let isPredicated = 1;
12491 let isPredicatedFalse = 1;
12492 let addrMode = Absolute;
12493 let accessSize = DoubleWordAccess;
12494 let mayLoad = 1;
12495 let isExtended = 1;
12496 let CextOpcode = "L2_loadrd";
12497 let BaseOpcode = "L4_loadrd_abs";
12498 let DecoderNamespace = "MustExtend";
12499 let isExtendable = 1;
12500 let opExtendable = 2;
12501 let isExtentSigned = 0;
12502 let opExtentBits = 6;
12503 let opExtentAlign = 0;
12504 }
12505 def L4_ploadrdf_rr : HInst<
12506 (outs DoubleRegs:$Rdd32),
12507 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12508 "if (!$Pv4) $Rdd32 = memd($Rs32+$Rt32<<#$Ii)",
12509 tc_9ef61e5c, TypeLD>, Enc_98c0b8, AddrModeRel {
12510 let Inst{31-21} = 0b00110001110;
12511 let isPredicated = 1;
12512 let isPredicatedFalse = 1;
12513 let addrMode = BaseRegOffset;
12514 let accessSize = DoubleWordAccess;
12515 let mayLoad = 1;
12516 let CextOpcode = "L2_loadrd";
12517 let InputType = "reg";
12518 let BaseOpcode = "L4_loadrd_rr";
12519 }
12520 def L4_ploadrdfnew_abs : HInst<
12521 (outs DoubleRegs:$Rdd32),
12522 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12523 "if (!$Pt4.new) $Rdd32 = memd(#$Ii)",
12524 tc_b77c481f, TypeLD>, Enc_2a7b91, AddrModeRel {
12525 let Inst{7-5} = 0b100;
12526 let Inst{13-11} = 0b111;
12527 let Inst{31-21} = 0b10011111110;
12528 let isPredicated = 1;
12529 let isPredicatedFalse = 1;
12530 let addrMode = Absolute;
12531 let accessSize = DoubleWordAccess;
12532 let isPredicatedNew = 1;
12533 let mayLoad = 1;
12534 let isExtended = 1;
12535 let CextOpcode = "L2_loadrd";
12536 let BaseOpcode = "L4_loadrd_abs";
12537 let DecoderNamespace = "MustExtend";
12538 let isExtendable = 1;
12539 let opExtendable = 2;
12540 let isExtentSigned = 0;
12541 let opExtentBits = 6;
12542 let opExtentAlign = 0;
12543 }
12544 def L4_ploadrdfnew_rr : HInst<
12545 (outs DoubleRegs:$Rdd32),
12546 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12547 "if (!$Pv4.new) $Rdd32 = memd($Rs32+$Rt32<<#$Ii)",
12548 tc_b7dd427e, TypeLD>, Enc_98c0b8, AddrModeRel {
12549 let Inst{31-21} = 0b00110011110;
12550 let isPredicated = 1;
12551 let isPredicatedFalse = 1;
12552 let addrMode = BaseRegOffset;
12553 let accessSize = DoubleWordAccess;
12554 let isPredicatedNew = 1;
12555 let mayLoad = 1;
12556 let CextOpcode = "L2_loadrd";
12557 let InputType = "reg";
12558 let BaseOpcode = "L4_loadrd_rr";
12559 }
12560 def L4_ploadrdt_abs : HInst<
12561 (outs DoubleRegs:$Rdd32),
12562 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12563 "if ($Pt4) $Rdd32 = memd(#$Ii)",
12564 tc_1d5a38a8, TypeLD>, Enc_2a7b91, AddrModeRel {
12565 let Inst{7-5} = 0b100;
12566 let Inst{13-11} = 0b100;
12567 let Inst{31-21} = 0b10011111110;
12568 let isPredicated = 1;
12569 let addrMode = Absolute;
12570 let accessSize = DoubleWordAccess;
12571 let mayLoad = 1;
12572 let isExtended = 1;
12573 let CextOpcode = "L2_loadrd";
12574 let BaseOpcode = "L4_loadrd_abs";
12575 let DecoderNamespace = "MustExtend";
12576 let isExtendable = 1;
12577 let opExtendable = 2;
12578 let isExtentSigned = 0;
12579 let opExtentBits = 6;
12580 let opExtentAlign = 0;
12581 }
12582 def L4_ploadrdt_rr : HInst<
12583 (outs DoubleRegs:$Rdd32),
12584 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12585 "if ($Pv4) $Rdd32 = memd($Rs32+$Rt32<<#$Ii)",
12586 tc_9ef61e5c, TypeLD>, Enc_98c0b8, AddrModeRel {
12587 let Inst{31-21} = 0b00110000110;
12588 let isPredicated = 1;
12589 let addrMode = BaseRegOffset;
12590 let accessSize = DoubleWordAccess;
12591 let mayLoad = 1;
12592 let CextOpcode = "L2_loadrd";
12593 let InputType = "reg";
12594 let BaseOpcode = "L4_loadrd_rr";
12595 }
12596 def L4_ploadrdtnew_abs : HInst<
12597 (outs DoubleRegs:$Rdd32),
12598 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12599 "if ($Pt4.new) $Rdd32 = memd(#$Ii)",
12600 tc_b77c481f, TypeLD>, Enc_2a7b91, AddrModeRel {
12601 let Inst{7-5} = 0b100;
12602 let Inst{13-11} = 0b110;
12603 let Inst{31-21} = 0b10011111110;
12604 let isPredicated = 1;
12605 let addrMode = Absolute;
12606 let accessSize = DoubleWordAccess;
12607 let isPredicatedNew = 1;
12608 let mayLoad = 1;
12609 let isExtended = 1;
12610 let CextOpcode = "L2_loadrd";
12611 let BaseOpcode = "L4_loadrd_abs";
12612 let DecoderNamespace = "MustExtend";
12613 let isExtendable = 1;
12614 let opExtendable = 2;
12615 let isExtentSigned = 0;
12616 let opExtentBits = 6;
12617 let opExtentAlign = 0;
12618 }
12619 def L4_ploadrdtnew_rr : HInst<
12620 (outs DoubleRegs:$Rdd32),
12621 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12622 "if ($Pv4.new) $Rdd32 = memd($Rs32+$Rt32<<#$Ii)",
12623 tc_b7dd427e, TypeLD>, Enc_98c0b8, AddrModeRel {
12624 let Inst{31-21} = 0b00110010110;
12625 let isPredicated = 1;
12626 let addrMode = BaseRegOffset;
12627 let accessSize = DoubleWordAccess;
12628 let isPredicatedNew = 1;
12629 let mayLoad = 1;
12630 let CextOpcode = "L2_loadrd";
12631 let InputType = "reg";
12632 let BaseOpcode = "L4_loadrd_rr";
12633 }
12634 def L4_ploadrhf_abs : HInst<
12635 (outs IntRegs:$Rd32),
12636 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12637 "if (!$Pt4) $Rd32 = memh(#$Ii)",
12638 tc_1d5a38a8, TypeLD>, Enc_2301d6, AddrModeRel {
12639 let Inst{7-5} = 0b100;
12640 let Inst{13-11} = 0b101;
12641 let Inst{31-21} = 0b10011111010;
12642 let isPredicated = 1;
12643 let isPredicatedFalse = 1;
12644 let hasNewValue = 1;
12645 let opNewValue = 0;
12646 let addrMode = Absolute;
12647 let accessSize = HalfWordAccess;
12648 let mayLoad = 1;
12649 let isExtended = 1;
12650 let CextOpcode = "L2_loadrh";
12651 let BaseOpcode = "L4_loadrh_abs";
12652 let DecoderNamespace = "MustExtend";
12653 let isExtendable = 1;
12654 let opExtendable = 2;
12655 let isExtentSigned = 0;
12656 let opExtentBits = 6;
12657 let opExtentAlign = 0;
12658 }
12659 def L4_ploadrhf_rr : HInst<
12660 (outs IntRegs:$Rd32),
12661 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12662 "if (!$Pv4) $Rd32 = memh($Rs32+$Rt32<<#$Ii)",
12663 tc_9ef61e5c, TypeLD>, Enc_2e1979, AddrModeRel {
12664 let Inst{31-21} = 0b00110001010;
12665 let isPredicated = 1;
12666 let isPredicatedFalse = 1;
12667 let hasNewValue = 1;
12668 let opNewValue = 0;
12669 let addrMode = BaseRegOffset;
12670 let accessSize = HalfWordAccess;
12671 let mayLoad = 1;
12672 let CextOpcode = "L2_loadrh";
12673 let InputType = "reg";
12674 let BaseOpcode = "L4_loadrh_rr";
12675 }
12676 def L4_ploadrhfnew_abs : HInst<
12677 (outs IntRegs:$Rd32),
12678 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12679 "if (!$Pt4.new) $Rd32 = memh(#$Ii)",
12680 tc_b77c481f, TypeLD>, Enc_2301d6, AddrModeRel {
12681 let Inst{7-5} = 0b100;
12682 let Inst{13-11} = 0b111;
12683 let Inst{31-21} = 0b10011111010;
12684 let isPredicated = 1;
12685 let isPredicatedFalse = 1;
12686 let hasNewValue = 1;
12687 let opNewValue = 0;
12688 let addrMode = Absolute;
12689 let accessSize = HalfWordAccess;
12690 let isPredicatedNew = 1;
12691 let mayLoad = 1;
12692 let isExtended = 1;
12693 let CextOpcode = "L2_loadrh";
12694 let BaseOpcode = "L4_loadrh_abs";
12695 let DecoderNamespace = "MustExtend";
12696 let isExtendable = 1;
12697 let opExtendable = 2;
12698 let isExtentSigned = 0;
12699 let opExtentBits = 6;
12700 let opExtentAlign = 0;
12701 }
12702 def L4_ploadrhfnew_rr : HInst<
12703 (outs IntRegs:$Rd32),
12704 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12705 "if (!$Pv4.new) $Rd32 = memh($Rs32+$Rt32<<#$Ii)",
12706 tc_b7dd427e, TypeLD>, Enc_2e1979, AddrModeRel {
12707 let Inst{31-21} = 0b00110011010;
12708 let isPredicated = 1;
12709 let isPredicatedFalse = 1;
12710 let hasNewValue = 1;
12711 let opNewValue = 0;
12712 let addrMode = BaseRegOffset;
12713 let accessSize = HalfWordAccess;
12714 let isPredicatedNew = 1;
12715 let mayLoad = 1;
12716 let CextOpcode = "L2_loadrh";
12717 let InputType = "reg";
12718 let BaseOpcode = "L4_loadrh_rr";
12719 }
12720 def L4_ploadrht_abs : HInst<
12721 (outs IntRegs:$Rd32),
12722 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12723 "if ($Pt4) $Rd32 = memh(#$Ii)",
12724 tc_1d5a38a8, TypeLD>, Enc_2301d6, AddrModeRel {
12725 let Inst{7-5} = 0b100;
12726 let Inst{13-11} = 0b100;
12727 let Inst{31-21} = 0b10011111010;
12728 let isPredicated = 1;
12729 let hasNewValue = 1;
12730 let opNewValue = 0;
12731 let addrMode = Absolute;
12732 let accessSize = HalfWordAccess;
12733 let mayLoad = 1;
12734 let isExtended = 1;
12735 let CextOpcode = "L2_loadrh";
12736 let BaseOpcode = "L4_loadrh_abs";
12737 let DecoderNamespace = "MustExtend";
12738 let isExtendable = 1;
12739 let opExtendable = 2;
12740 let isExtentSigned = 0;
12741 let opExtentBits = 6;
12742 let opExtentAlign = 0;
12743 }
12744 def L4_ploadrht_rr : HInst<
12745 (outs IntRegs:$Rd32),
12746 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12747 "if ($Pv4) $Rd32 = memh($Rs32+$Rt32<<#$Ii)",
12748 tc_9ef61e5c, TypeLD>, Enc_2e1979, AddrModeRel {
12749 let Inst{31-21} = 0b00110000010;
12750 let isPredicated = 1;
12751 let hasNewValue = 1;
12752 let opNewValue = 0;
12753 let addrMode = BaseRegOffset;
12754 let accessSize = HalfWordAccess;
12755 let mayLoad = 1;
12756 let CextOpcode = "L2_loadrh";
12757 let InputType = "reg";
12758 let BaseOpcode = "L4_loadrh_rr";
12759 }
12760 def L4_ploadrhtnew_abs : HInst<
12761 (outs IntRegs:$Rd32),
12762 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12763 "if ($Pt4.new) $Rd32 = memh(#$Ii)",
12764 tc_b77c481f, TypeLD>, Enc_2301d6, AddrModeRel {
12765 let Inst{7-5} = 0b100;
12766 let Inst{13-11} = 0b110;
12767 let Inst{31-21} = 0b10011111010;
12768 let isPredicated = 1;
12769 let hasNewValue = 1;
12770 let opNewValue = 0;
12771 let addrMode = Absolute;
12772 let accessSize = HalfWordAccess;
12773 let isPredicatedNew = 1;
12774 let mayLoad = 1;
12775 let isExtended = 1;
12776 let CextOpcode = "L2_loadrh";
12777 let BaseOpcode = "L4_loadrh_abs";
12778 let DecoderNamespace = "MustExtend";
12779 let isExtendable = 1;
12780 let opExtendable = 2;
12781 let isExtentSigned = 0;
12782 let opExtentBits = 6;
12783 let opExtentAlign = 0;
12784 }
12785 def L4_ploadrhtnew_rr : HInst<
12786 (outs IntRegs:$Rd32),
12787 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12788 "if ($Pv4.new) $Rd32 = memh($Rs32+$Rt32<<#$Ii)",
12789 tc_b7dd427e, TypeLD>, Enc_2e1979, AddrModeRel {
12790 let Inst{31-21} = 0b00110010010;
12791 let isPredicated = 1;
12792 let hasNewValue = 1;
12793 let opNewValue = 0;
12794 let addrMode = BaseRegOffset;
12795 let accessSize = HalfWordAccess;
12796 let isPredicatedNew = 1;
12797 let mayLoad = 1;
12798 let CextOpcode = "L2_loadrh";
12799 let InputType = "reg";
12800 let BaseOpcode = "L4_loadrh_rr";
12801 }
12802 def L4_ploadrif_abs : HInst<
12803 (outs IntRegs:$Rd32),
12804 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12805 "if (!$Pt4) $Rd32 = memw(#$Ii)",
12806 tc_1d5a38a8, TypeLD>, Enc_2301d6, AddrModeRel {
12807 let Inst{7-5} = 0b100;
12808 let Inst{13-11} = 0b101;
12809 let Inst{31-21} = 0b10011111100;
12810 let isPredicated = 1;
12811 let isPredicatedFalse = 1;
12812 let hasNewValue = 1;
12813 let opNewValue = 0;
12814 let addrMode = Absolute;
12815 let accessSize = WordAccess;
12816 let mayLoad = 1;
12817 let isExtended = 1;
12818 let CextOpcode = "L2_loadri";
12819 let BaseOpcode = "L4_loadri_abs";
12820 let DecoderNamespace = "MustExtend";
12821 let isExtendable = 1;
12822 let opExtendable = 2;
12823 let isExtentSigned = 0;
12824 let opExtentBits = 6;
12825 let opExtentAlign = 0;
12826 }
12827 def L4_ploadrif_rr : HInst<
12828 (outs IntRegs:$Rd32),
12829 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12830 "if (!$Pv4) $Rd32 = memw($Rs32+$Rt32<<#$Ii)",
12831 tc_9ef61e5c, TypeLD>, Enc_2e1979, AddrModeRel {
12832 let Inst{31-21} = 0b00110001100;
12833 let isPredicated = 1;
12834 let isPredicatedFalse = 1;
12835 let hasNewValue = 1;
12836 let opNewValue = 0;
12837 let addrMode = BaseRegOffset;
12838 let accessSize = WordAccess;
12839 let mayLoad = 1;
12840 let CextOpcode = "L2_loadri";
12841 let InputType = "reg";
12842 let BaseOpcode = "L4_loadri_rr";
12843 }
12844 def L4_ploadrifnew_abs : HInst<
12845 (outs IntRegs:$Rd32),
12846 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12847 "if (!$Pt4.new) $Rd32 = memw(#$Ii)",
12848 tc_b77c481f, TypeLD>, Enc_2301d6, AddrModeRel {
12849 let Inst{7-5} = 0b100;
12850 let Inst{13-11} = 0b111;
12851 let Inst{31-21} = 0b10011111100;
12852 let isPredicated = 1;
12853 let isPredicatedFalse = 1;
12854 let hasNewValue = 1;
12855 let opNewValue = 0;
12856 let addrMode = Absolute;
12857 let accessSize = WordAccess;
12858 let isPredicatedNew = 1;
12859 let mayLoad = 1;
12860 let isExtended = 1;
12861 let CextOpcode = "L2_loadri";
12862 let BaseOpcode = "L4_loadri_abs";
12863 let DecoderNamespace = "MustExtend";
12864 let isExtendable = 1;
12865 let opExtendable = 2;
12866 let isExtentSigned = 0;
12867 let opExtentBits = 6;
12868 let opExtentAlign = 0;
12869 }
12870 def L4_ploadrifnew_rr : HInst<
12871 (outs IntRegs:$Rd32),
12872 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12873 "if (!$Pv4.new) $Rd32 = memw($Rs32+$Rt32<<#$Ii)",
12874 tc_b7dd427e, TypeLD>, Enc_2e1979, AddrModeRel {
12875 let Inst{31-21} = 0b00110011100;
12876 let isPredicated = 1;
12877 let isPredicatedFalse = 1;
12878 let hasNewValue = 1;
12879 let opNewValue = 0;
12880 let addrMode = BaseRegOffset;
12881 let accessSize = WordAccess;
12882 let isPredicatedNew = 1;
12883 let mayLoad = 1;
12884 let CextOpcode = "L2_loadri";
12885 let InputType = "reg";
12886 let BaseOpcode = "L4_loadri_rr";
12887 }
12888 def L4_ploadrit_abs : HInst<
12889 (outs IntRegs:$Rd32),
12890 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12891 "if ($Pt4) $Rd32 = memw(#$Ii)",
12892 tc_1d5a38a8, TypeLD>, Enc_2301d6, AddrModeRel {
12893 let Inst{7-5} = 0b100;
12894 let Inst{13-11} = 0b100;
12895 let Inst{31-21} = 0b10011111100;
12896 let isPredicated = 1;
12897 let hasNewValue = 1;
12898 let opNewValue = 0;
12899 let addrMode = Absolute;
12900 let accessSize = WordAccess;
12901 let mayLoad = 1;
12902 let isExtended = 1;
12903 let CextOpcode = "L2_loadri";
12904 let BaseOpcode = "L4_loadri_abs";
12905 let DecoderNamespace = "MustExtend";
12906 let isExtendable = 1;
12907 let opExtendable = 2;
12908 let isExtentSigned = 0;
12909 let opExtentBits = 6;
12910 let opExtentAlign = 0;
12911 }
12912 def L4_ploadrit_rr : HInst<
12913 (outs IntRegs:$Rd32),
12914 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12915 "if ($Pv4) $Rd32 = memw($Rs32+$Rt32<<#$Ii)",
12916 tc_9ef61e5c, TypeLD>, Enc_2e1979, AddrModeRel {
12917 let Inst{31-21} = 0b00110000100;
12918 let isPredicated = 1;
12919 let hasNewValue = 1;
12920 let opNewValue = 0;
12921 let addrMode = BaseRegOffset;
12922 let accessSize = WordAccess;
12923 let mayLoad = 1;
12924 let CextOpcode = "L2_loadri";
12925 let InputType = "reg";
12926 let BaseOpcode = "L4_loadri_rr";
12927 }
12928 def L4_ploadritnew_abs : HInst<
12929 (outs IntRegs:$Rd32),
12930 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12931 "if ($Pt4.new) $Rd32 = memw(#$Ii)",
12932 tc_b77c481f, TypeLD>, Enc_2301d6, AddrModeRel {
12933 let Inst{7-5} = 0b100;
12934 let Inst{13-11} = 0b110;
12935 let Inst{31-21} = 0b10011111100;
12936 let isPredicated = 1;
12937 let hasNewValue = 1;
12938 let opNewValue = 0;
12939 let addrMode = Absolute;
12940 let accessSize = WordAccess;
12941 let isPredicatedNew = 1;
12942 let mayLoad = 1;
12943 let isExtended = 1;
12944 let CextOpcode = "L2_loadri";
12945 let BaseOpcode = "L4_loadri_abs";
12946 let DecoderNamespace = "MustExtend";
12947 let isExtendable = 1;
12948 let opExtendable = 2;
12949 let isExtentSigned = 0;
12950 let opExtentBits = 6;
12951 let opExtentAlign = 0;
12952 }
12953 def L4_ploadritnew_rr : HInst<
12954 (outs IntRegs:$Rd32),
12955 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12956 "if ($Pv4.new) $Rd32 = memw($Rs32+$Rt32<<#$Ii)",
12957 tc_b7dd427e, TypeLD>, Enc_2e1979, AddrModeRel {
12958 let Inst{31-21} = 0b00110010100;
12959 let isPredicated = 1;
12960 let hasNewValue = 1;
12961 let opNewValue = 0;
12962 let addrMode = BaseRegOffset;
12963 let accessSize = WordAccess;
12964 let isPredicatedNew = 1;
12965 let mayLoad = 1;
12966 let CextOpcode = "L2_loadri";
12967 let InputType = "reg";
12968 let BaseOpcode = "L4_loadri_rr";
12969 }
12970 def L4_ploadrubf_abs : HInst<
12971 (outs IntRegs:$Rd32),
12972 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12973 "if (!$Pt4) $Rd32 = memub(#$Ii)",
12974 tc_1d5a38a8, TypeLD>, Enc_2301d6, AddrModeRel {
12975 let Inst{7-5} = 0b100;
12976 let Inst{13-11} = 0b101;
12977 let Inst{31-21} = 0b10011111001;
12978 let isPredicated = 1;
12979 let isPredicatedFalse = 1;
12980 let hasNewValue = 1;
12981 let opNewValue = 0;
12982 let addrMode = Absolute;
12983 let accessSize = ByteAccess;
12984 let mayLoad = 1;
12985 let isExtended = 1;
12986 let CextOpcode = "L2_loadrub";
12987 let BaseOpcode = "L4_loadrub_abs";
12988 let DecoderNamespace = "MustExtend";
12989 let isExtendable = 1;
12990 let opExtendable = 2;
12991 let isExtentSigned = 0;
12992 let opExtentBits = 6;
12993 let opExtentAlign = 0;
12994 }
12995 def L4_ploadrubf_rr : HInst<
12996 (outs IntRegs:$Rd32),
12997 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12998 "if (!$Pv4) $Rd32 = memub($Rs32+$Rt32<<#$Ii)",
12999 tc_9ef61e5c, TypeLD>, Enc_2e1979, AddrModeRel {
13000 let Inst{31-21} = 0b00110001001;
13001 let isPredicated = 1;
13002 let isPredicatedFalse = 1;
13003 let hasNewValue = 1;
13004 let opNewValue = 0;
13005 let addrMode = BaseRegOffset;
13006 let accessSize = ByteAccess;
13007 let mayLoad = 1;
13008 let CextOpcode = "L2_loadrub";
13009 let InputType = "reg";
13010 let BaseOpcode = "L4_loadrub_rr";
13011 }
13012 def L4_ploadrubfnew_abs : HInst<
13013 (outs IntRegs:$Rd32),
13014 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13015 "if (!$Pt4.new) $Rd32 = memub(#$Ii)",
13016 tc_b77c481f, TypeLD>, Enc_2301d6, AddrModeRel {
13017 let Inst{7-5} = 0b100;
13018 let Inst{13-11} = 0b111;
13019 let Inst{31-21} = 0b10011111001;
13020 let isPredicated = 1;
13021 let isPredicatedFalse = 1;
13022 let hasNewValue = 1;
13023 let opNewValue = 0;
13024 let addrMode = Absolute;
13025 let accessSize = ByteAccess;
13026 let isPredicatedNew = 1;
13027 let mayLoad = 1;
13028 let isExtended = 1;
13029 let CextOpcode = "L2_loadrub";
13030 let BaseOpcode = "L4_loadrub_abs";
13031 let DecoderNamespace = "MustExtend";
13032 let isExtendable = 1;
13033 let opExtendable = 2;
13034 let isExtentSigned = 0;
13035 let opExtentBits = 6;
13036 let opExtentAlign = 0;
13037 }
13038 def L4_ploadrubfnew_rr : HInst<
13039 (outs IntRegs:$Rd32),
13040 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13041 "if (!$Pv4.new) $Rd32 = memub($Rs32+$Rt32<<#$Ii)",
13042 tc_b7dd427e, TypeLD>, Enc_2e1979, AddrModeRel {
13043 let Inst{31-21} = 0b00110011001;
13044 let isPredicated = 1;
13045 let isPredicatedFalse = 1;
13046 let hasNewValue = 1;
13047 let opNewValue = 0;
13048 let addrMode = BaseRegOffset;
13049 let accessSize = ByteAccess;
13050 let isPredicatedNew = 1;
13051 let mayLoad = 1;
13052 let CextOpcode = "L2_loadrub";
13053 let InputType = "reg";
13054 let BaseOpcode = "L4_loadrub_rr";
13055 }
13056 def L4_ploadrubt_abs : HInst<
13057 (outs IntRegs:$Rd32),
13058 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13059 "if ($Pt4) $Rd32 = memub(#$Ii)",
13060 tc_1d5a38a8, TypeLD>, Enc_2301d6, AddrModeRel {
13061 let Inst{7-5} = 0b100;
13062 let Inst{13-11} = 0b100;
13063 let Inst{31-21} = 0b10011111001;
13064 let isPredicated = 1;
13065 let hasNewValue = 1;
13066 let opNewValue = 0;
13067 let addrMode = Absolute;
13068 let accessSize = ByteAccess;
13069 let mayLoad = 1;
13070 let isExtended = 1;
13071 let CextOpcode = "L2_loadrub";
13072 let BaseOpcode = "L4_loadrub_abs";
13073 let DecoderNamespace = "MustExtend";
13074 let isExtendable = 1;
13075 let opExtendable = 2;
13076 let isExtentSigned = 0;
13077 let opExtentBits = 6;
13078 let opExtentAlign = 0;
13079 }
13080 def L4_ploadrubt_rr : HInst<
13081 (outs IntRegs:$Rd32),
13082 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13083 "if ($Pv4) $Rd32 = memub($Rs32+$Rt32<<#$Ii)",
13084 tc_9ef61e5c, TypeLD>, Enc_2e1979, AddrModeRel {
13085 let Inst{31-21} = 0b00110000001;
13086 let isPredicated = 1;
13087 let hasNewValue = 1;
13088 let opNewValue = 0;
13089 let addrMode = BaseRegOffset;
13090 let accessSize = ByteAccess;
13091 let mayLoad = 1;
13092 let CextOpcode = "L2_loadrub";
13093 let InputType = "reg";
13094 let BaseOpcode = "L4_loadrub_rr";
13095 }
13096 def L4_ploadrubtnew_abs : HInst<
13097 (outs IntRegs:$Rd32),
13098 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13099 "if ($Pt4.new) $Rd32 = memub(#$Ii)",
13100 tc_b77c481f, TypeLD>, Enc_2301d6, AddrModeRel {
13101 let Inst{7-5} = 0b100;
13102 let Inst{13-11} = 0b110;
13103 let Inst{31-21} = 0b10011111001;
13104 let isPredicated = 1;
13105 let hasNewValue = 1;
13106 let opNewValue = 0;
13107 let addrMode = Absolute;
13108 let accessSize = ByteAccess;
13109 let isPredicatedNew = 1;
13110 let mayLoad = 1;
13111 let isExtended = 1;
13112 let CextOpcode = "L2_loadrub";
13113 let BaseOpcode = "L4_loadrub_abs";
13114 let DecoderNamespace = "MustExtend";
13115 let isExtendable = 1;
13116 let opExtendable = 2;
13117 let isExtentSigned = 0;
13118 let opExtentBits = 6;
13119 let opExtentAlign = 0;
13120 }
13121 def L4_ploadrubtnew_rr : HInst<
13122 (outs IntRegs:$Rd32),
13123 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13124 "if ($Pv4.new) $Rd32 = memub($Rs32+$Rt32<<#$Ii)",
13125 tc_b7dd427e, TypeLD>, Enc_2e1979, AddrModeRel {
13126 let Inst{31-21} = 0b00110010001;
13127 let isPredicated = 1;
13128 let hasNewValue = 1;
13129 let opNewValue = 0;
13130 let addrMode = BaseRegOffset;
13131 let accessSize = ByteAccess;
13132 let isPredicatedNew = 1;
13133 let mayLoad = 1;
13134 let CextOpcode = "L2_loadrub";
13135 let InputType = "reg";
13136 let BaseOpcode = "L4_loadrub_rr";
13137 }
13138 def L4_ploadruhf_abs : HInst<
13139 (outs IntRegs:$Rd32),
13140 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13141 "if (!$Pt4) $Rd32 = memuh(#$Ii)",
13142 tc_1d5a38a8, TypeLD>, Enc_2301d6, AddrModeRel {
13143 let Inst{7-5} = 0b100;
13144 let Inst{13-11} = 0b101;
13145 let Inst{31-21} = 0b10011111011;
13146 let isPredicated = 1;
13147 let isPredicatedFalse = 1;
13148 let hasNewValue = 1;
13149 let opNewValue = 0;
13150 let addrMode = Absolute;
13151 let accessSize = HalfWordAccess;
13152 let mayLoad = 1;
13153 let isExtended = 1;
13154 let CextOpcode = "L2_loadruh";
13155 let BaseOpcode = "L4_loadruh_abs";
13156 let DecoderNamespace = "MustExtend";
13157 let isExtendable = 1;
13158 let opExtendable = 2;
13159 let isExtentSigned = 0;
13160 let opExtentBits = 6;
13161 let opExtentAlign = 0;
13162 }
13163 def L4_ploadruhf_rr : HInst<
13164 (outs IntRegs:$Rd32),
13165 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13166 "if (!$Pv4) $Rd32 = memuh($Rs32+$Rt32<<#$Ii)",
13167 tc_9ef61e5c, TypeLD>, Enc_2e1979, AddrModeRel {
13168 let Inst{31-21} = 0b00110001011;
13169 let isPredicated = 1;
13170 let isPredicatedFalse = 1;
13171 let hasNewValue = 1;
13172 let opNewValue = 0;
13173 let addrMode = BaseRegOffset;
13174 let accessSize = HalfWordAccess;
13175 let mayLoad = 1;
13176 let CextOpcode = "L2_loadruh";
13177 let InputType = "reg";
13178 let BaseOpcode = "L4_loadruh_rr";
13179 }
13180 def L4_ploadruhfnew_abs : HInst<
13181 (outs IntRegs:$Rd32),
13182 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13183 "if (!$Pt4.new) $Rd32 = memuh(#$Ii)",
13184 tc_b77c481f, TypeLD>, Enc_2301d6, AddrModeRel {
13185 let Inst{7-5} = 0b100;
13186 let Inst{13-11} = 0b111;
13187 let Inst{31-21} = 0b10011111011;
13188 let isPredicated = 1;
13189 let isPredicatedFalse = 1;
13190 let hasNewValue = 1;
13191 let opNewValue = 0;
13192 let addrMode = Absolute;
13193 let accessSize = HalfWordAccess;
13194 let isPredicatedNew = 1;
13195 let mayLoad = 1;
13196 let isExtended = 1;
13197 let CextOpcode = "L2_loadruh";
13198 let BaseOpcode = "L4_loadruh_abs";
13199 let DecoderNamespace = "MustExtend";
13200 let isExtendable = 1;
13201 let opExtendable = 2;
13202 let isExtentSigned = 0;
13203 let opExtentBits = 6;
13204 let opExtentAlign = 0;
13205 }
13206 def L4_ploadruhfnew_rr : HInst<
13207 (outs IntRegs:$Rd32),
13208 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13209 "if (!$Pv4.new) $Rd32 = memuh($Rs32+$Rt32<<#$Ii)",
13210 tc_b7dd427e, TypeLD>, Enc_2e1979, AddrModeRel {
13211 let Inst{31-21} = 0b00110011011;
13212 let isPredicated = 1;
13213 let isPredicatedFalse = 1;
13214 let hasNewValue = 1;
13215 let opNewValue = 0;
13216 let addrMode = BaseRegOffset;
13217 let accessSize = HalfWordAccess;
13218 let isPredicatedNew = 1;
13219 let mayLoad = 1;
13220 let CextOpcode = "L2_loadruh";
13221 let InputType = "reg";
13222 let BaseOpcode = "L4_loadruh_rr";
13223 }
13224 def L4_ploadruht_abs : HInst<
13225 (outs IntRegs:$Rd32),
13226 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13227 "if ($Pt4) $Rd32 = memuh(#$Ii)",
13228 tc_1d5a38a8, TypeLD>, Enc_2301d6, AddrModeRel {
13229 let Inst{7-5} = 0b100;
13230 let Inst{13-11} = 0b100;
13231 let Inst{31-21} = 0b10011111011;
13232 let isPredicated = 1;
13233 let hasNewValue = 1;
13234 let opNewValue = 0;
13235 let addrMode = Absolute;
13236 let accessSize = HalfWordAccess;
13237 let mayLoad = 1;
13238 let isExtended = 1;
13239 let CextOpcode = "L2_loadruh";
13240 let BaseOpcode = "L4_loadruh_abs";
13241 let DecoderNamespace = "MustExtend";
13242 let isExtendable = 1;
13243 let opExtendable = 2;
13244 let isExtentSigned = 0;
13245 let opExtentBits = 6;
13246 let opExtentAlign = 0;
13247 }
13248 def L4_ploadruht_rr : HInst<
13249 (outs IntRegs:$Rd32),
13250 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13251 "if ($Pv4) $Rd32 = memuh($Rs32+$Rt32<<#$Ii)",
13252 tc_9ef61e5c, TypeLD>, Enc_2e1979, AddrModeRel {
13253 let Inst{31-21} = 0b00110000011;
13254 let isPredicated = 1;
13255 let hasNewValue = 1;
13256 let opNewValue = 0;
13257 let addrMode = BaseRegOffset;
13258 let accessSize = HalfWordAccess;
13259 let mayLoad = 1;
13260 let CextOpcode = "L2_loadruh";
13261 let InputType = "reg";
13262 let BaseOpcode = "L4_loadruh_rr";
13263 }
13264 def L4_ploadruhtnew_abs : HInst<
13265 (outs IntRegs:$Rd32),
13266 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13267 "if ($Pt4.new) $Rd32 = memuh(#$Ii)",
13268 tc_b77c481f, TypeLD>, Enc_2301d6, AddrModeRel {
13269 let Inst{7-5} = 0b100;
13270 let Inst{13-11} = 0b110;
13271 let Inst{31-21} = 0b10011111011;
13272 let isPredicated = 1;
13273 let hasNewValue = 1;
13274 let opNewValue = 0;
13275 let addrMode = Absolute;
13276 let accessSize = HalfWordAccess;
13277 let isPredicatedNew = 1;
13278 let mayLoad = 1;
13279 let isExtended = 1;
13280 let CextOpcode = "L2_loadruh";
13281 let BaseOpcode = "L4_loadruh_abs";
13282 let DecoderNamespace = "MustExtend";
13283 let isExtendable = 1;
13284 let opExtendable = 2;
13285 let isExtentSigned = 0;
13286 let opExtentBits = 6;
13287 let opExtentAlign = 0;
13288 }
13289 def L4_ploadruhtnew_rr : HInst<
13290 (outs IntRegs:$Rd32),
13291 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13292 "if ($Pv4.new) $Rd32 = memuh($Rs32+$Rt32<<#$Ii)",
13293 tc_b7dd427e, TypeLD>, Enc_2e1979, AddrModeRel {
13294 let Inst{31-21} = 0b00110010011;
13295 let isPredicated = 1;
13296 let hasNewValue = 1;
13297 let opNewValue = 0;
13298 let addrMode = BaseRegOffset;
13299 let accessSize = HalfWordAccess;
13300 let isPredicatedNew = 1;
13301 let mayLoad = 1;
13302 let CextOpcode = "L2_loadruh";
13303 let InputType = "reg";
13304 let BaseOpcode = "L4_loadruh_rr";
13305 }
13306 def L4_return : HInst<
13307 (outs DoubleRegs:$Rdd32),
13308 (ins IntRegs:$Rs32),
13309 "$Rdd32 = dealloc_return($Rs32):raw",
13310 tc_3d04548d, TypeLD>, Enc_3a3d62, PredNewRel {
13311 let Inst{13-5} = 0b000000000;
13312 let Inst{31-21} = 0b10010110000;
13313 let isTerminator = 1;
13314 let isIndirectBranch = 1;
13315 let accessSize = DoubleWordAccess;
13316 let mayLoad = 1;
13317 let cofMax1 = 1;
13318 let isRestrictNoSlot1Store = 1;
13319 let isReturn = 1;
13320 let Uses = [FRAMEKEY];
13321 let Defs = [PC, R29];
13322 let BaseOpcode = "L4_return";
13323 let isBarrier = 1;
13324 let isPredicable = 1;
13325 let isTaken = 1;
13326 }
13327 def L4_return_f : HInst<
13328 (outs DoubleRegs:$Rdd32),
13329 (ins PredRegs:$Pv4, IntRegs:$Rs32),
13330 "if (!$Pv4) $Rdd32 = dealloc_return($Rs32):raw",
13331 tc_513bef45, TypeLD>, Enc_b7fad3, PredNewRel {
13332 let Inst{7-5} = 0b000;
13333 let Inst{13-10} = 0b1100;
13334 let Inst{31-21} = 0b10010110000;
13335 let isPredicated = 1;
13336 let isPredicatedFalse = 1;
13337 let isTerminator = 1;
13338 let isIndirectBranch = 1;
13339 let accessSize = DoubleWordAccess;
13340 let mayLoad = 1;
13341 let cofMax1 = 1;
13342 let isRestrictNoSlot1Store = 1;
13343 let isReturn = 1;
13344 let Uses = [FRAMEKEY];
13345 let Defs = [PC, R29];
13346 let BaseOpcode = "L4_return";
13347 let isTaken = Inst{12};
13348 }
13349 def L4_return_fnew_pnt : HInst<
13350 (outs DoubleRegs:$Rdd32),
13351 (ins PredRegs:$Pv4, IntRegs:$Rs32),
13352 "if (!$Pv4.new) $Rdd32 = dealloc_return($Rs32):nt:raw",
13353 tc_395dc00f, TypeLD>, Enc_b7fad3, PredNewRel {
13354 let Inst{7-5} = 0b000;
13355 let Inst{13-10} = 0b1010;
13356 let Inst{31-21} = 0b10010110000;
13357 let isPredicated = 1;
13358 let isPredicatedFalse = 1;
13359 let isTerminator = 1;
13360 let isIndirectBranch = 1;
13361 let accessSize = DoubleWordAccess;
13362 let isPredicatedNew = 1;
13363 let mayLoad = 1;
13364 let cofMax1 = 1;
13365 let isRestrictNoSlot1Store = 1;
13366 let isReturn = 1;
13367 let Uses = [FRAMEKEY];
13368 let Defs = [PC, R29];
13369 let BaseOpcode = "L4_return";
13370 let isTaken = Inst{12};
13371 }
13372 def L4_return_fnew_pt : HInst<
13373 (outs DoubleRegs:$Rdd32),
13374 (ins PredRegs:$Pv4, IntRegs:$Rs32),
13375 "if (!$Pv4.new) $Rdd32 = dealloc_return($Rs32):t:raw",
13376 tc_395dc00f, TypeLD>, Enc_b7fad3, PredNewRel {
13377 let Inst{7-5} = 0b000;
13378 let Inst{13-10} = 0b1110;
13379 let Inst{31-21} = 0b10010110000;
13380 let isPredicated = 1;
13381 let isPredicatedFalse = 1;
13382 let isTerminator = 1;
13383 let isIndirectBranch = 1;
13384 let accessSize = DoubleWordAccess;
13385 let isPredicatedNew = 1;
13386 let mayLoad = 1;
13387 let cofMax1 = 1;
13388 let isRestrictNoSlot1Store = 1;
13389 let isReturn = 1;
13390 let Uses = [FRAMEKEY];
13391 let Defs = [PC, R29];
13392 let BaseOpcode = "L4_return";
13393 let isTaken = Inst{12};
13394 }
13395 def L4_return_map_to_raw_f : HInst<
13396 (outs),
13397 (ins PredRegs:$Pv4),
13398 "if (!$Pv4) dealloc_return",
13399 tc_513bef45, TypeMAPPING>, Requires<[HasV65]> {
13400 let isPseudo = 1;
13401 let isCodeGenOnly = 1;
13402 }
13403 def L4_return_map_to_raw_fnew_pnt : HInst<
13404 (outs),
13405 (ins PredRegs:$Pv4),
13406 "if (!$Pv4.new) dealloc_return:nt",
13407 tc_395dc00f, TypeMAPPING>, Requires<[HasV65]> {
13408 let isPseudo = 1;
13409 let isCodeGenOnly = 1;
13410 }
13411 def L4_return_map_to_raw_fnew_pt : HInst<
13412 (outs),
13413 (ins PredRegs:$Pv4),
13414 "if (!$Pv4.new) dealloc_return:t",
13415 tc_395dc00f, TypeMAPPING>, Requires<[HasV65]> {
13416 let isPseudo = 1;
13417 let isCodeGenOnly = 1;
13418 }
13419 def L4_return_map_to_raw_t : HInst<
13420 (outs),
13421 (ins PredRegs:$Pv4),
13422 "if ($Pv4) dealloc_return",
13423 tc_3bc2c5d3, TypeMAPPING>, Requires<[HasV65]> {
13424 let isPseudo = 1;
13425 let isCodeGenOnly = 1;
13426 }
13427 def L4_return_map_to_raw_tnew_pnt : HInst<
13428 (outs),
13429 (ins PredRegs:$Pv4),
13430 "if ($Pv4.new) dealloc_return:nt",
13431 tc_e7624c08, TypeMAPPING>, Requires<[HasV65]> {
13432 let isPseudo = 1;
13433 let isCodeGenOnly = 1;
13434 }
13435 def L4_return_map_to_raw_tnew_pt : HInst<
13436 (outs),
13437 (ins PredRegs:$Pv4),
13438 "if ($Pv4.new) dealloc_return:t",
13439 tc_e7624c08, TypeMAPPING>, Requires<[HasV65]> {
13440 let isPseudo = 1;
13441 let isCodeGenOnly = 1;
13442 }
13443 def L4_return_t : HInst<
13444 (outs DoubleRegs:$Rdd32),
13445 (ins PredRegs:$Pv4, IntRegs:$Rs32),
13446 "if ($Pv4) $Rdd32 = dealloc_return($Rs32):raw",
13447 tc_513bef45, TypeLD>, Enc_b7fad3, PredNewRel {
13448 let Inst{7-5} = 0b000;
13449 let Inst{13-10} = 0b0100;
13450 let Inst{31-21} = 0b10010110000;
13451 let isPredicated = 1;
13452 let isTerminator = 1;
13453 let isIndirectBranch = 1;
13454 let accessSize = DoubleWordAccess;
13455 let mayLoad = 1;
13456 let cofMax1 = 1;
13457 let isRestrictNoSlot1Store = 1;
13458 let isReturn = 1;
13459 let Uses = [FRAMEKEY];
13460 let Defs = [PC, R29];
13461 let BaseOpcode = "L4_return";
13462 let isTaken = Inst{12};
13463 }
13464 def L4_return_tnew_pnt : HInst<
13465 (outs DoubleRegs:$Rdd32),
13466 (ins PredRegs:$Pv4, IntRegs:$Rs32),
13467 "if ($Pv4.new) $Rdd32 = dealloc_return($Rs32):nt:raw",
13468 tc_395dc00f, TypeLD>, Enc_b7fad3, PredNewRel {
13469 let Inst{7-5} = 0b000;
13470 let Inst{13-10} = 0b0010;
13471 let Inst{31-21} = 0b10010110000;
13472 let isPredicated = 1;
13473 let isTerminator = 1;
13474 let isIndirectBranch = 1;
13475 let accessSize = DoubleWordAccess;
13476 let isPredicatedNew = 1;
13477 let mayLoad = 1;
13478 let cofMax1 = 1;
13479 let isRestrictNoSlot1Store = 1;
13480 let isReturn = 1;
13481 let Uses = [FRAMEKEY];
13482 let Defs = [PC, R29];
13483 let BaseOpcode = "L4_return";
13484 let isTaken = Inst{12};
13485 }
13486 def L4_return_tnew_pt : HInst<
13487 (outs DoubleRegs:$Rdd32),
13488 (ins PredRegs:$Pv4, IntRegs:$Rs32),
13489 "if ($Pv4.new) $Rdd32 = dealloc_return($Rs32):t:raw",
13490 tc_395dc00f, TypeLD>, Enc_b7fad3, PredNewRel {
13491 let Inst{7-5} = 0b000;
13492 let Inst{13-10} = 0b0110;
13493 let Inst{31-21} = 0b10010110000;
13494 let isPredicated = 1;
13495 let isTerminator = 1;
13496 let isIndirectBranch = 1;
13497 let accessSize = DoubleWordAccess;
13498 let isPredicatedNew = 1;
13499 let mayLoad = 1;
13500 let cofMax1 = 1;
13501 let isRestrictNoSlot1Store = 1;
13502 let isReturn = 1;
13503 let Uses = [FRAMEKEY];
13504 let Defs = [PC, R29];
13505 let BaseOpcode = "L4_return";
13506 let isTaken = Inst{12};
13507 }
13508 def L4_sub_memopb_io : HInst<
13509 (outs),
13510 (ins IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
13511 "memb($Rs32+#$Ii) -= $Rt32",
13512 tc_44126683, TypeV4LDST>, Enc_d44e31 {
13513 let Inst{6-5} = 0b01;
13514 let Inst{13-13} = 0b0;
13515 let Inst{31-21} = 0b00111110000;
13516 let addrMode = BaseImmOffset;
13517 let accessSize = ByteAccess;
13518 let mayLoad = 1;
13519 let isRestrictNoSlot1Store = 1;
13520 let mayStore = 1;
13521 let isExtendable = 1;
13522 let opExtendable = 1;
13523 let isExtentSigned = 0;
13524 let opExtentBits = 6;
13525 let opExtentAlign = 0;
13526 }
13527 def L4_sub_memopb_zomap : HInst<
13528 (outs),
13529 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13530 "memb($Rs32) -= $Rt32",
13531 tc_44126683, TypeMAPPING> {
13532 let isPseudo = 1;
13533 let isCodeGenOnly = 1;
13534 }
13535 def L4_sub_memoph_io : HInst<
13536 (outs),
13537 (ins IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
13538 "memh($Rs32+#$Ii) -= $Rt32",
13539 tc_44126683, TypeV4LDST>, Enc_163a3c {
13540 let Inst{6-5} = 0b01;
13541 let Inst{13-13} = 0b0;
13542 let Inst{31-21} = 0b00111110001;
13543 let addrMode = BaseImmOffset;
13544 let accessSize = HalfWordAccess;
13545 let mayLoad = 1;
13546 let isRestrictNoSlot1Store = 1;
13547 let mayStore = 1;
13548 let isExtendable = 1;
13549 let opExtendable = 1;
13550 let isExtentSigned = 0;
13551 let opExtentBits = 7;
13552 let opExtentAlign = 1;
13553 }
13554 def L4_sub_memoph_zomap : HInst<
13555 (outs),
13556 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13557 "memh($Rs32) -= $Rt32",
13558 tc_44126683, TypeMAPPING> {
13559 let isPseudo = 1;
13560 let isCodeGenOnly = 1;
13561 }
13562 def L4_sub_memopw_io : HInst<
13563 (outs),
13564 (ins IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Rt32),
13565 "memw($Rs32+#$Ii) -= $Rt32",
13566 tc_44126683, TypeV4LDST>, Enc_226535 {
13567 let Inst{6-5} = 0b01;
13568 let Inst{13-13} = 0b0;
13569 let Inst{31-21} = 0b00111110010;
13570 let addrMode = BaseImmOffset;
13571 let accessSize = WordAccess;
13572 let mayLoad = 1;
13573 let isRestrictNoSlot1Store = 1;
13574 let mayStore = 1;
13575 let isExtendable = 1;
13576 let opExtendable = 1;
13577 let isExtentSigned = 0;
13578 let opExtentBits = 8;
13579 let opExtentAlign = 2;
13580 }
13581 def L4_sub_memopw_zomap : HInst<
13582 (outs),
13583 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13584 "memw($Rs32) -= $Rt32",
13585 tc_44126683, TypeMAPPING> {
13586 let isPseudo = 1;
13587 let isCodeGenOnly = 1;
13588 }
13589 def L6_deallocframe_map_to_raw : HInst<
13590 (outs),
13591 (ins),
13592 "deallocframe",
13593 tc_d1090e34, TypeMAPPING>, Requires<[HasV65]> {
13594 let isPseudo = 1;
13595 let isCodeGenOnly = 1;
13596 }
13597 def L6_return_map_to_raw : HInst<
13598 (outs),
13599 (ins),
13600 "dealloc_return",
13601 tc_3d04548d, TypeMAPPING>, Requires<[HasV65]> {
13602 let isPseudo = 1;
13603 let isCodeGenOnly = 1;
13604 }
13605 def M2_acci : HInst<
13606 (outs IntRegs:$Rx32),
13607 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13608 "$Rx32 += add($Rs32,$Rt32)",
13609 tc_c74f796f, TypeM>, Enc_2ae154, ImmRegRel {
13610 let Inst{7-5} = 0b001;
13611 let Inst{13-13} = 0b0;
13612 let Inst{31-21} = 0b11101111000;
13613 let hasNewValue = 1;
13614 let opNewValue = 0;
13615 let prefersSlot3 = 1;
13616 let CextOpcode = "M2_acci";
13617 let InputType = "reg";
13618 let Constraints = "$Rx32 = $Rx32in";
13619 }
13620 def M2_accii : HInst<
13621 (outs IntRegs:$Rx32),
13622 (ins IntRegs:$Rx32in, IntRegs:$Rs32, s32_0Imm:$Ii),
13623 "$Rx32 += add($Rs32,#$Ii)",
13624 tc_c74f796f, TypeM>, Enc_c90aca, ImmRegRel {
13625 let Inst{13-13} = 0b0;
13626 let Inst{31-21} = 0b11100010000;
13627 let hasNewValue = 1;
13628 let opNewValue = 0;
13629 let prefersSlot3 = 1;
13630 let CextOpcode = "M2_acci";
13631 let InputType = "imm";
13632 let isExtendable = 1;
13633 let opExtendable = 3;
13634 let isExtentSigned = 1;
13635 let opExtentBits = 8;
13636 let opExtentAlign = 0;
13637 let Constraints = "$Rx32 = $Rx32in";
13638 }
13639 def M2_cmaci_s0 : HInst<
13640 (outs DoubleRegs:$Rxx32),
13641 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13642 "$Rxx32 += cmpyi($Rs32,$Rt32)",
13643 tc_e913dc32, TypeM>, Enc_61f0b0 {
13644 let Inst{7-5} = 0b001;
13645 let Inst{13-13} = 0b0;
13646 let Inst{31-21} = 0b11100111000;
13647 let prefersSlot3 = 1;
13648 let Constraints = "$Rxx32 = $Rxx32in";
13649 }
13650 def M2_cmacr_s0 : HInst<
13651 (outs DoubleRegs:$Rxx32),
13652 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13653 "$Rxx32 += cmpyr($Rs32,$Rt32)",
13654 tc_e913dc32, TypeM>, Enc_61f0b0 {
13655 let Inst{7-5} = 0b010;
13656 let Inst{13-13} = 0b0;
13657 let Inst{31-21} = 0b11100111000;
13658 let prefersSlot3 = 1;
13659 let Constraints = "$Rxx32 = $Rxx32in";
13660 }
13661 def M2_cmacs_s0 : HInst<
13662 (outs DoubleRegs:$Rxx32),
13663 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13664 "$Rxx32 += cmpy($Rs32,$Rt32):sat",
13665 tc_e913dc32, TypeM>, Enc_61f0b0 {
13666 let Inst{7-5} = 0b110;
13667 let Inst{13-13} = 0b0;
13668 let Inst{31-21} = 0b11100111000;
13669 let prefersSlot3 = 1;
13670 let Defs = [USR_OVF];
13671 let Constraints = "$Rxx32 = $Rxx32in";
13672 }
13673 def M2_cmacs_s1 : HInst<
13674 (outs DoubleRegs:$Rxx32),
13675 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13676 "$Rxx32 += cmpy($Rs32,$Rt32):<<1:sat",
13677 tc_e913dc32, TypeM>, Enc_61f0b0 {
13678 let Inst{7-5} = 0b110;
13679 let Inst{13-13} = 0b0;
13680 let Inst{31-21} = 0b11100111100;
13681 let prefersSlot3 = 1;
13682 let Defs = [USR_OVF];
13683 let Constraints = "$Rxx32 = $Rxx32in";
13684 }
13685 def M2_cmacsc_s0 : HInst<
13686 (outs DoubleRegs:$Rxx32),
13687 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13688 "$Rxx32 += cmpy($Rs32,$Rt32*):sat",
13689 tc_e913dc32, TypeM>, Enc_61f0b0 {
13690 let Inst{7-5} = 0b110;
13691 let Inst{13-13} = 0b0;
13692 let Inst{31-21} = 0b11100111010;
13693 let prefersSlot3 = 1;
13694 let Defs = [USR_OVF];
13695 let Constraints = "$Rxx32 = $Rxx32in";
13696 }
13697 def M2_cmacsc_s1 : HInst<
13698 (outs DoubleRegs:$Rxx32),
13699 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13700 "$Rxx32 += cmpy($Rs32,$Rt32*):<<1:sat",
13701 tc_e913dc32, TypeM>, Enc_61f0b0 {
13702 let Inst{7-5} = 0b110;
13703 let Inst{13-13} = 0b0;
13704 let Inst{31-21} = 0b11100111110;
13705 let prefersSlot3 = 1;
13706 let Defs = [USR_OVF];
13707 let Constraints = "$Rxx32 = $Rxx32in";
13708 }
13709 def M2_cmpyi_s0 : HInst<
13710 (outs DoubleRegs:$Rdd32),
13711 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13712 "$Rdd32 = cmpyi($Rs32,$Rt32)",
13713 tc_8fd5f294, TypeM>, Enc_be32a5 {
13714 let Inst{7-5} = 0b001;
13715 let Inst{13-13} = 0b0;
13716 let Inst{31-21} = 0b11100101000;
13717 let prefersSlot3 = 1;
13718 }
13719 def M2_cmpyr_s0 : HInst<
13720 (outs DoubleRegs:$Rdd32),
13721 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13722 "$Rdd32 = cmpyr($Rs32,$Rt32)",
13723 tc_8fd5f294, TypeM>, Enc_be32a5 {
13724 let Inst{7-5} = 0b010;
13725 let Inst{13-13} = 0b0;
13726 let Inst{31-21} = 0b11100101000;
13727 let prefersSlot3 = 1;
13728 }
13729 def M2_cmpyrs_s0 : HInst<
13730 (outs IntRegs:$Rd32),
13731 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13732 "$Rd32 = cmpy($Rs32,$Rt32):rnd:sat",
13733 tc_8fd5f294, TypeM>, Enc_5ab2be {
13734 let Inst{7-5} = 0b110;
13735 let Inst{13-13} = 0b0;
13736 let Inst{31-21} = 0b11101101001;
13737 let hasNewValue = 1;
13738 let opNewValue = 0;
13739 let prefersSlot3 = 1;
13740 let Defs = [USR_OVF];
13741 }
13742 def M2_cmpyrs_s1 : HInst<
13743 (outs IntRegs:$Rd32),
13744 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13745 "$Rd32 = cmpy($Rs32,$Rt32):<<1:rnd:sat",
13746 tc_8fd5f294, TypeM>, Enc_5ab2be {
13747 let Inst{7-5} = 0b110;
13748 let Inst{13-13} = 0b0;
13749 let Inst{31-21} = 0b11101101101;
13750 let hasNewValue = 1;
13751 let opNewValue = 0;
13752 let prefersSlot3 = 1;
13753 let Defs = [USR_OVF];
13754 }
13755 def M2_cmpyrsc_s0 : HInst<
13756 (outs IntRegs:$Rd32),
13757 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13758 "$Rd32 = cmpy($Rs32,$Rt32*):rnd:sat",
13759 tc_8fd5f294, TypeM>, Enc_5ab2be {
13760 let Inst{7-5} = 0b110;
13761 let Inst{13-13} = 0b0;
13762 let Inst{31-21} = 0b11101101011;
13763 let hasNewValue = 1;
13764 let opNewValue = 0;
13765 let prefersSlot3 = 1;
13766 let Defs = [USR_OVF];
13767 }
13768 def M2_cmpyrsc_s1 : HInst<
13769 (outs IntRegs:$Rd32),
13770 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13771 "$Rd32 = cmpy($Rs32,$Rt32*):<<1:rnd:sat",
13772 tc_8fd5f294, TypeM>, Enc_5ab2be {
13773 let Inst{7-5} = 0b110;
13774 let Inst{13-13} = 0b0;
13775 let Inst{31-21} = 0b11101101111;
13776 let hasNewValue = 1;
13777 let opNewValue = 0;
13778 let prefersSlot3 = 1;
13779 let Defs = [USR_OVF];
13780 }
13781 def M2_cmpys_s0 : HInst<
13782 (outs DoubleRegs:$Rdd32),
13783 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13784 "$Rdd32 = cmpy($Rs32,$Rt32):sat",
13785 tc_8fd5f294, TypeM>, Enc_be32a5 {
13786 let Inst{7-5} = 0b110;
13787 let Inst{13-13} = 0b0;
13788 let Inst{31-21} = 0b11100101000;
13789 let prefersSlot3 = 1;
13790 let Defs = [USR_OVF];
13791 }
13792 def M2_cmpys_s1 : HInst<
13793 (outs DoubleRegs:$Rdd32),
13794 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13795 "$Rdd32 = cmpy($Rs32,$Rt32):<<1:sat",
13796 tc_8fd5f294, TypeM>, Enc_be32a5 {
13797 let Inst{7-5} = 0b110;
13798 let Inst{13-13} = 0b0;
13799 let Inst{31-21} = 0b11100101100;
13800 let prefersSlot3 = 1;
13801 let Defs = [USR_OVF];
13802 }
13803 def M2_cmpysc_s0 : HInst<
13804 (outs DoubleRegs:$Rdd32),
13805 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13806 "$Rdd32 = cmpy($Rs32,$Rt32*):sat",
13807 tc_8fd5f294, TypeM>, Enc_be32a5 {
13808 let Inst{7-5} = 0b110;
13809 let Inst{13-13} = 0b0;
13810 let Inst{31-21} = 0b11100101010;
13811 let prefersSlot3 = 1;
13812 let Defs = [USR_OVF];
13813 }
13814 def M2_cmpysc_s1 : HInst<
13815 (outs DoubleRegs:$Rdd32),
13816 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13817 "$Rdd32 = cmpy($Rs32,$Rt32*):<<1:sat",
13818 tc_8fd5f294, TypeM>, Enc_be32a5 {
13819 let Inst{7-5} = 0b110;
13820 let Inst{13-13} = 0b0;
13821 let Inst{31-21} = 0b11100101110;
13822 let prefersSlot3 = 1;
13823 let Defs = [USR_OVF];
13824 }
13825 def M2_cnacs_s0 : HInst<
13826 (outs DoubleRegs:$Rxx32),
13827 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13828 "$Rxx32 -= cmpy($Rs32,$Rt32):sat",
13829 tc_e913dc32, TypeM>, Enc_61f0b0 {
13830 let Inst{7-5} = 0b111;
13831 let Inst{13-13} = 0b0;
13832 let Inst{31-21} = 0b11100111000;
13833 let prefersSlot3 = 1;
13834 let Defs = [USR_OVF];
13835 let Constraints = "$Rxx32 = $Rxx32in";
13836 }
13837 def M2_cnacs_s1 : HInst<
13838 (outs DoubleRegs:$Rxx32),
13839 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13840 "$Rxx32 -= cmpy($Rs32,$Rt32):<<1:sat",
13841 tc_e913dc32, TypeM>, Enc_61f0b0 {
13842 let Inst{7-5} = 0b111;
13843 let Inst{13-13} = 0b0;
13844 let Inst{31-21} = 0b11100111100;
13845 let prefersSlot3 = 1;
13846 let Defs = [USR_OVF];
13847 let Constraints = "$Rxx32 = $Rxx32in";
13848 }
13849 def M2_cnacsc_s0 : HInst<
13850 (outs DoubleRegs:$Rxx32),
13851 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13852 "$Rxx32 -= cmpy($Rs32,$Rt32*):sat",
13853 tc_e913dc32, TypeM>, Enc_61f0b0 {
13854 let Inst{7-5} = 0b111;
13855 let Inst{13-13} = 0b0;
13856 let Inst{31-21} = 0b11100111010;
13857 let prefersSlot3 = 1;
13858 let Defs = [USR_OVF];
13859 let Constraints = "$Rxx32 = $Rxx32in";
13860 }
13861 def M2_cnacsc_s1 : HInst<
13862 (outs DoubleRegs:$Rxx32),
13863 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13864 "$Rxx32 -= cmpy($Rs32,$Rt32*):<<1:sat",
13865 tc_e913dc32, TypeM>, Enc_61f0b0 {
13866 let Inst{7-5} = 0b111;
13867 let Inst{13-13} = 0b0;
13868 let Inst{31-21} = 0b11100111110;
13869 let prefersSlot3 = 1;
13870 let Defs = [USR_OVF];
13871 let Constraints = "$Rxx32 = $Rxx32in";
13872 }
13873 def M2_dpmpyss_acc_s0 : HInst<
13874 (outs DoubleRegs:$Rxx32),
13875 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13876 "$Rxx32 += mpy($Rs32,$Rt32)",
13877 tc_e913dc32, TypeM>, Enc_61f0b0 {
13878 let Inst{7-5} = 0b000;
13879 let Inst{13-13} = 0b0;
13880 let Inst{31-21} = 0b11100111000;
13881 let prefersSlot3 = 1;
13882 let Constraints = "$Rxx32 = $Rxx32in";
13883 }
13884 def M2_dpmpyss_nac_s0 : HInst<
13885 (outs DoubleRegs:$Rxx32),
13886 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13887 "$Rxx32 -= mpy($Rs32,$Rt32)",
13888 tc_e913dc32, TypeM>, Enc_61f0b0 {
13889 let Inst{7-5} = 0b000;
13890 let Inst{13-13} = 0b0;
13891 let Inst{31-21} = 0b11100111001;
13892 let prefersSlot3 = 1;
13893 let Constraints = "$Rxx32 = $Rxx32in";
13894 }
13895 def M2_dpmpyss_rnd_s0 : HInst<
13896 (outs IntRegs:$Rd32),
13897 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13898 "$Rd32 = mpy($Rs32,$Rt32):rnd",
13899 tc_8fd5f294, TypeM>, Enc_5ab2be {
13900 let Inst{7-5} = 0b001;
13901 let Inst{13-13} = 0b0;
13902 let Inst{31-21} = 0b11101101001;
13903 let hasNewValue = 1;
13904 let opNewValue = 0;
13905 let prefersSlot3 = 1;
13906 }
13907 def M2_dpmpyss_s0 : HInst<
13908 (outs DoubleRegs:$Rdd32),
13909 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13910 "$Rdd32 = mpy($Rs32,$Rt32)",
13911 tc_8fd5f294, TypeM>, Enc_be32a5 {
13912 let Inst{7-5} = 0b000;
13913 let Inst{13-13} = 0b0;
13914 let Inst{31-21} = 0b11100101000;
13915 let prefersSlot3 = 1;
13916 }
13917 def M2_dpmpyuu_acc_s0 : HInst<
13918 (outs DoubleRegs:$Rxx32),
13919 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13920 "$Rxx32 += mpyu($Rs32,$Rt32)",
13921 tc_e913dc32, TypeM>, Enc_61f0b0 {
13922 let Inst{7-5} = 0b000;
13923 let Inst{13-13} = 0b0;
13924 let Inst{31-21} = 0b11100111010;
13925 let prefersSlot3 = 1;
13926 let Constraints = "$Rxx32 = $Rxx32in";
13927 }
13928 def M2_dpmpyuu_nac_s0 : HInst<
13929 (outs DoubleRegs:$Rxx32),
13930 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13931 "$Rxx32 -= mpyu($Rs32,$Rt32)",
13932 tc_e913dc32, TypeM>, Enc_61f0b0 {
13933 let Inst{7-5} = 0b000;
13934 let Inst{13-13} = 0b0;
13935 let Inst{31-21} = 0b11100111011;
13936 let prefersSlot3 = 1;
13937 let Constraints = "$Rxx32 = $Rxx32in";
13938 }
13939 def M2_dpmpyuu_s0 : HInst<
13940 (outs DoubleRegs:$Rdd32),
13941 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13942 "$Rdd32 = mpyu($Rs32,$Rt32)",
13943 tc_8fd5f294, TypeM>, Enc_be32a5 {
13944 let Inst{7-5} = 0b000;
13945 let Inst{13-13} = 0b0;
13946 let Inst{31-21} = 0b11100101010;
13947 let prefersSlot3 = 1;
13948 }
13949 def M2_hmmpyh_rs1 : HInst<
13950 (outs IntRegs:$Rd32),
13951 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13952 "$Rd32 = mpy($Rs32,$Rt32.h):<<1:rnd:sat",
13953 tc_8fd5f294, TypeM>, Enc_5ab2be {
13954 let Inst{7-5} = 0b100;
13955 let Inst{13-13} = 0b0;
13956 let Inst{31-21} = 0b11101101101;
13957 let hasNewValue = 1;
13958 let opNewValue = 0;
13959 let prefersSlot3 = 1;
13960 let Defs = [USR_OVF];
13961 }
13962 def M2_hmmpyh_s1 : HInst<
13963 (outs IntRegs:$Rd32),
13964 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13965 "$Rd32 = mpy($Rs32,$Rt32.h):<<1:sat",
13966 tc_8fd5f294, TypeM>, Enc_5ab2be {
13967 let Inst{7-5} = 0b000;
13968 let Inst{13-13} = 0b0;
13969 let Inst{31-21} = 0b11101101101;
13970 let hasNewValue = 1;
13971 let opNewValue = 0;
13972 let prefersSlot3 = 1;
13973 let Defs = [USR_OVF];
13974 }
13975 def M2_hmmpyl_rs1 : HInst<
13976 (outs IntRegs:$Rd32),
13977 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13978 "$Rd32 = mpy($Rs32,$Rt32.l):<<1:rnd:sat",
13979 tc_8fd5f294, TypeM>, Enc_5ab2be {
13980 let Inst{7-5} = 0b100;
13981 let Inst{13-13} = 0b0;
13982 let Inst{31-21} = 0b11101101111;
13983 let hasNewValue = 1;
13984 let opNewValue = 0;
13985 let prefersSlot3 = 1;
13986 let Defs = [USR_OVF];
13987 }
13988 def M2_hmmpyl_s1 : HInst<
13989 (outs IntRegs:$Rd32),
13990 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13991 "$Rd32 = mpy($Rs32,$Rt32.l):<<1:sat",
13992 tc_8fd5f294, TypeM>, Enc_5ab2be {
13993 let Inst{7-5} = 0b001;
13994 let Inst{13-13} = 0b0;
13995 let Inst{31-21} = 0b11101101101;
13996 let hasNewValue = 1;
13997 let opNewValue = 0;
13998 let prefersSlot3 = 1;
13999 let Defs = [USR_OVF];
14000 }
14001 def M2_maci : HInst<
14002 (outs IntRegs:$Rx32),
14003 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14004 "$Rx32 += mpyi($Rs32,$Rt32)",
14005 tc_e913dc32, TypeM>, Enc_2ae154, ImmRegRel {
14006 let Inst{7-5} = 0b000;
14007 let Inst{13-13} = 0b0;
14008 let Inst{31-21} = 0b11101111000;
14009 let hasNewValue = 1;
14010 let opNewValue = 0;
14011 let prefersSlot3 = 1;
14012 let CextOpcode = "M2_maci";
14013 let InputType = "reg";
14014 let Constraints = "$Rx32 = $Rx32in";
14015 }
14016 def M2_macsin : HInst<
14017 (outs IntRegs:$Rx32),
14018 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u32_0Imm:$Ii),
14019 "$Rx32 -= mpyi($Rs32,#$Ii)",
14020 tc_16d0d8d5, TypeM>, Enc_c90aca {
14021 let Inst{13-13} = 0b0;
14022 let Inst{31-21} = 0b11100001100;
14023 let hasNewValue = 1;
14024 let opNewValue = 0;
14025 let prefersSlot3 = 1;
14026 let InputType = "imm";
14027 let isExtendable = 1;
14028 let opExtendable = 3;
14029 let isExtentSigned = 0;
14030 let opExtentBits = 8;
14031 let opExtentAlign = 0;
14032 let Constraints = "$Rx32 = $Rx32in";
14033 }
14034 def M2_macsip : HInst<
14035 (outs IntRegs:$Rx32),
14036 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u32_0Imm:$Ii),
14037 "$Rx32 += mpyi($Rs32,#$Ii)",
14038 tc_16d0d8d5, TypeM>, Enc_c90aca, ImmRegRel {
14039 let Inst{13-13} = 0b0;
14040 let Inst{31-21} = 0b11100001000;
14041 let hasNewValue = 1;
14042 let opNewValue = 0;
14043 let prefersSlot3 = 1;
14044 let CextOpcode = "M2_maci";
14045 let InputType = "imm";
14046 let isExtendable = 1;
14047 let opExtendable = 3;
14048 let isExtentSigned = 0;
14049 let opExtentBits = 8;
14050 let opExtentAlign = 0;
14051 let Constraints = "$Rx32 = $Rx32in";
14052 }
14053 def M2_mmachs_rs0 : HInst<
14054 (outs DoubleRegs:$Rxx32),
14055 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14056 "$Rxx32 += vmpywoh($Rss32,$Rtt32):rnd:sat",
14057 tc_e913dc32, TypeM>, Enc_88c16c {
14058 let Inst{7-5} = 0b111;
14059 let Inst{13-13} = 0b0;
14060 let Inst{31-21} = 0b11101010001;
14061 let prefersSlot3 = 1;
14062 let Defs = [USR_OVF];
14063 let Constraints = "$Rxx32 = $Rxx32in";
14064 }
14065 def M2_mmachs_rs1 : HInst<
14066 (outs DoubleRegs:$Rxx32),
14067 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14068 "$Rxx32 += vmpywoh($Rss32,$Rtt32):<<1:rnd:sat",
14069 tc_e913dc32, TypeM>, Enc_88c16c {
14070 let Inst{7-5} = 0b111;
14071 let Inst{13-13} = 0b0;
14072 let Inst{31-21} = 0b11101010101;
14073 let prefersSlot3 = 1;
14074 let Defs = [USR_OVF];
14075 let Constraints = "$Rxx32 = $Rxx32in";
14076 }
14077 def M2_mmachs_s0 : HInst<
14078 (outs DoubleRegs:$Rxx32),
14079 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14080 "$Rxx32 += vmpywoh($Rss32,$Rtt32):sat",
14081 tc_e913dc32, TypeM>, Enc_88c16c {
14082 let Inst{7-5} = 0b111;
14083 let Inst{13-13} = 0b0;
14084 let Inst{31-21} = 0b11101010000;
14085 let prefersSlot3 = 1;
14086 let Defs = [USR_OVF];
14087 let Constraints = "$Rxx32 = $Rxx32in";
14088 }
14089 def M2_mmachs_s1 : HInst<
14090 (outs DoubleRegs:$Rxx32),
14091 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14092 "$Rxx32 += vmpywoh($Rss32,$Rtt32):<<1:sat",
14093 tc_e913dc32, TypeM>, Enc_88c16c {
14094 let Inst{7-5} = 0b111;
14095 let Inst{13-13} = 0b0;
14096 let Inst{31-21} = 0b11101010100;
14097 let prefersSlot3 = 1;
14098 let Defs = [USR_OVF];
14099 let Constraints = "$Rxx32 = $Rxx32in";
14100 }
14101 def M2_mmacls_rs0 : HInst<
14102 (outs DoubleRegs:$Rxx32),
14103 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14104 "$Rxx32 += vmpyweh($Rss32,$Rtt32):rnd:sat",
14105 tc_e913dc32, TypeM>, Enc_88c16c {
14106 let Inst{7-5} = 0b101;
14107 let Inst{13-13} = 0b0;
14108 let Inst{31-21} = 0b11101010001;
14109 let prefersSlot3 = 1;
14110 let Defs = [USR_OVF];
14111 let Constraints = "$Rxx32 = $Rxx32in";
14112 }
14113 def M2_mmacls_rs1 : HInst<
14114 (outs DoubleRegs:$Rxx32),
14115 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14116 "$Rxx32 += vmpyweh($Rss32,$Rtt32):<<1:rnd:sat",
14117 tc_e913dc32, TypeM>, Enc_88c16c {
14118 let Inst{7-5} = 0b101;
14119 let Inst{13-13} = 0b0;
14120 let Inst{31-21} = 0b11101010101;
14121 let prefersSlot3 = 1;
14122 let Defs = [USR_OVF];
14123 let Constraints = "$Rxx32 = $Rxx32in";
14124 }
14125 def M2_mmacls_s0 : HInst<
14126 (outs DoubleRegs:$Rxx32),
14127 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14128 "$Rxx32 += vmpyweh($Rss32,$Rtt32):sat",
14129 tc_e913dc32, TypeM>, Enc_88c16c {
14130 let Inst{7-5} = 0b101;
14131 let Inst{13-13} = 0b0;
14132 let Inst{31-21} = 0b11101010000;
14133 let prefersSlot3 = 1;
14134 let Defs = [USR_OVF];
14135 let Constraints = "$Rxx32 = $Rxx32in";
14136 }
14137 def M2_mmacls_s1 : HInst<
14138 (outs DoubleRegs:$Rxx32),
14139 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14140 "$Rxx32 += vmpyweh($Rss32,$Rtt32):<<1:sat",
14141 tc_e913dc32, TypeM>, Enc_88c16c {
14142 let Inst{7-5} = 0b101;
14143 let Inst{13-13} = 0b0;
14144 let Inst{31-21} = 0b11101010100;
14145 let prefersSlot3 = 1;
14146 let Defs = [USR_OVF];
14147 let Constraints = "$Rxx32 = $Rxx32in";
14148 }
14149 def M2_mmacuhs_rs0 : HInst<
14150 (outs DoubleRegs:$Rxx32),
14151 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14152 "$Rxx32 += vmpywouh($Rss32,$Rtt32):rnd:sat",
14153 tc_e913dc32, TypeM>, Enc_88c16c {
14154 let Inst{7-5} = 0b111;
14155 let Inst{13-13} = 0b0;
14156 let Inst{31-21} = 0b11101010011;
14157 let prefersSlot3 = 1;
14158 let Defs = [USR_OVF];
14159 let Constraints = "$Rxx32 = $Rxx32in";
14160 }
14161 def M2_mmacuhs_rs1 : HInst<
14162 (outs DoubleRegs:$Rxx32),
14163 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14164 "$Rxx32 += vmpywouh($Rss32,$Rtt32):<<1:rnd:sat",
14165 tc_e913dc32, TypeM>, Enc_88c16c {
14166 let Inst{7-5} = 0b111;
14167 let Inst{13-13} = 0b0;
14168 let Inst{31-21} = 0b11101010111;
14169 let prefersSlot3 = 1;
14170 let Defs = [USR_OVF];
14171 let Constraints = "$Rxx32 = $Rxx32in";
14172 }
14173 def M2_mmacuhs_s0 : HInst<
14174 (outs DoubleRegs:$Rxx32),
14175 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14176 "$Rxx32 += vmpywouh($Rss32,$Rtt32):sat",
14177 tc_e913dc32, TypeM>, Enc_88c16c {
14178 let Inst{7-5} = 0b111;
14179 let Inst{13-13} = 0b0;
14180 let Inst{31-21} = 0b11101010010;
14181 let prefersSlot3 = 1;
14182 let Defs = [USR_OVF];
14183 let Constraints = "$Rxx32 = $Rxx32in";
14184 }
14185 def M2_mmacuhs_s1 : HInst<
14186 (outs DoubleRegs:$Rxx32),
14187 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14188 "$Rxx32 += vmpywouh($Rss32,$Rtt32):<<1:sat",
14189 tc_e913dc32, TypeM>, Enc_88c16c {
14190 let Inst{7-5} = 0b111;
14191 let Inst{13-13} = 0b0;
14192 let Inst{31-21} = 0b11101010110;
14193 let prefersSlot3 = 1;
14194 let Defs = [USR_OVF];
14195 let Constraints = "$Rxx32 = $Rxx32in";
14196 }
14197 def M2_mmaculs_rs0 : HInst<
14198 (outs DoubleRegs:$Rxx32),
14199 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14200 "$Rxx32 += vmpyweuh($Rss32,$Rtt32):rnd:sat",
14201 tc_e913dc32, TypeM>, Enc_88c16c {
14202 let Inst{7-5} = 0b101;
14203 let Inst{13-13} = 0b0;
14204 let Inst{31-21} = 0b11101010011;
14205 let prefersSlot3 = 1;
14206 let Defs = [USR_OVF];
14207 let Constraints = "$Rxx32 = $Rxx32in";
14208 }
14209 def M2_mmaculs_rs1 : HInst<
14210 (outs DoubleRegs:$Rxx32),
14211 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14212 "$Rxx32 += vmpyweuh($Rss32,$Rtt32):<<1:rnd:sat",
14213 tc_e913dc32, TypeM>, Enc_88c16c {
14214 let Inst{7-5} = 0b101;
14215 let Inst{13-13} = 0b0;
14216 let Inst{31-21} = 0b11101010111;
14217 let prefersSlot3 = 1;
14218 let Defs = [USR_OVF];
14219 let Constraints = "$Rxx32 = $Rxx32in";
14220 }
14221 def M2_mmaculs_s0 : HInst<
14222 (outs DoubleRegs:$Rxx32),
14223 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14224 "$Rxx32 += vmpyweuh($Rss32,$Rtt32):sat",
14225 tc_e913dc32, TypeM>, Enc_88c16c {
14226 let Inst{7-5} = 0b101;
14227 let Inst{13-13} = 0b0;
14228 let Inst{31-21} = 0b11101010010;
14229 let prefersSlot3 = 1;
14230 let Defs = [USR_OVF];
14231 let Constraints = "$Rxx32 = $Rxx32in";
14232 }
14233 def M2_mmaculs_s1 : HInst<
14234 (outs DoubleRegs:$Rxx32),
14235 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14236 "$Rxx32 += vmpyweuh($Rss32,$Rtt32):<<1:sat",
14237 tc_e913dc32, TypeM>, Enc_88c16c {
14238 let Inst{7-5} = 0b101;
14239 let Inst{13-13} = 0b0;
14240 let Inst{31-21} = 0b11101010110;
14241 let prefersSlot3 = 1;
14242 let Defs = [USR_OVF];
14243 let Constraints = "$Rxx32 = $Rxx32in";
14244 }
14245 def M2_mmpyh_rs0 : HInst<
14246 (outs DoubleRegs:$Rdd32),
14247 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14248 "$Rdd32 = vmpywoh($Rss32,$Rtt32):rnd:sat",
14249 tc_8fd5f294, TypeM>, Enc_a56825 {
14250 let Inst{7-5} = 0b111;
14251 let Inst{13-13} = 0b0;
14252 let Inst{31-21} = 0b11101000001;
14253 let prefersSlot3 = 1;
14254 let Defs = [USR_OVF];
14255 }
14256 def M2_mmpyh_rs1 : HInst<
14257 (outs DoubleRegs:$Rdd32),
14258 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14259 "$Rdd32 = vmpywoh($Rss32,$Rtt32):<<1:rnd:sat",
14260 tc_8fd5f294, TypeM>, Enc_a56825 {
14261 let Inst{7-5} = 0b111;
14262 let Inst{13-13} = 0b0;
14263 let Inst{31-21} = 0b11101000101;
14264 let prefersSlot3 = 1;
14265 let Defs = [USR_OVF];
14266 }
14267 def M2_mmpyh_s0 : HInst<
14268 (outs DoubleRegs:$Rdd32),
14269 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14270 "$Rdd32 = vmpywoh($Rss32,$Rtt32):sat",
14271 tc_8fd5f294, TypeM>, Enc_a56825 {
14272 let Inst{7-5} = 0b111;
14273 let Inst{13-13} = 0b0;
14274 let Inst{31-21} = 0b11101000000;
14275 let prefersSlot3 = 1;
14276 let Defs = [USR_OVF];
14277 }
14278 def M2_mmpyh_s1 : HInst<
14279 (outs DoubleRegs:$Rdd32),
14280 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14281 "$Rdd32 = vmpywoh($Rss32,$Rtt32):<<1:sat",
14282 tc_8fd5f294, TypeM>, Enc_a56825 {
14283 let Inst{7-5} = 0b111;
14284 let Inst{13-13} = 0b0;
14285 let Inst{31-21} = 0b11101000100;
14286 let prefersSlot3 = 1;
14287 let Defs = [USR_OVF];
14288 }
14289 def M2_mmpyl_rs0 : HInst<
14290 (outs DoubleRegs:$Rdd32),
14291 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14292 "$Rdd32 = vmpyweh($Rss32,$Rtt32):rnd:sat",
14293 tc_8fd5f294, TypeM>, Enc_a56825 {
14294 let Inst{7-5} = 0b101;
14295 let Inst{13-13} = 0b0;
14296 let Inst{31-21} = 0b11101000001;
14297 let prefersSlot3 = 1;
14298 let Defs = [USR_OVF];
14299 }
14300 def M2_mmpyl_rs1 : HInst<
14301 (outs DoubleRegs:$Rdd32),
14302 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14303 "$Rdd32 = vmpyweh($Rss32,$Rtt32):<<1:rnd:sat",
14304 tc_8fd5f294, TypeM>, Enc_a56825 {
14305 let Inst{7-5} = 0b101;
14306 let Inst{13-13} = 0b0;
14307 let Inst{31-21} = 0b11101000101;
14308 let prefersSlot3 = 1;
14309 let Defs = [USR_OVF];
14310 }
14311 def M2_mmpyl_s0 : HInst<
14312 (outs DoubleRegs:$Rdd32),
14313 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14314 "$Rdd32 = vmpyweh($Rss32,$Rtt32):sat",
14315 tc_8fd5f294, TypeM>, Enc_a56825 {
14316 let Inst{7-5} = 0b101;
14317 let Inst{13-13} = 0b0;
14318 let Inst{31-21} = 0b11101000000;
14319 let prefersSlot3 = 1;
14320 let Defs = [USR_OVF];
14321 }
14322 def M2_mmpyl_s1 : HInst<
14323 (outs DoubleRegs:$Rdd32),
14324 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14325 "$Rdd32 = vmpyweh($Rss32,$Rtt32):<<1:sat",
14326 tc_8fd5f294, TypeM>, Enc_a56825 {
14327 let Inst{7-5} = 0b101;
14328 let Inst{13-13} = 0b0;
14329 let Inst{31-21} = 0b11101000100;
14330 let prefersSlot3 = 1;
14331 let Defs = [USR_OVF];
14332 }
14333 def M2_mmpyuh_rs0 : HInst<
14334 (outs DoubleRegs:$Rdd32),
14335 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14336 "$Rdd32 = vmpywouh($Rss32,$Rtt32):rnd:sat",
14337 tc_8fd5f294, TypeM>, Enc_a56825 {
14338 let Inst{7-5} = 0b111;
14339 let Inst{13-13} = 0b0;
14340 let Inst{31-21} = 0b11101000011;
14341 let prefersSlot3 = 1;
14342 let Defs = [USR_OVF];
14343 }
14344 def M2_mmpyuh_rs1 : HInst<
14345 (outs DoubleRegs:$Rdd32),
14346 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14347 "$Rdd32 = vmpywouh($Rss32,$Rtt32):<<1:rnd:sat",
14348 tc_8fd5f294, TypeM>, Enc_a56825 {
14349 let Inst{7-5} = 0b111;
14350 let Inst{13-13} = 0b0;
14351 let Inst{31-21} = 0b11101000111;
14352 let prefersSlot3 = 1;
14353 let Defs = [USR_OVF];
14354 }
14355 def M2_mmpyuh_s0 : HInst<
14356 (outs DoubleRegs:$Rdd32),
14357 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14358 "$Rdd32 = vmpywouh($Rss32,$Rtt32):sat",
14359 tc_8fd5f294, TypeM>, Enc_a56825 {
14360 let Inst{7-5} = 0b111;
14361 let Inst{13-13} = 0b0;
14362 let Inst{31-21} = 0b11101000010;
14363 let prefersSlot3 = 1;
14364 let Defs = [USR_OVF];
14365 }
14366 def M2_mmpyuh_s1 : HInst<
14367 (outs DoubleRegs:$Rdd32),
14368 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14369 "$Rdd32 = vmpywouh($Rss32,$Rtt32):<<1:sat",
14370 tc_8fd5f294, TypeM>, Enc_a56825 {
14371 let Inst{7-5} = 0b111;
14372 let Inst{13-13} = 0b0;
14373 let Inst{31-21} = 0b11101000110;
14374 let prefersSlot3 = 1;
14375 let Defs = [USR_OVF];
14376 }
14377 def M2_mmpyul_rs0 : HInst<
14378 (outs DoubleRegs:$Rdd32),
14379 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14380 "$Rdd32 = vmpyweuh($Rss32,$Rtt32):rnd:sat",
14381 tc_8fd5f294, TypeM>, Enc_a56825 {
14382 let Inst{7-5} = 0b101;
14383 let Inst{13-13} = 0b0;
14384 let Inst{31-21} = 0b11101000011;
14385 let prefersSlot3 = 1;
14386 let Defs = [USR_OVF];
14387 }
14388 def M2_mmpyul_rs1 : HInst<
14389 (outs DoubleRegs:$Rdd32),
14390 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14391 "$Rdd32 = vmpyweuh($Rss32,$Rtt32):<<1:rnd:sat",
14392 tc_8fd5f294, TypeM>, Enc_a56825 {
14393 let Inst{7-5} = 0b101;
14394 let Inst{13-13} = 0b0;
14395 let Inst{31-21} = 0b11101000111;
14396 let prefersSlot3 = 1;
14397 let Defs = [USR_OVF];
14398 }
14399 def M2_mmpyul_s0 : HInst<
14400 (outs DoubleRegs:$Rdd32),
14401 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14402 "$Rdd32 = vmpyweuh($Rss32,$Rtt32):sat",
14403 tc_8fd5f294, TypeM>, Enc_a56825 {
14404 let Inst{7-5} = 0b101;
14405 let Inst{13-13} = 0b0;
14406 let Inst{31-21} = 0b11101000010;
14407 let prefersSlot3 = 1;
14408 let Defs = [USR_OVF];
14409 }
14410 def M2_mmpyul_s1 : HInst<
14411 (outs DoubleRegs:$Rdd32),
14412 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14413 "$Rdd32 = vmpyweuh($Rss32,$Rtt32):<<1:sat",
14414 tc_8fd5f294, TypeM>, Enc_a56825 {
14415 let Inst{7-5} = 0b101;
14416 let Inst{13-13} = 0b0;
14417 let Inst{31-21} = 0b11101000110;
14418 let prefersSlot3 = 1;
14419 let Defs = [USR_OVF];
14420 }
14421 def M2_mpy_acc_hh_s0 : HInst<
14422 (outs IntRegs:$Rx32),
14423 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14424 "$Rx32 += mpy($Rs32.h,$Rt32.h)",
14425 tc_e913dc32, TypeM>, Enc_2ae154 {
14426 let Inst{7-5} = 0b011;
14427 let Inst{13-13} = 0b0;
14428 let Inst{31-21} = 0b11101110000;
14429 let hasNewValue = 1;
14430 let opNewValue = 0;
14431 let prefersSlot3 = 1;
14432 let Constraints = "$Rx32 = $Rx32in";
14433 }
14434 def M2_mpy_acc_hh_s1 : HInst<
14435 (outs IntRegs:$Rx32),
14436 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14437 "$Rx32 += mpy($Rs32.h,$Rt32.h):<<1",
14438 tc_e913dc32, TypeM>, Enc_2ae154 {
14439 let Inst{7-5} = 0b011;
14440 let Inst{13-13} = 0b0;
14441 let Inst{31-21} = 0b11101110100;
14442 let hasNewValue = 1;
14443 let opNewValue = 0;
14444 let prefersSlot3 = 1;
14445 let Constraints = "$Rx32 = $Rx32in";
14446 }
14447 def M2_mpy_acc_hl_s0 : HInst<
14448 (outs IntRegs:$Rx32),
14449 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14450 "$Rx32 += mpy($Rs32.h,$Rt32.l)",
14451 tc_e913dc32, TypeM>, Enc_2ae154 {
14452 let Inst{7-5} = 0b010;
14453 let Inst{13-13} = 0b0;
14454 let Inst{31-21} = 0b11101110000;
14455 let hasNewValue = 1;
14456 let opNewValue = 0;
14457 let prefersSlot3 = 1;
14458 let Constraints = "$Rx32 = $Rx32in";
14459 }
14460 def M2_mpy_acc_hl_s1 : HInst<
14461 (outs IntRegs:$Rx32),
14462 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14463 "$Rx32 += mpy($Rs32.h,$Rt32.l):<<1",
14464 tc_e913dc32, TypeM>, Enc_2ae154 {
14465 let Inst{7-5} = 0b010;
14466 let Inst{13-13} = 0b0;
14467 let Inst{31-21} = 0b11101110100;
14468 let hasNewValue = 1;
14469 let opNewValue = 0;
14470 let prefersSlot3 = 1;
14471 let Constraints = "$Rx32 = $Rx32in";
14472 }
14473 def M2_mpy_acc_lh_s0 : HInst<
14474 (outs IntRegs:$Rx32),
14475 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14476 "$Rx32 += mpy($Rs32.l,$Rt32.h)",
14477 tc_e913dc32, TypeM>, Enc_2ae154 {
14478 let Inst{7-5} = 0b001;
14479 let Inst{13-13} = 0b0;
14480 let Inst{31-21} = 0b11101110000;
14481 let hasNewValue = 1;
14482 let opNewValue = 0;
14483 let prefersSlot3 = 1;
14484 let Constraints = "$Rx32 = $Rx32in";
14485 }
14486 def M2_mpy_acc_lh_s1 : HInst<
14487 (outs IntRegs:$Rx32),
14488 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14489 "$Rx32 += mpy($Rs32.l,$Rt32.h):<<1",
14490 tc_e913dc32, TypeM>, Enc_2ae154 {
14491 let Inst{7-5} = 0b001;
14492 let Inst{13-13} = 0b0;
14493 let Inst{31-21} = 0b11101110100;
14494 let hasNewValue = 1;
14495 let opNewValue = 0;
14496 let prefersSlot3 = 1;
14497 let Constraints = "$Rx32 = $Rx32in";
14498 }
14499 def M2_mpy_acc_ll_s0 : HInst<
14500 (outs IntRegs:$Rx32),
14501 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14502 "$Rx32 += mpy($Rs32.l,$Rt32.l)",
14503 tc_e913dc32, TypeM>, Enc_2ae154 {
14504 let Inst{7-5} = 0b000;
14505 let Inst{13-13} = 0b0;
14506 let Inst{31-21} = 0b11101110000;
14507 let hasNewValue = 1;
14508 let opNewValue = 0;
14509 let prefersSlot3 = 1;
14510 let Constraints = "$Rx32 = $Rx32in";
14511 }
14512 def M2_mpy_acc_ll_s1 : HInst<
14513 (outs IntRegs:$Rx32),
14514 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14515 "$Rx32 += mpy($Rs32.l,$Rt32.l):<<1",
14516 tc_e913dc32, TypeM>, Enc_2ae154 {
14517 let Inst{7-5} = 0b000;
14518 let Inst{13-13} = 0b0;
14519 let Inst{31-21} = 0b11101110100;
14520 let hasNewValue = 1;
14521 let opNewValue = 0;
14522 let prefersSlot3 = 1;
14523 let Constraints = "$Rx32 = $Rx32in";
14524 }
14525 def M2_mpy_acc_sat_hh_s0 : HInst<
14526 (outs IntRegs:$Rx32),
14527 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14528 "$Rx32 += mpy($Rs32.h,$Rt32.h):sat",
14529 tc_e913dc32, TypeM>, Enc_2ae154 {
14530 let Inst{7-5} = 0b111;
14531 let Inst{13-13} = 0b0;
14532 let Inst{31-21} = 0b11101110000;
14533 let hasNewValue = 1;
14534 let opNewValue = 0;
14535 let prefersSlot3 = 1;
14536 let Defs = [USR_OVF];
14537 let Constraints = "$Rx32 = $Rx32in";
14538 }
14539 def M2_mpy_acc_sat_hh_s1 : HInst<
14540 (outs IntRegs:$Rx32),
14541 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14542 "$Rx32 += mpy($Rs32.h,$Rt32.h):<<1:sat",
14543 tc_e913dc32, TypeM>, Enc_2ae154 {
14544 let Inst{7-5} = 0b111;
14545 let Inst{13-13} = 0b0;
14546 let Inst{31-21} = 0b11101110100;
14547 let hasNewValue = 1;
14548 let opNewValue = 0;
14549 let prefersSlot3 = 1;
14550 let Defs = [USR_OVF];
14551 let Constraints = "$Rx32 = $Rx32in";
14552 }
14553 def M2_mpy_acc_sat_hl_s0 : HInst<
14554 (outs IntRegs:$Rx32),
14555 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14556 "$Rx32 += mpy($Rs32.h,$Rt32.l):sat",
14557 tc_e913dc32, TypeM>, Enc_2ae154 {
14558 let Inst{7-5} = 0b110;
14559 let Inst{13-13} = 0b0;
14560 let Inst{31-21} = 0b11101110000;
14561 let hasNewValue = 1;
14562 let opNewValue = 0;
14563 let prefersSlot3 = 1;
14564 let Defs = [USR_OVF];
14565 let Constraints = "$Rx32 = $Rx32in";
14566 }
14567 def M2_mpy_acc_sat_hl_s1 : HInst<
14568 (outs IntRegs:$Rx32),
14569 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14570 "$Rx32 += mpy($Rs32.h,$Rt32.l):<<1:sat",
14571 tc_e913dc32, TypeM>, Enc_2ae154 {
14572 let Inst{7-5} = 0b110;
14573 let Inst{13-13} = 0b0;
14574 let Inst{31-21} = 0b11101110100;
14575 let hasNewValue = 1;
14576 let opNewValue = 0;
14577 let prefersSlot3 = 1;
14578 let Defs = [USR_OVF];
14579 let Constraints = "$Rx32 = $Rx32in";
14580 }
14581 def M2_mpy_acc_sat_lh_s0 : HInst<
14582 (outs IntRegs:$Rx32),
14583 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14584 "$Rx32 += mpy($Rs32.l,$Rt32.h):sat",
14585 tc_e913dc32, TypeM>, Enc_2ae154 {
14586 let Inst{7-5} = 0b101;
14587 let Inst{13-13} = 0b0;
14588 let Inst{31-21} = 0b11101110000;
14589 let hasNewValue = 1;
14590 let opNewValue = 0;
14591 let prefersSlot3 = 1;
14592 let Defs = [USR_OVF];
14593 let Constraints = "$Rx32 = $Rx32in";
14594 }
14595 def M2_mpy_acc_sat_lh_s1 : HInst<
14596 (outs IntRegs:$Rx32),
14597 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14598 "$Rx32 += mpy($Rs32.l,$Rt32.h):<<1:sat",
14599 tc_e913dc32, TypeM>, Enc_2ae154 {
14600 let Inst{7-5} = 0b101;
14601 let Inst{13-13} = 0b0;
14602 let Inst{31-21} = 0b11101110100;
14603 let hasNewValue = 1;
14604 let opNewValue = 0;
14605 let prefersSlot3 = 1;
14606 let Defs = [USR_OVF];
14607 let Constraints = "$Rx32 = $Rx32in";
14608 }
14609 def M2_mpy_acc_sat_ll_s0 : HInst<
14610 (outs IntRegs:$Rx32),
14611 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14612 "$Rx32 += mpy($Rs32.l,$Rt32.l):sat",
14613 tc_e913dc32, TypeM>, Enc_2ae154 {
14614 let Inst{7-5} = 0b100;
14615 let Inst{13-13} = 0b0;
14616 let Inst{31-21} = 0b11101110000;
14617 let hasNewValue = 1;
14618 let opNewValue = 0;
14619 let prefersSlot3 = 1;
14620 let Defs = [USR_OVF];
14621 let Constraints = "$Rx32 = $Rx32in";
14622 }
14623 def M2_mpy_acc_sat_ll_s1 : HInst<
14624 (outs IntRegs:$Rx32),
14625 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14626 "$Rx32 += mpy($Rs32.l,$Rt32.l):<<1:sat",
14627 tc_e913dc32, TypeM>, Enc_2ae154 {
14628 let Inst{7-5} = 0b100;
14629 let Inst{13-13} = 0b0;
14630 let Inst{31-21} = 0b11101110100;
14631 let hasNewValue = 1;
14632 let opNewValue = 0;
14633 let prefersSlot3 = 1;
14634 let Defs = [USR_OVF];
14635 let Constraints = "$Rx32 = $Rx32in";
14636 }
14637 def M2_mpy_hh_s0 : HInst<
14638 (outs IntRegs:$Rd32),
14639 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14640 "$Rd32 = mpy($Rs32.h,$Rt32.h)",
14641 tc_8fd5f294, TypeM>, Enc_5ab2be {
14642 let Inst{7-5} = 0b011;
14643 let Inst{13-13} = 0b0;
14644 let Inst{31-21} = 0b11101100000;
14645 let hasNewValue = 1;
14646 let opNewValue = 0;
14647 let prefersSlot3 = 1;
14648 }
14649 def M2_mpy_hh_s1 : HInst<
14650 (outs IntRegs:$Rd32),
14651 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14652 "$Rd32 = mpy($Rs32.h,$Rt32.h):<<1",
14653 tc_8fd5f294, TypeM>, Enc_5ab2be {
14654 let Inst{7-5} = 0b011;
14655 let Inst{13-13} = 0b0;
14656 let Inst{31-21} = 0b11101100100;
14657 let hasNewValue = 1;
14658 let opNewValue = 0;
14659 let prefersSlot3 = 1;
14660 }
14661 def M2_mpy_hl_s0 : HInst<
14662 (outs IntRegs:$Rd32),
14663 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14664 "$Rd32 = mpy($Rs32.h,$Rt32.l)",
14665 tc_8fd5f294, TypeM>, Enc_5ab2be {
14666 let Inst{7-5} = 0b010;
14667 let Inst{13-13} = 0b0;
14668 let Inst{31-21} = 0b11101100000;
14669 let hasNewValue = 1;
14670 let opNewValue = 0;
14671 let prefersSlot3 = 1;
14672 }
14673 def M2_mpy_hl_s1 : HInst<
14674 (outs IntRegs:$Rd32),
14675 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14676 "$Rd32 = mpy($Rs32.h,$Rt32.l):<<1",
14677 tc_8fd5f294, TypeM>, Enc_5ab2be {
14678 let Inst{7-5} = 0b010;
14679 let Inst{13-13} = 0b0;
14680 let Inst{31-21} = 0b11101100100;
14681 let hasNewValue = 1;
14682 let opNewValue = 0;
14683 let prefersSlot3 = 1;
14684 }
14685 def M2_mpy_lh_s0 : HInst<
14686 (outs IntRegs:$Rd32),
14687 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14688 "$Rd32 = mpy($Rs32.l,$Rt32.h)",
14689 tc_8fd5f294, TypeM>, Enc_5ab2be {
14690 let Inst{7-5} = 0b001;
14691 let Inst{13-13} = 0b0;
14692 let Inst{31-21} = 0b11101100000;
14693 let hasNewValue = 1;
14694 let opNewValue = 0;
14695 let prefersSlot3 = 1;
14696 }
14697 def M2_mpy_lh_s1 : HInst<
14698 (outs IntRegs:$Rd32),
14699 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14700 "$Rd32 = mpy($Rs32.l,$Rt32.h):<<1",
14701 tc_8fd5f294, TypeM>, Enc_5ab2be {
14702 let Inst{7-5} = 0b001;
14703 let Inst{13-13} = 0b0;
14704 let Inst{31-21} = 0b11101100100;
14705 let hasNewValue = 1;
14706 let opNewValue = 0;
14707 let prefersSlot3 = 1;
14708 }
14709 def M2_mpy_ll_s0 : HInst<
14710 (outs IntRegs:$Rd32),
14711 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14712 "$Rd32 = mpy($Rs32.l,$Rt32.l)",
14713 tc_8fd5f294, TypeM>, Enc_5ab2be {
14714 let Inst{7-5} = 0b000;
14715 let Inst{13-13} = 0b0;
14716 let Inst{31-21} = 0b11101100000;
14717 let hasNewValue = 1;
14718 let opNewValue = 0;
14719 let prefersSlot3 = 1;
14720 }
14721 def M2_mpy_ll_s1 : HInst<
14722 (outs IntRegs:$Rd32),
14723 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14724 "$Rd32 = mpy($Rs32.l,$Rt32.l):<<1",
14725 tc_8fd5f294, TypeM>, Enc_5ab2be {
14726 let Inst{7-5} = 0b000;
14727 let Inst{13-13} = 0b0;
14728 let Inst{31-21} = 0b11101100100;
14729 let hasNewValue = 1;
14730 let opNewValue = 0;
14731 let prefersSlot3 = 1;
14732 }
14733 def M2_mpy_nac_hh_s0 : HInst<
14734 (outs IntRegs:$Rx32),
14735 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14736 "$Rx32 -= mpy($Rs32.h,$Rt32.h)",
14737 tc_e913dc32, TypeM>, Enc_2ae154 {
14738 let Inst{7-5} = 0b011;
14739 let Inst{13-13} = 0b0;
14740 let Inst{31-21} = 0b11101110001;
14741 let hasNewValue = 1;
14742 let opNewValue = 0;
14743 let prefersSlot3 = 1;
14744 let Constraints = "$Rx32 = $Rx32in";
14745 }
14746 def M2_mpy_nac_hh_s1 : HInst<
14747 (outs IntRegs:$Rx32),
14748 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14749 "$Rx32 -= mpy($Rs32.h,$Rt32.h):<<1",
14750 tc_e913dc32, TypeM>, Enc_2ae154 {
14751 let Inst{7-5} = 0b011;
14752 let Inst{13-13} = 0b0;
14753 let Inst{31-21} = 0b11101110101;
14754 let hasNewValue = 1;
14755 let opNewValue = 0;
14756 let prefersSlot3 = 1;
14757 let Constraints = "$Rx32 = $Rx32in";
14758 }
14759 def M2_mpy_nac_hl_s0 : HInst<
14760 (outs IntRegs:$Rx32),
14761 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14762 "$Rx32 -= mpy($Rs32.h,$Rt32.l)",
14763 tc_e913dc32, TypeM>, Enc_2ae154 {
14764 let Inst{7-5} = 0b010;
14765 let Inst{13-13} = 0b0;
14766 let Inst{31-21} = 0b11101110001;
14767 let hasNewValue = 1;
14768 let opNewValue = 0;
14769 let prefersSlot3 = 1;
14770 let Constraints = "$Rx32 = $Rx32in";
14771 }
14772 def M2_mpy_nac_hl_s1 : HInst<
14773 (outs IntRegs:$Rx32),
14774 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14775 "$Rx32 -= mpy($Rs32.h,$Rt32.l):<<1",
14776 tc_e913dc32, TypeM>, Enc_2ae154 {
14777 let Inst{7-5} = 0b010;
14778 let Inst{13-13} = 0b0;
14779 let Inst{31-21} = 0b11101110101;
14780 let hasNewValue = 1;
14781 let opNewValue = 0;
14782 let prefersSlot3 = 1;
14783 let Constraints = "$Rx32 = $Rx32in";
14784 }
14785 def M2_mpy_nac_lh_s0 : HInst<
14786 (outs IntRegs:$Rx32),
14787 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14788 "$Rx32 -= mpy($Rs32.l,$Rt32.h)",
14789 tc_e913dc32, TypeM>, Enc_2ae154 {
14790 let Inst{7-5} = 0b001;
14791 let Inst{13-13} = 0b0;
14792 let Inst{31-21} = 0b11101110001;
14793 let hasNewValue = 1;
14794 let opNewValue = 0;
14795 let prefersSlot3 = 1;
14796 let Constraints = "$Rx32 = $Rx32in";
14797 }
14798 def M2_mpy_nac_lh_s1 : HInst<
14799 (outs IntRegs:$Rx32),
14800 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14801 "$Rx32 -= mpy($Rs32.l,$Rt32.h):<<1",
14802 tc_e913dc32, TypeM>, Enc_2ae154 {
14803 let Inst{7-5} = 0b001;
14804 let Inst{13-13} = 0b0;
14805 let Inst{31-21} = 0b11101110101;
14806 let hasNewValue = 1;
14807 let opNewValue = 0;
14808 let prefersSlot3 = 1;
14809 let Constraints = "$Rx32 = $Rx32in";
14810 }
14811 def M2_mpy_nac_ll_s0 : HInst<
14812 (outs IntRegs:$Rx32),
14813 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14814 "$Rx32 -= mpy($Rs32.l,$Rt32.l)",
14815 tc_e913dc32, TypeM>, Enc_2ae154 {
14816 let Inst{7-5} = 0b000;
14817 let Inst{13-13} = 0b0;
14818 let Inst{31-21} = 0b11101110001;
14819 let hasNewValue = 1;
14820 let opNewValue = 0;
14821 let prefersSlot3 = 1;
14822 let Constraints = "$Rx32 = $Rx32in";
14823 }
14824 def M2_mpy_nac_ll_s1 : HInst<
14825 (outs IntRegs:$Rx32),
14826 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14827 "$Rx32 -= mpy($Rs32.l,$Rt32.l):<<1",
14828 tc_e913dc32, TypeM>, Enc_2ae154 {
14829 let Inst{7-5} = 0b000;
14830 let Inst{13-13} = 0b0;
14831 let Inst{31-21} = 0b11101110101;
14832 let hasNewValue = 1;
14833 let opNewValue = 0;
14834 let prefersSlot3 = 1;
14835 let Constraints = "$Rx32 = $Rx32in";
14836 }
14837 def M2_mpy_nac_sat_hh_s0 : HInst<
14838 (outs IntRegs:$Rx32),
14839 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14840 "$Rx32 -= mpy($Rs32.h,$Rt32.h):sat",
14841 tc_e913dc32, TypeM>, Enc_2ae154 {
14842 let Inst{7-5} = 0b111;
14843 let Inst{13-13} = 0b0;
14844 let Inst{31-21} = 0b11101110001;
14845 let hasNewValue = 1;
14846 let opNewValue = 0;
14847 let prefersSlot3 = 1;
14848 let Defs = [USR_OVF];
14849 let Constraints = "$Rx32 = $Rx32in";
14850 }
14851 def M2_mpy_nac_sat_hh_s1 : HInst<
14852 (outs IntRegs:$Rx32),
14853 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14854 "$Rx32 -= mpy($Rs32.h,$Rt32.h):<<1:sat",
14855 tc_e913dc32, TypeM>, Enc_2ae154 {
14856 let Inst{7-5} = 0b111;
14857 let Inst{13-13} = 0b0;
14858 let Inst{31-21} = 0b11101110101;
14859 let hasNewValue = 1;
14860 let opNewValue = 0;
14861 let prefersSlot3 = 1;
14862 let Defs = [USR_OVF];
14863 let Constraints = "$Rx32 = $Rx32in";
14864 }
14865 def M2_mpy_nac_sat_hl_s0 : HInst<
14866 (outs IntRegs:$Rx32),
14867 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14868 "$Rx32 -= mpy($Rs32.h,$Rt32.l):sat",
14869 tc_e913dc32, TypeM>, Enc_2ae154 {
14870 let Inst{7-5} = 0b110;
14871 let Inst{13-13} = 0b0;
14872 let Inst{31-21} = 0b11101110001;
14873 let hasNewValue = 1;
14874 let opNewValue = 0;
14875 let prefersSlot3 = 1;
14876 let Defs = [USR_OVF];
14877 let Constraints = "$Rx32 = $Rx32in";
14878 }
14879 def M2_mpy_nac_sat_hl_s1 : HInst<
14880 (outs IntRegs:$Rx32),
14881 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14882 "$Rx32 -= mpy($Rs32.h,$Rt32.l):<<1:sat",
14883 tc_e913dc32, TypeM>, Enc_2ae154 {
14884 let Inst{7-5} = 0b110;
14885 let Inst{13-13} = 0b0;
14886 let Inst{31-21} = 0b11101110101;
14887 let hasNewValue = 1;
14888 let opNewValue = 0;
14889 let prefersSlot3 = 1;
14890 let Defs = [USR_OVF];
14891 let Constraints = "$Rx32 = $Rx32in";
14892 }
14893 def M2_mpy_nac_sat_lh_s0 : HInst<
14894 (outs IntRegs:$Rx32),
14895 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14896 "$Rx32 -= mpy($Rs32.l,$Rt32.h):sat",
14897 tc_e913dc32, TypeM>, Enc_2ae154 {
14898 let Inst{7-5} = 0b101;
14899 let Inst{13-13} = 0b0;
14900 let Inst{31-21} = 0b11101110001;
14901 let hasNewValue = 1;
14902 let opNewValue = 0;
14903 let prefersSlot3 = 1;
14904 let Defs = [USR_OVF];
14905 let Constraints = "$Rx32 = $Rx32in";
14906 }
14907 def M2_mpy_nac_sat_lh_s1 : HInst<
14908 (outs IntRegs:$Rx32),
14909 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14910 "$Rx32 -= mpy($Rs32.l,$Rt32.h):<<1:sat",
14911 tc_e913dc32, TypeM>, Enc_2ae154 {
14912 let Inst{7-5} = 0b101;
14913 let Inst{13-13} = 0b0;
14914 let Inst{31-21} = 0b11101110101;
14915 let hasNewValue = 1;
14916 let opNewValue = 0;
14917 let prefersSlot3 = 1;
14918 let Defs = [USR_OVF];
14919 let Constraints = "$Rx32 = $Rx32in";
14920 }
14921 def M2_mpy_nac_sat_ll_s0 : HInst<
14922 (outs IntRegs:$Rx32),
14923 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14924 "$Rx32 -= mpy($Rs32.l,$Rt32.l):sat",
14925 tc_e913dc32, TypeM>, Enc_2ae154 {
14926 let Inst{7-5} = 0b100;
14927 let Inst{13-13} = 0b0;
14928 let Inst{31-21} = 0b11101110001;
14929 let hasNewValue = 1;
14930 let opNewValue = 0;
14931 let prefersSlot3 = 1;
14932 let Defs = [USR_OVF];
14933 let Constraints = "$Rx32 = $Rx32in";
14934 }
14935 def M2_mpy_nac_sat_ll_s1 : HInst<
14936 (outs IntRegs:$Rx32),
14937 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14938 "$Rx32 -= mpy($Rs32.l,$Rt32.l):<<1:sat",
14939 tc_e913dc32, TypeM>, Enc_2ae154 {
14940 let Inst{7-5} = 0b100;
14941 let Inst{13-13} = 0b0;
14942 let Inst{31-21} = 0b11101110101;
14943 let hasNewValue = 1;
14944 let opNewValue = 0;
14945 let prefersSlot3 = 1;
14946 let Defs = [USR_OVF];
14947 let Constraints = "$Rx32 = $Rx32in";
14948 }
14949 def M2_mpy_rnd_hh_s0 : HInst<
14950 (outs IntRegs:$Rd32),
14951 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14952 "$Rd32 = mpy($Rs32.h,$Rt32.h):rnd",
14953 tc_8fd5f294, TypeM>, Enc_5ab2be {
14954 let Inst{7-5} = 0b011;
14955 let Inst{13-13} = 0b0;
14956 let Inst{31-21} = 0b11101100001;
14957 let hasNewValue = 1;
14958 let opNewValue = 0;
14959 let prefersSlot3 = 1;
14960 }
14961 def M2_mpy_rnd_hh_s1 : HInst<
14962 (outs IntRegs:$Rd32),
14963 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14964 "$Rd32 = mpy($Rs32.h,$Rt32.h):<<1:rnd",
14965 tc_8fd5f294, TypeM>, Enc_5ab2be {
14966 let Inst{7-5} = 0b011;
14967 let Inst{13-13} = 0b0;
14968 let Inst{31-21} = 0b11101100101;
14969 let hasNewValue = 1;
14970 let opNewValue = 0;
14971 let prefersSlot3 = 1;
14972 }
14973 def M2_mpy_rnd_hl_s0 : HInst<
14974 (outs IntRegs:$Rd32),
14975 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14976 "$Rd32 = mpy($Rs32.h,$Rt32.l):rnd",
14977 tc_8fd5f294, TypeM>, Enc_5ab2be {
14978 let Inst{7-5} = 0b010;
14979 let Inst{13-13} = 0b0;
14980 let Inst{31-21} = 0b11101100001;
14981 let hasNewValue = 1;
14982 let opNewValue = 0;
14983 let prefersSlot3 = 1;
14984 }
14985 def M2_mpy_rnd_hl_s1 : HInst<
14986 (outs IntRegs:$Rd32),
14987 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14988 "$Rd32 = mpy($Rs32.h,$Rt32.l):<<1:rnd",
14989 tc_8fd5f294, TypeM>, Enc_5ab2be {
14990 let Inst{7-5} = 0b010;
14991 let Inst{13-13} = 0b0;
14992 let Inst{31-21} = 0b11101100101;
14993 let hasNewValue = 1;
14994 let opNewValue = 0;
14995 let prefersSlot3 = 1;
14996 }
14997 def M2_mpy_rnd_lh_s0 : HInst<
14998 (outs IntRegs:$Rd32),
14999 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15000 "$Rd32 = mpy($Rs32.l,$Rt32.h):rnd",
15001 tc_8fd5f294, TypeM>, Enc_5ab2be {
15002 let Inst{7-5} = 0b001;
15003 let Inst{13-13} = 0b0;
15004 let Inst{31-21} = 0b11101100001;
15005 let hasNewValue = 1;
15006 let opNewValue = 0;
15007 let prefersSlot3 = 1;
15008 }
15009 def M2_mpy_rnd_lh_s1 : HInst<
15010 (outs IntRegs:$Rd32),
15011 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15012 "$Rd32 = mpy($Rs32.l,$Rt32.h):<<1:rnd",
15013 tc_8fd5f294, TypeM>, Enc_5ab2be {
15014 let Inst{7-5} = 0b001;
15015 let Inst{13-13} = 0b0;
15016 let Inst{31-21} = 0b11101100101;
15017 let hasNewValue = 1;
15018 let opNewValue = 0;
15019 let prefersSlot3 = 1;
15020 }
15021 def M2_mpy_rnd_ll_s0 : HInst<
15022 (outs IntRegs:$Rd32),
15023 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15024 "$Rd32 = mpy($Rs32.l,$Rt32.l):rnd",
15025 tc_8fd5f294, TypeM>, Enc_5ab2be {
15026 let Inst{7-5} = 0b000;
15027 let Inst{13-13} = 0b0;
15028 let Inst{31-21} = 0b11101100001;
15029 let hasNewValue = 1;
15030 let opNewValue = 0;
15031 let prefersSlot3 = 1;
15032 }
15033 def M2_mpy_rnd_ll_s1 : HInst<
15034 (outs IntRegs:$Rd32),
15035 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15036 "$Rd32 = mpy($Rs32.l,$Rt32.l):<<1:rnd",
15037 tc_8fd5f294, TypeM>, Enc_5ab2be {
15038 let Inst{7-5} = 0b000;
15039 let Inst{13-13} = 0b0;
15040 let Inst{31-21} = 0b11101100101;
15041 let hasNewValue = 1;
15042 let opNewValue = 0;
15043 let prefersSlot3 = 1;
15044 }
15045 def M2_mpy_sat_hh_s0 : HInst<
15046 (outs IntRegs:$Rd32),
15047 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15048 "$Rd32 = mpy($Rs32.h,$Rt32.h):sat",
15049 tc_8fd5f294, TypeM>, Enc_5ab2be {
15050 let Inst{7-5} = 0b111;
15051 let Inst{13-13} = 0b0;
15052 let Inst{31-21} = 0b11101100000;
15053 let hasNewValue = 1;
15054 let opNewValue = 0;
15055 let prefersSlot3 = 1;
15056 let Defs = [USR_OVF];
15057 }
15058 def M2_mpy_sat_hh_s1 : HInst<
15059 (outs IntRegs:$Rd32),
15060 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15061 "$Rd32 = mpy($Rs32.h,$Rt32.h):<<1:sat",
15062 tc_8fd5f294, TypeM>, Enc_5ab2be {
15063 let Inst{7-5} = 0b111;
15064 let Inst{13-13} = 0b0;
15065 let Inst{31-21} = 0b11101100100;
15066 let hasNewValue = 1;
15067 let opNewValue = 0;
15068 let prefersSlot3 = 1;
15069 let Defs = [USR_OVF];
15070 }
15071 def M2_mpy_sat_hl_s0 : HInst<
15072 (outs IntRegs:$Rd32),
15073 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15074 "$Rd32 = mpy($Rs32.h,$Rt32.l):sat",
15075 tc_8fd5f294, TypeM>, Enc_5ab2be {
15076 let Inst{7-5} = 0b110;
15077 let Inst{13-13} = 0b0;
15078 let Inst{31-21} = 0b11101100000;
15079 let hasNewValue = 1;
15080 let opNewValue = 0;
15081 let prefersSlot3 = 1;
15082 let Defs = [USR_OVF];
15083 }
15084 def M2_mpy_sat_hl_s1 : HInst<
15085 (outs IntRegs:$Rd32),
15086 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15087 "$Rd32 = mpy($Rs32.h,$Rt32.l):<<1:sat",
15088 tc_8fd5f294, TypeM>, Enc_5ab2be {
15089 let Inst{7-5} = 0b110;
15090 let Inst{13-13} = 0b0;
15091 let Inst{31-21} = 0b11101100100;
15092 let hasNewValue = 1;
15093 let opNewValue = 0;
15094 let prefersSlot3 = 1;
15095 let Defs = [USR_OVF];
15096 }
15097 def M2_mpy_sat_lh_s0 : HInst<
15098 (outs IntRegs:$Rd32),
15099 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15100 "$Rd32 = mpy($Rs32.l,$Rt32.h):sat",
15101 tc_8fd5f294, TypeM>, Enc_5ab2be {
15102 let Inst{7-5} = 0b101;
15103 let Inst{13-13} = 0b0;
15104 let Inst{31-21} = 0b11101100000;
15105 let hasNewValue = 1;
15106 let opNewValue = 0;
15107 let prefersSlot3 = 1;
15108 let Defs = [USR_OVF];
15109 }
15110 def M2_mpy_sat_lh_s1 : HInst<
15111 (outs IntRegs:$Rd32),
15112 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15113 "$Rd32 = mpy($Rs32.l,$Rt32.h):<<1:sat",
15114 tc_8fd5f294, TypeM>, Enc_5ab2be {
15115 let Inst{7-5} = 0b101;
15116 let Inst{13-13} = 0b0;
15117 let Inst{31-21} = 0b11101100100;
15118 let hasNewValue = 1;
15119 let opNewValue = 0;
15120 let prefersSlot3 = 1;
15121 let Defs = [USR_OVF];
15122 }
15123 def M2_mpy_sat_ll_s0 : HInst<
15124 (outs IntRegs:$Rd32),
15125 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15126 "$Rd32 = mpy($Rs32.l,$Rt32.l):sat",
15127 tc_8fd5f294, TypeM>, Enc_5ab2be {
15128 let Inst{7-5} = 0b100;
15129 let Inst{13-13} = 0b0;
15130 let Inst{31-21} = 0b11101100000;
15131 let hasNewValue = 1;
15132 let opNewValue = 0;
15133 let prefersSlot3 = 1;
15134 let Defs = [USR_OVF];
15135 }
15136 def M2_mpy_sat_ll_s1 : HInst<
15137 (outs IntRegs:$Rd32),
15138 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15139 "$Rd32 = mpy($Rs32.l,$Rt32.l):<<1:sat",
15140 tc_8fd5f294, TypeM>, Enc_5ab2be {
15141 let Inst{7-5} = 0b100;
15142 let Inst{13-13} = 0b0;
15143 let Inst{31-21} = 0b11101100100;
15144 let hasNewValue = 1;
15145 let opNewValue = 0;
15146 let prefersSlot3 = 1;
15147 let Defs = [USR_OVF];
15148 }
15149 def M2_mpy_sat_rnd_hh_s0 : HInst<
15150 (outs IntRegs:$Rd32),
15151 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15152 "$Rd32 = mpy($Rs32.h,$Rt32.h):rnd:sat",
15153 tc_8fd5f294, TypeM>, Enc_5ab2be {
15154 let Inst{7-5} = 0b111;
15155 let Inst{13-13} = 0b0;
15156 let Inst{31-21} = 0b11101100001;
15157 let hasNewValue = 1;
15158 let opNewValue = 0;
15159 let prefersSlot3 = 1;
15160 let Defs = [USR_OVF];
15161 }
15162 def M2_mpy_sat_rnd_hh_s1 : HInst<
15163 (outs IntRegs:$Rd32),
15164 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15165 "$Rd32 = mpy($Rs32.h,$Rt32.h):<<1:rnd:sat",
15166 tc_8fd5f294, TypeM>, Enc_5ab2be {
15167 let Inst{7-5} = 0b111;
15168 let Inst{13-13} = 0b0;
15169 let Inst{31-21} = 0b11101100101;
15170 let hasNewValue = 1;
15171 let opNewValue = 0;
15172 let prefersSlot3 = 1;
15173 let Defs = [USR_OVF];
15174 }
15175 def M2_mpy_sat_rnd_hl_s0 : HInst<
15176 (outs IntRegs:$Rd32),
15177 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15178 "$Rd32 = mpy($Rs32.h,$Rt32.l):rnd:sat",
15179 tc_8fd5f294, TypeM>, Enc_5ab2be {
15180 let Inst{7-5} = 0b110;
15181 let Inst{13-13} = 0b0;
15182 let Inst{31-21} = 0b11101100001;
15183 let hasNewValue = 1;
15184 let opNewValue = 0;
15185 let prefersSlot3 = 1;
15186 let Defs = [USR_OVF];
15187 }
15188 def M2_mpy_sat_rnd_hl_s1 : HInst<
15189 (outs IntRegs:$Rd32),
15190 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15191 "$Rd32 = mpy($Rs32.h,$Rt32.l):<<1:rnd:sat",
15192 tc_8fd5f294, TypeM>, Enc_5ab2be {
15193 let Inst{7-5} = 0b110;
15194 let Inst{13-13} = 0b0;
15195 let Inst{31-21} = 0b11101100101;
15196 let hasNewValue = 1;
15197 let opNewValue = 0;
15198 let prefersSlot3 = 1;
15199 let Defs = [USR_OVF];
15200 }
15201 def M2_mpy_sat_rnd_lh_s0 : HInst<
15202 (outs IntRegs:$Rd32),
15203 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15204 "$Rd32 = mpy($Rs32.l,$Rt32.h):rnd:sat",
15205 tc_8fd5f294, TypeM>, Enc_5ab2be {
15206 let Inst{7-5} = 0b101;
15207 let Inst{13-13} = 0b0;
15208 let Inst{31-21} = 0b11101100001;
15209 let hasNewValue = 1;
15210 let opNewValue = 0;
15211 let prefersSlot3 = 1;
15212 let Defs = [USR_OVF];
15213 }
15214 def M2_mpy_sat_rnd_lh_s1 : HInst<
15215 (outs IntRegs:$Rd32),
15216 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15217 "$Rd32 = mpy($Rs32.l,$Rt32.h):<<1:rnd:sat",
15218 tc_8fd5f294, TypeM>, Enc_5ab2be {
15219 let Inst{7-5} = 0b101;
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 let Defs = [USR_OVF];
15226 }
15227 def M2_mpy_sat_rnd_ll_s0 : HInst<
15228 (outs IntRegs:$Rd32),
15229 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15230 "$Rd32 = mpy($Rs32.l,$Rt32.l):rnd:sat",
15231 tc_8fd5f294, TypeM>, Enc_5ab2be {
15232 let Inst{7-5} = 0b100;
15233 let Inst{13-13} = 0b0;
15234 let Inst{31-21} = 0b11101100001;
15235 let hasNewValue = 1;
15236 let opNewValue = 0;
15237 let prefersSlot3 = 1;
15238 let Defs = [USR_OVF];
15239 }
15240 def M2_mpy_sat_rnd_ll_s1 : HInst<
15241 (outs IntRegs:$Rd32),
15242 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15243 "$Rd32 = mpy($Rs32.l,$Rt32.l):<<1:rnd:sat",
15244 tc_8fd5f294, TypeM>, Enc_5ab2be {
15245 let Inst{7-5} = 0b100;
15246 let Inst{13-13} = 0b0;
15247 let Inst{31-21} = 0b11101100101;
15248 let hasNewValue = 1;
15249 let opNewValue = 0;
15250 let prefersSlot3 = 1;
15251 let Defs = [USR_OVF];
15252 }
15253 def M2_mpy_up : HInst<
15254 (outs IntRegs:$Rd32),
15255 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15256 "$Rd32 = mpy($Rs32,$Rt32)",
15257 tc_8fd5f294, TypeM>, Enc_5ab2be {
15258 let Inst{7-5} = 0b001;
15259 let Inst{13-13} = 0b0;
15260 let Inst{31-21} = 0b11101101000;
15261 let hasNewValue = 1;
15262 let opNewValue = 0;
15263 let prefersSlot3 = 1;
15264 }
15265 def M2_mpy_up_s1 : HInst<
15266 (outs IntRegs:$Rd32),
15267 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15268 "$Rd32 = mpy($Rs32,$Rt32):<<1",
15269 tc_8fd5f294, TypeM>, Enc_5ab2be {
15270 let Inst{7-5} = 0b010;
15271 let Inst{13-13} = 0b0;
15272 let Inst{31-21} = 0b11101101101;
15273 let hasNewValue = 1;
15274 let opNewValue = 0;
15275 let prefersSlot3 = 1;
15276 }
15277 def M2_mpy_up_s1_sat : HInst<
15278 (outs IntRegs:$Rd32),
15279 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15280 "$Rd32 = mpy($Rs32,$Rt32):<<1:sat",
15281 tc_8fd5f294, TypeM>, Enc_5ab2be {
15282 let Inst{7-5} = 0b000;
15283 let Inst{13-13} = 0b0;
15284 let Inst{31-21} = 0b11101101111;
15285 let hasNewValue = 1;
15286 let opNewValue = 0;
15287 let prefersSlot3 = 1;
15288 let Defs = [USR_OVF];
15289 }
15290 def M2_mpyd_acc_hh_s0 : HInst<
15291 (outs DoubleRegs:$Rxx32),
15292 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15293 "$Rxx32 += mpy($Rs32.h,$Rt32.h)",
15294 tc_e913dc32, TypeM>, Enc_61f0b0 {
15295 let Inst{7-5} = 0b011;
15296 let Inst{13-13} = 0b0;
15297 let Inst{31-21} = 0b11100110000;
15298 let prefersSlot3 = 1;
15299 let Constraints = "$Rxx32 = $Rxx32in";
15300 }
15301 def M2_mpyd_acc_hh_s1 : HInst<
15302 (outs DoubleRegs:$Rxx32),
15303 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15304 "$Rxx32 += mpy($Rs32.h,$Rt32.h):<<1",
15305 tc_e913dc32, TypeM>, Enc_61f0b0 {
15306 let Inst{7-5} = 0b011;
15307 let Inst{13-13} = 0b0;
15308 let Inst{31-21} = 0b11100110100;
15309 let prefersSlot3 = 1;
15310 let Constraints = "$Rxx32 = $Rxx32in";
15311 }
15312 def M2_mpyd_acc_hl_s0 : HInst<
15313 (outs DoubleRegs:$Rxx32),
15314 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15315 "$Rxx32 += mpy($Rs32.h,$Rt32.l)",
15316 tc_e913dc32, TypeM>, Enc_61f0b0 {
15317 let Inst{7-5} = 0b010;
15318 let Inst{13-13} = 0b0;
15319 let Inst{31-21} = 0b11100110000;
15320 let prefersSlot3 = 1;
15321 let Constraints = "$Rxx32 = $Rxx32in";
15322 }
15323 def M2_mpyd_acc_hl_s1 : HInst<
15324 (outs DoubleRegs:$Rxx32),
15325 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15326 "$Rxx32 += mpy($Rs32.h,$Rt32.l):<<1",
15327 tc_e913dc32, TypeM>, Enc_61f0b0 {
15328 let Inst{7-5} = 0b010;
15329 let Inst{13-13} = 0b0;
15330 let Inst{31-21} = 0b11100110100;
15331 let prefersSlot3 = 1;
15332 let Constraints = "$Rxx32 = $Rxx32in";
15333 }
15334 def M2_mpyd_acc_lh_s0 : HInst<
15335 (outs DoubleRegs:$Rxx32),
15336 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15337 "$Rxx32 += mpy($Rs32.l,$Rt32.h)",
15338 tc_e913dc32, TypeM>, Enc_61f0b0 {
15339 let Inst{7-5} = 0b001;
15340 let Inst{13-13} = 0b0;
15341 let Inst{31-21} = 0b11100110000;
15342 let prefersSlot3 = 1;
15343 let Constraints = "$Rxx32 = $Rxx32in";
15344 }
15345 def M2_mpyd_acc_lh_s1 : HInst<
15346 (outs DoubleRegs:$Rxx32),
15347 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15348 "$Rxx32 += mpy($Rs32.l,$Rt32.h):<<1",
15349 tc_e913dc32, TypeM>, Enc_61f0b0 {
15350 let Inst{7-5} = 0b001;
15351 let Inst{13-13} = 0b0;
15352 let Inst{31-21} = 0b11100110100;
15353 let prefersSlot3 = 1;
15354 let Constraints = "$Rxx32 = $Rxx32in";
15355 }
15356 def M2_mpyd_acc_ll_s0 : HInst<
15357 (outs DoubleRegs:$Rxx32),
15358 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15359 "$Rxx32 += mpy($Rs32.l,$Rt32.l)",
15360 tc_e913dc32, TypeM>, Enc_61f0b0 {
15361 let Inst{7-5} = 0b000;
15362 let Inst{13-13} = 0b0;
15363 let Inst{31-21} = 0b11100110000;
15364 let prefersSlot3 = 1;
15365 let Constraints = "$Rxx32 = $Rxx32in";
15366 }
15367 def M2_mpyd_acc_ll_s1 : HInst<
15368 (outs DoubleRegs:$Rxx32),
15369 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15370 "$Rxx32 += mpy($Rs32.l,$Rt32.l):<<1",
15371 tc_e913dc32, TypeM>, Enc_61f0b0 {
15372 let Inst{7-5} = 0b000;
15373 let Inst{13-13} = 0b0;
15374 let Inst{31-21} = 0b11100110100;
15375 let prefersSlot3 = 1;
15376 let Constraints = "$Rxx32 = $Rxx32in";
15377 }
15378 def M2_mpyd_hh_s0 : HInst<
15379 (outs DoubleRegs:$Rdd32),
15380 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15381 "$Rdd32 = mpy($Rs32.h,$Rt32.h)",
15382 tc_8fd5f294, TypeM>, Enc_be32a5 {
15383 let Inst{7-5} = 0b011;
15384 let Inst{13-13} = 0b0;
15385 let Inst{31-21} = 0b11100100000;
15386 let prefersSlot3 = 1;
15387 }
15388 def M2_mpyd_hh_s1 : HInst<
15389 (outs DoubleRegs:$Rdd32),
15390 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15391 "$Rdd32 = mpy($Rs32.h,$Rt32.h):<<1",
15392 tc_8fd5f294, TypeM>, Enc_be32a5 {
15393 let Inst{7-5} = 0b011;
15394 let Inst{13-13} = 0b0;
15395 let Inst{31-21} = 0b11100100100;
15396 let prefersSlot3 = 1;
15397 }
15398 def M2_mpyd_hl_s0 : HInst<
15399 (outs DoubleRegs:$Rdd32),
15400 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15401 "$Rdd32 = mpy($Rs32.h,$Rt32.l)",
15402 tc_8fd5f294, TypeM>, Enc_be32a5 {
15403 let Inst{7-5} = 0b010;
15404 let Inst{13-13} = 0b0;
15405 let Inst{31-21} = 0b11100100000;
15406 let prefersSlot3 = 1;
15407 }
15408 def M2_mpyd_hl_s1 : HInst<
15409 (outs DoubleRegs:$Rdd32),
15410 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15411 "$Rdd32 = mpy($Rs32.h,$Rt32.l):<<1",
15412 tc_8fd5f294, TypeM>, Enc_be32a5 {
15413 let Inst{7-5} = 0b010;
15414 let Inst{13-13} = 0b0;
15415 let Inst{31-21} = 0b11100100100;
15416 let prefersSlot3 = 1;
15417 }
15418 def M2_mpyd_lh_s0 : HInst<
15419 (outs DoubleRegs:$Rdd32),
15420 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15421 "$Rdd32 = mpy($Rs32.l,$Rt32.h)",
15422 tc_8fd5f294, TypeM>, Enc_be32a5 {
15423 let Inst{7-5} = 0b001;
15424 let Inst{13-13} = 0b0;
15425 let Inst{31-21} = 0b11100100000;
15426 let prefersSlot3 = 1;
15427 }
15428 def M2_mpyd_lh_s1 : HInst<
15429 (outs DoubleRegs:$Rdd32),
15430 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15431 "$Rdd32 = mpy($Rs32.l,$Rt32.h):<<1",
15432 tc_8fd5f294, TypeM>, Enc_be32a5 {
15433 let Inst{7-5} = 0b001;
15434 let Inst{13-13} = 0b0;
15435 let Inst{31-21} = 0b11100100100;
15436 let prefersSlot3 = 1;
15437 }
15438 def M2_mpyd_ll_s0 : HInst<
15439 (outs DoubleRegs:$Rdd32),
15440 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15441 "$Rdd32 = mpy($Rs32.l,$Rt32.l)",
15442 tc_8fd5f294, TypeM>, Enc_be32a5 {
15443 let Inst{7-5} = 0b000;
15444 let Inst{13-13} = 0b0;
15445 let Inst{31-21} = 0b11100100000;
15446 let prefersSlot3 = 1;
15447 }
15448 def M2_mpyd_ll_s1 : HInst<
15449 (outs DoubleRegs:$Rdd32),
15450 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15451 "$Rdd32 = mpy($Rs32.l,$Rt32.l):<<1",
15452 tc_8fd5f294, TypeM>, Enc_be32a5 {
15453 let Inst{7-5} = 0b000;
15454 let Inst{13-13} = 0b0;
15455 let Inst{31-21} = 0b11100100100;
15456 let prefersSlot3 = 1;
15457 }
15458 def M2_mpyd_nac_hh_s0 : HInst<
15459 (outs DoubleRegs:$Rxx32),
15460 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15461 "$Rxx32 -= mpy($Rs32.h,$Rt32.h)",
15462 tc_e913dc32, TypeM>, Enc_61f0b0 {
15463 let Inst{7-5} = 0b011;
15464 let Inst{13-13} = 0b0;
15465 let Inst{31-21} = 0b11100110001;
15466 let prefersSlot3 = 1;
15467 let Constraints = "$Rxx32 = $Rxx32in";
15468 }
15469 def M2_mpyd_nac_hh_s1 : HInst<
15470 (outs DoubleRegs:$Rxx32),
15471 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15472 "$Rxx32 -= mpy($Rs32.h,$Rt32.h):<<1",
15473 tc_e913dc32, TypeM>, Enc_61f0b0 {
15474 let Inst{7-5} = 0b011;
15475 let Inst{13-13} = 0b0;
15476 let Inst{31-21} = 0b11100110101;
15477 let prefersSlot3 = 1;
15478 let Constraints = "$Rxx32 = $Rxx32in";
15479 }
15480 def M2_mpyd_nac_hl_s0 : HInst<
15481 (outs DoubleRegs:$Rxx32),
15482 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15483 "$Rxx32 -= mpy($Rs32.h,$Rt32.l)",
15484 tc_e913dc32, TypeM>, Enc_61f0b0 {
15485 let Inst{7-5} = 0b010;
15486 let Inst{13-13} = 0b0;
15487 let Inst{31-21} = 0b11100110001;
15488 let prefersSlot3 = 1;
15489 let Constraints = "$Rxx32 = $Rxx32in";
15490 }
15491 def M2_mpyd_nac_hl_s1 : HInst<
15492 (outs DoubleRegs:$Rxx32),
15493 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15494 "$Rxx32 -= mpy($Rs32.h,$Rt32.l):<<1",
15495 tc_e913dc32, TypeM>, Enc_61f0b0 {
15496 let Inst{7-5} = 0b010;
15497 let Inst{13-13} = 0b0;
15498 let Inst{31-21} = 0b11100110101;
15499 let prefersSlot3 = 1;
15500 let Constraints = "$Rxx32 = $Rxx32in";
15501 }
15502 def M2_mpyd_nac_lh_s0 : HInst<
15503 (outs DoubleRegs:$Rxx32),
15504 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15505 "$Rxx32 -= mpy($Rs32.l,$Rt32.h)",
15506 tc_e913dc32, TypeM>, Enc_61f0b0 {
15507 let Inst{7-5} = 0b001;
15508 let Inst{13-13} = 0b0;
15509 let Inst{31-21} = 0b11100110001;
15510 let prefersSlot3 = 1;
15511 let Constraints = "$Rxx32 = $Rxx32in";
15512 }
15513 def M2_mpyd_nac_lh_s1 : HInst<
15514 (outs DoubleRegs:$Rxx32),
15515 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15516 "$Rxx32 -= mpy($Rs32.l,$Rt32.h):<<1",
15517 tc_e913dc32, TypeM>, Enc_61f0b0 {
15518 let Inst{7-5} = 0b001;
15519 let Inst{13-13} = 0b0;
15520 let Inst{31-21} = 0b11100110101;
15521 let prefersSlot3 = 1;
15522 let Constraints = "$Rxx32 = $Rxx32in";
15523 }
15524 def M2_mpyd_nac_ll_s0 : HInst<
15525 (outs DoubleRegs:$Rxx32),
15526 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15527 "$Rxx32 -= mpy($Rs32.l,$Rt32.l)",
15528 tc_e913dc32, TypeM>, Enc_61f0b0 {
15529 let Inst{7-5} = 0b000;
15530 let Inst{13-13} = 0b0;
15531 let Inst{31-21} = 0b11100110001;
15532 let prefersSlot3 = 1;
15533 let Constraints = "$Rxx32 = $Rxx32in";
15534 }
15535 def M2_mpyd_nac_ll_s1 : HInst<
15536 (outs DoubleRegs:$Rxx32),
15537 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15538 "$Rxx32 -= mpy($Rs32.l,$Rt32.l):<<1",
15539 tc_e913dc32, TypeM>, Enc_61f0b0 {
15540 let Inst{7-5} = 0b000;
15541 let Inst{13-13} = 0b0;
15542 let Inst{31-21} = 0b11100110101;
15543 let prefersSlot3 = 1;
15544 let Constraints = "$Rxx32 = $Rxx32in";
15545 }
15546 def M2_mpyd_rnd_hh_s0 : HInst<
15547 (outs DoubleRegs:$Rdd32),
15548 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15549 "$Rdd32 = mpy($Rs32.h,$Rt32.h):rnd",
15550 tc_8fd5f294, TypeM>, Enc_be32a5 {
15551 let Inst{7-5} = 0b011;
15552 let Inst{13-13} = 0b0;
15553 let Inst{31-21} = 0b11100100001;
15554 let prefersSlot3 = 1;
15555 }
15556 def M2_mpyd_rnd_hh_s1 : HInst<
15557 (outs DoubleRegs:$Rdd32),
15558 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15559 "$Rdd32 = mpy($Rs32.h,$Rt32.h):<<1:rnd",
15560 tc_8fd5f294, TypeM>, Enc_be32a5 {
15561 let Inst{7-5} = 0b011;
15562 let Inst{13-13} = 0b0;
15563 let Inst{31-21} = 0b11100100101;
15564 let prefersSlot3 = 1;
15565 }
15566 def M2_mpyd_rnd_hl_s0 : HInst<
15567 (outs DoubleRegs:$Rdd32),
15568 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15569 "$Rdd32 = mpy($Rs32.h,$Rt32.l):rnd",
15570 tc_8fd5f294, TypeM>, Enc_be32a5 {
15571 let Inst{7-5} = 0b010;
15572 let Inst{13-13} = 0b0;
15573 let Inst{31-21} = 0b11100100001;
15574 let prefersSlot3 = 1;
15575 }
15576 def M2_mpyd_rnd_hl_s1 : HInst<
15577 (outs DoubleRegs:$Rdd32),
15578 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15579 "$Rdd32 = mpy($Rs32.h,$Rt32.l):<<1:rnd",
15580 tc_8fd5f294, TypeM>, Enc_be32a5 {
15581 let Inst{7-5} = 0b010;
15582 let Inst{13-13} = 0b0;
15583 let Inst{31-21} = 0b11100100101;
15584 let prefersSlot3 = 1;
15585 }
15586 def M2_mpyd_rnd_lh_s0 : HInst<
15587 (outs DoubleRegs:$Rdd32),
15588 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15589 "$Rdd32 = mpy($Rs32.l,$Rt32.h):rnd",
15590 tc_8fd5f294, TypeM>, Enc_be32a5 {
15591 let Inst{7-5} = 0b001;
15592 let Inst{13-13} = 0b0;
15593 let Inst{31-21} = 0b11100100001;
15594 let prefersSlot3 = 1;
15595 }
15596 def M2_mpyd_rnd_lh_s1 : HInst<
15597 (outs DoubleRegs:$Rdd32),
15598 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15599 "$Rdd32 = mpy($Rs32.l,$Rt32.h):<<1:rnd",
15600 tc_8fd5f294, TypeM>, Enc_be32a5 {
15601 let Inst{7-5} = 0b001;
15602 let Inst{13-13} = 0b0;
15603 let Inst{31-21} = 0b11100100101;
15604 let prefersSlot3 = 1;
15605 }
15606 def M2_mpyd_rnd_ll_s0 : HInst<
15607 (outs DoubleRegs:$Rdd32),
15608 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15609 "$Rdd32 = mpy($Rs32.l,$Rt32.l):rnd",
15610 tc_8fd5f294, TypeM>, Enc_be32a5 {
15611 let Inst{7-5} = 0b000;
15612 let Inst{13-13} = 0b0;
15613 let Inst{31-21} = 0b11100100001;
15614 let prefersSlot3 = 1;
15615 }
15616 def M2_mpyd_rnd_ll_s1 : HInst<
15617 (outs DoubleRegs:$Rdd32),
15618 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15619 "$Rdd32 = mpy($Rs32.l,$Rt32.l):<<1:rnd",
15620 tc_8fd5f294, TypeM>, Enc_be32a5 {
15621 let Inst{7-5} = 0b000;
15622 let Inst{13-13} = 0b0;
15623 let Inst{31-21} = 0b11100100101;
15624 let prefersSlot3 = 1;
15625 }
15626 def M2_mpyi : HInst<
15627 (outs IntRegs:$Rd32),
15628 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15629 "$Rd32 = mpyi($Rs32,$Rt32)",
15630 tc_8fd5f294, TypeM>, Enc_5ab2be, ImmRegRel {
15631 let Inst{7-5} = 0b000;
15632 let Inst{13-13} = 0b0;
15633 let Inst{31-21} = 0b11101101000;
15634 let hasNewValue = 1;
15635 let opNewValue = 0;
15636 let prefersSlot3 = 1;
15637 let CextOpcode = "M2_mpyi";
15638 let InputType = "reg";
15639 }
15640 def M2_mpysin : HInst<
15641 (outs IntRegs:$Rd32),
15642 (ins IntRegs:$Rs32, u8_0Imm:$Ii),
15643 "$Rd32 = -mpyi($Rs32,#$Ii)",
15644 tc_1853ea6d, TypeM>, Enc_b8c967 {
15645 let Inst{13-13} = 0b0;
15646 let Inst{31-21} = 0b11100000100;
15647 let hasNewValue = 1;
15648 let opNewValue = 0;
15649 let prefersSlot3 = 1;
15650 }
15651 def M2_mpysip : HInst<
15652 (outs IntRegs:$Rd32),
15653 (ins IntRegs:$Rs32, u32_0Imm:$Ii),
15654 "$Rd32 = +mpyi($Rs32,#$Ii)",
15655 tc_1853ea6d, TypeM>, Enc_b8c967 {
15656 let Inst{13-13} = 0b0;
15657 let Inst{31-21} = 0b11100000000;
15658 let hasNewValue = 1;
15659 let opNewValue = 0;
15660 let prefersSlot3 = 1;
15661 let isExtendable = 1;
15662 let opExtendable = 2;
15663 let isExtentSigned = 0;
15664 let opExtentBits = 8;
15665 let opExtentAlign = 0;
15666 }
15667 def M2_mpysmi : HInst<
15668 (outs IntRegs:$Rd32),
15669 (ins IntRegs:$Rs32, m32_0Imm:$Ii),
15670 "$Rd32 = mpyi($Rs32,#$Ii)",
15671 tc_1853ea6d, TypeM>, ImmRegRel {
15672 let hasNewValue = 1;
15673 let opNewValue = 0;
15674 let CextOpcode = "M2_mpyi";
15675 let InputType = "imm";
15676 let isPseudo = 1;
15677 let isExtendable = 1;
15678 let opExtendable = 2;
15679 let isExtentSigned = 1;
15680 let opExtentBits = 9;
15681 let opExtentAlign = 0;
15682 }
15683 def M2_mpysu_up : HInst<
15684 (outs IntRegs:$Rd32),
15685 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15686 "$Rd32 = mpysu($Rs32,$Rt32)",
15687 tc_8fd5f294, TypeM>, Enc_5ab2be {
15688 let Inst{7-5} = 0b001;
15689 let Inst{13-13} = 0b0;
15690 let Inst{31-21} = 0b11101101011;
15691 let hasNewValue = 1;
15692 let opNewValue = 0;
15693 let prefersSlot3 = 1;
15694 }
15695 def M2_mpyu_acc_hh_s0 : HInst<
15696 (outs IntRegs:$Rx32),
15697 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15698 "$Rx32 += mpyu($Rs32.h,$Rt32.h)",
15699 tc_e913dc32, TypeM>, Enc_2ae154 {
15700 let Inst{7-5} = 0b011;
15701 let Inst{13-13} = 0b0;
15702 let Inst{31-21} = 0b11101110010;
15703 let hasNewValue = 1;
15704 let opNewValue = 0;
15705 let prefersSlot3 = 1;
15706 let Constraints = "$Rx32 = $Rx32in";
15707 }
15708 def M2_mpyu_acc_hh_s1 : HInst<
15709 (outs IntRegs:$Rx32),
15710 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15711 "$Rx32 += mpyu($Rs32.h,$Rt32.h):<<1",
15712 tc_e913dc32, TypeM>, Enc_2ae154 {
15713 let Inst{7-5} = 0b011;
15714 let Inst{13-13} = 0b0;
15715 let Inst{31-21} = 0b11101110110;
15716 let hasNewValue = 1;
15717 let opNewValue = 0;
15718 let prefersSlot3 = 1;
15719 let Constraints = "$Rx32 = $Rx32in";
15720 }
15721 def M2_mpyu_acc_hl_s0 : HInst<
15722 (outs IntRegs:$Rx32),
15723 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15724 "$Rx32 += mpyu($Rs32.h,$Rt32.l)",
15725 tc_e913dc32, TypeM>, Enc_2ae154 {
15726 let Inst{7-5} = 0b010;
15727 let Inst{13-13} = 0b0;
15728 let Inst{31-21} = 0b11101110010;
15729 let hasNewValue = 1;
15730 let opNewValue = 0;
15731 let prefersSlot3 = 1;
15732 let Constraints = "$Rx32 = $Rx32in";
15733 }
15734 def M2_mpyu_acc_hl_s1 : HInst<
15735 (outs IntRegs:$Rx32),
15736 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15737 "$Rx32 += mpyu($Rs32.h,$Rt32.l):<<1",
15738 tc_e913dc32, TypeM>, Enc_2ae154 {
15739 let Inst{7-5} = 0b010;
15740 let Inst{13-13} = 0b0;
15741 let Inst{31-21} = 0b11101110110;
15742 let hasNewValue = 1;
15743 let opNewValue = 0;
15744 let prefersSlot3 = 1;
15745 let Constraints = "$Rx32 = $Rx32in";
15746 }
15747 def M2_mpyu_acc_lh_s0 : HInst<
15748 (outs IntRegs:$Rx32),
15749 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15750 "$Rx32 += mpyu($Rs32.l,$Rt32.h)",
15751 tc_e913dc32, TypeM>, Enc_2ae154 {
15752 let Inst{7-5} = 0b001;
15753 let Inst{13-13} = 0b0;
15754 let Inst{31-21} = 0b11101110010;
15755 let hasNewValue = 1;
15756 let opNewValue = 0;
15757 let prefersSlot3 = 1;
15758 let Constraints = "$Rx32 = $Rx32in";
15759 }
15760 def M2_mpyu_acc_lh_s1 : HInst<
15761 (outs IntRegs:$Rx32),
15762 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15763 "$Rx32 += mpyu($Rs32.l,$Rt32.h):<<1",
15764 tc_e913dc32, TypeM>, Enc_2ae154 {
15765 let Inst{7-5} = 0b001;
15766 let Inst{13-13} = 0b0;
15767 let Inst{31-21} = 0b11101110110;
15768 let hasNewValue = 1;
15769 let opNewValue = 0;
15770 let prefersSlot3 = 1;
15771 let Constraints = "$Rx32 = $Rx32in";
15772 }
15773 def M2_mpyu_acc_ll_s0 : HInst<
15774 (outs IntRegs:$Rx32),
15775 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15776 "$Rx32 += mpyu($Rs32.l,$Rt32.l)",
15777 tc_e913dc32, TypeM>, Enc_2ae154 {
15778 let Inst{7-5} = 0b000;
15779 let Inst{13-13} = 0b0;
15780 let Inst{31-21} = 0b11101110010;
15781 let hasNewValue = 1;
15782 let opNewValue = 0;
15783 let prefersSlot3 = 1;
15784 let Constraints = "$Rx32 = $Rx32in";
15785 }
15786 def M2_mpyu_acc_ll_s1 : HInst<
15787 (outs IntRegs:$Rx32),
15788 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15789 "$Rx32 += mpyu($Rs32.l,$Rt32.l):<<1",
15790 tc_e913dc32, TypeM>, Enc_2ae154 {
15791 let Inst{7-5} = 0b000;
15792 let Inst{13-13} = 0b0;
15793 let Inst{31-21} = 0b11101110110;
15794 let hasNewValue = 1;
15795 let opNewValue = 0;
15796 let prefersSlot3 = 1;
15797 let Constraints = "$Rx32 = $Rx32in";
15798 }
15799 def M2_mpyu_hh_s0 : HInst<
15800 (outs IntRegs:$Rd32),
15801 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15802 "$Rd32 = mpyu($Rs32.h,$Rt32.h)",
15803 tc_8fd5f294, TypeM>, Enc_5ab2be {
15804 let Inst{7-5} = 0b011;
15805 let Inst{13-13} = 0b0;
15806 let Inst{31-21} = 0b11101100010;
15807 let hasNewValue = 1;
15808 let opNewValue = 0;
15809 let prefersSlot3 = 1;
15810 }
15811 def M2_mpyu_hh_s1 : HInst<
15812 (outs IntRegs:$Rd32),
15813 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15814 "$Rd32 = mpyu($Rs32.h,$Rt32.h):<<1",
15815 tc_8fd5f294, TypeM>, Enc_5ab2be {
15816 let Inst{7-5} = 0b011;
15817 let Inst{13-13} = 0b0;
15818 let Inst{31-21} = 0b11101100110;
15819 let hasNewValue = 1;
15820 let opNewValue = 0;
15821 let prefersSlot3 = 1;
15822 }
15823 def M2_mpyu_hl_s0 : HInst<
15824 (outs IntRegs:$Rd32),
15825 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15826 "$Rd32 = mpyu($Rs32.h,$Rt32.l)",
15827 tc_8fd5f294, TypeM>, Enc_5ab2be {
15828 let Inst{7-5} = 0b010;
15829 let Inst{13-13} = 0b0;
15830 let Inst{31-21} = 0b11101100010;
15831 let hasNewValue = 1;
15832 let opNewValue = 0;
15833 let prefersSlot3 = 1;
15834 }
15835 def M2_mpyu_hl_s1 : HInst<
15836 (outs IntRegs:$Rd32),
15837 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15838 "$Rd32 = mpyu($Rs32.h,$Rt32.l):<<1",
15839 tc_8fd5f294, TypeM>, Enc_5ab2be {
15840 let Inst{7-5} = 0b010;
15841 let Inst{13-13} = 0b0;
15842 let Inst{31-21} = 0b11101100110;
15843 let hasNewValue = 1;
15844 let opNewValue = 0;
15845 let prefersSlot3 = 1;
15846 }
15847 def M2_mpyu_lh_s0 : HInst<
15848 (outs IntRegs:$Rd32),
15849 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15850 "$Rd32 = mpyu($Rs32.l,$Rt32.h)",
15851 tc_8fd5f294, TypeM>, Enc_5ab2be {
15852 let Inst{7-5} = 0b001;
15853 let Inst{13-13} = 0b0;
15854 let Inst{31-21} = 0b11101100010;
15855 let hasNewValue = 1;
15856 let opNewValue = 0;
15857 let prefersSlot3 = 1;
15858 }
15859 def M2_mpyu_lh_s1 : HInst<
15860 (outs IntRegs:$Rd32),
15861 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15862 "$Rd32 = mpyu($Rs32.l,$Rt32.h):<<1",
15863 tc_8fd5f294, TypeM>, Enc_5ab2be {
15864 let Inst{7-5} = 0b001;
15865 let Inst{13-13} = 0b0;
15866 let Inst{31-21} = 0b11101100110;
15867 let hasNewValue = 1;
15868 let opNewValue = 0;
15869 let prefersSlot3 = 1;
15870 }
15871 def M2_mpyu_ll_s0 : HInst<
15872 (outs IntRegs:$Rd32),
15873 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15874 "$Rd32 = mpyu($Rs32.l,$Rt32.l)",
15875 tc_8fd5f294, TypeM>, Enc_5ab2be {
15876 let Inst{7-5} = 0b000;
15877 let Inst{13-13} = 0b0;
15878 let Inst{31-21} = 0b11101100010;
15879 let hasNewValue = 1;
15880 let opNewValue = 0;
15881 let prefersSlot3 = 1;
15882 }
15883 def M2_mpyu_ll_s1 : HInst<
15884 (outs IntRegs:$Rd32),
15885 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15886 "$Rd32 = mpyu($Rs32.l,$Rt32.l):<<1",
15887 tc_8fd5f294, TypeM>, Enc_5ab2be {
15888 let Inst{7-5} = 0b000;
15889 let Inst{13-13} = 0b0;
15890 let Inst{31-21} = 0b11101100110;
15891 let hasNewValue = 1;
15892 let opNewValue = 0;
15893 let prefersSlot3 = 1;
15894 }
15895 def M2_mpyu_nac_hh_s0 : HInst<
15896 (outs IntRegs:$Rx32),
15897 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15898 "$Rx32 -= mpyu($Rs32.h,$Rt32.h)",
15899 tc_e913dc32, TypeM>, Enc_2ae154 {
15900 let Inst{7-5} = 0b011;
15901 let Inst{13-13} = 0b0;
15902 let Inst{31-21} = 0b11101110011;
15903 let hasNewValue = 1;
15904 let opNewValue = 0;
15905 let prefersSlot3 = 1;
15906 let Constraints = "$Rx32 = $Rx32in";
15907 }
15908 def M2_mpyu_nac_hh_s1 : HInst<
15909 (outs IntRegs:$Rx32),
15910 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15911 "$Rx32 -= mpyu($Rs32.h,$Rt32.h):<<1",
15912 tc_e913dc32, TypeM>, Enc_2ae154 {
15913 let Inst{7-5} = 0b011;
15914 let Inst{13-13} = 0b0;
15915 let Inst{31-21} = 0b11101110111;
15916 let hasNewValue = 1;
15917 let opNewValue = 0;
15918 let prefersSlot3 = 1;
15919 let Constraints = "$Rx32 = $Rx32in";
15920 }
15921 def M2_mpyu_nac_hl_s0 : HInst<
15922 (outs IntRegs:$Rx32),
15923 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15924 "$Rx32 -= mpyu($Rs32.h,$Rt32.l)",
15925 tc_e913dc32, TypeM>, Enc_2ae154 {
15926 let Inst{7-5} = 0b010;
15927 let Inst{13-13} = 0b0;
15928 let Inst{31-21} = 0b11101110011;
15929 let hasNewValue = 1;
15930 let opNewValue = 0;
15931 let prefersSlot3 = 1;
15932 let Constraints = "$Rx32 = $Rx32in";
15933 }
15934 def M2_mpyu_nac_hl_s1 : HInst<
15935 (outs IntRegs:$Rx32),
15936 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15937 "$Rx32 -= mpyu($Rs32.h,$Rt32.l):<<1",
15938 tc_e913dc32, TypeM>, Enc_2ae154 {
15939 let Inst{7-5} = 0b010;
15940 let Inst{13-13} = 0b0;
15941 let Inst{31-21} = 0b11101110111;
15942 let hasNewValue = 1;
15943 let opNewValue = 0;
15944 let prefersSlot3 = 1;
15945 let Constraints = "$Rx32 = $Rx32in";
15946 }
15947 def M2_mpyu_nac_lh_s0 : HInst<
15948 (outs IntRegs:$Rx32),
15949 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15950 "$Rx32 -= mpyu($Rs32.l,$Rt32.h)",
15951 tc_e913dc32, TypeM>, Enc_2ae154 {
15952 let Inst{7-5} = 0b001;
15953 let Inst{13-13} = 0b0;
15954 let Inst{31-21} = 0b11101110011;
15955 let hasNewValue = 1;
15956 let opNewValue = 0;
15957 let prefersSlot3 = 1;
15958 let Constraints = "$Rx32 = $Rx32in";
15959 }
15960 def M2_mpyu_nac_lh_s1 : HInst<
15961 (outs IntRegs:$Rx32),
15962 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15963 "$Rx32 -= mpyu($Rs32.l,$Rt32.h):<<1",
15964 tc_e913dc32, TypeM>, Enc_2ae154 {
15965 let Inst{7-5} = 0b001;
15966 let Inst{13-13} = 0b0;
15967 let Inst{31-21} = 0b11101110111;
15968 let hasNewValue = 1;
15969 let opNewValue = 0;
15970 let prefersSlot3 = 1;
15971 let Constraints = "$Rx32 = $Rx32in";
15972 }
15973 def M2_mpyu_nac_ll_s0 : HInst<
15974 (outs IntRegs:$Rx32),
15975 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15976 "$Rx32 -= mpyu($Rs32.l,$Rt32.l)",
15977 tc_e913dc32, TypeM>, Enc_2ae154 {
15978 let Inst{7-5} = 0b000;
15979 let Inst{13-13} = 0b0;
15980 let Inst{31-21} = 0b11101110011;
15981 let hasNewValue = 1;
15982 let opNewValue = 0;
15983 let prefersSlot3 = 1;
15984 let Constraints = "$Rx32 = $Rx32in";
15985 }
15986 def M2_mpyu_nac_ll_s1 : HInst<
15987 (outs IntRegs:$Rx32),
15988 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15989 "$Rx32 -= mpyu($Rs32.l,$Rt32.l):<<1",
15990 tc_e913dc32, TypeM>, Enc_2ae154 {
15991 let Inst{7-5} = 0b000;
15992 let Inst{13-13} = 0b0;
15993 let Inst{31-21} = 0b11101110111;
15994 let hasNewValue = 1;
15995 let opNewValue = 0;
15996 let prefersSlot3 = 1;
15997 let Constraints = "$Rx32 = $Rx32in";
15998 }
15999 def M2_mpyu_up : HInst<
16000 (outs IntRegs:$Rd32),
16001 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16002 "$Rd32 = mpyu($Rs32,$Rt32)",
16003 tc_8fd5f294, TypeM>, Enc_5ab2be {
16004 let Inst{7-5} = 0b001;
16005 let Inst{13-13} = 0b0;
16006 let Inst{31-21} = 0b11101101010;
16007 let hasNewValue = 1;
16008 let opNewValue = 0;
16009 let prefersSlot3 = 1;
16010 }
16011 def M2_mpyud_acc_hh_s0 : HInst<
16012 (outs DoubleRegs:$Rxx32),
16013 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16014 "$Rxx32 += mpyu($Rs32.h,$Rt32.h)",
16015 tc_e913dc32, TypeM>, Enc_61f0b0 {
16016 let Inst{7-5} = 0b011;
16017 let Inst{13-13} = 0b0;
16018 let Inst{31-21} = 0b11100110010;
16019 let prefersSlot3 = 1;
16020 let Constraints = "$Rxx32 = $Rxx32in";
16021 }
16022 def M2_mpyud_acc_hh_s1 : HInst<
16023 (outs DoubleRegs:$Rxx32),
16024 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16025 "$Rxx32 += mpyu($Rs32.h,$Rt32.h):<<1",
16026 tc_e913dc32, TypeM>, Enc_61f0b0 {
16027 let Inst{7-5} = 0b011;
16028 let Inst{13-13} = 0b0;
16029 let Inst{31-21} = 0b11100110110;
16030 let prefersSlot3 = 1;
16031 let Constraints = "$Rxx32 = $Rxx32in";
16032 }
16033 def M2_mpyud_acc_hl_s0 : HInst<
16034 (outs DoubleRegs:$Rxx32),
16035 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16036 "$Rxx32 += mpyu($Rs32.h,$Rt32.l)",
16037 tc_e913dc32, TypeM>, Enc_61f0b0 {
16038 let Inst{7-5} = 0b010;
16039 let Inst{13-13} = 0b0;
16040 let Inst{31-21} = 0b11100110010;
16041 let prefersSlot3 = 1;
16042 let Constraints = "$Rxx32 = $Rxx32in";
16043 }
16044 def M2_mpyud_acc_hl_s1 : HInst<
16045 (outs DoubleRegs:$Rxx32),
16046 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16047 "$Rxx32 += mpyu($Rs32.h,$Rt32.l):<<1",
16048 tc_e913dc32, TypeM>, Enc_61f0b0 {
16049 let Inst{7-5} = 0b010;
16050 let Inst{13-13} = 0b0;
16051 let Inst{31-21} = 0b11100110110;
16052 let prefersSlot3 = 1;
16053 let Constraints = "$Rxx32 = $Rxx32in";
16054 }
16055 def M2_mpyud_acc_lh_s0 : HInst<
16056 (outs DoubleRegs:$Rxx32),
16057 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16058 "$Rxx32 += mpyu($Rs32.l,$Rt32.h)",
16059 tc_e913dc32, TypeM>, Enc_61f0b0 {
16060 let Inst{7-5} = 0b001;
16061 let Inst{13-13} = 0b0;
16062 let Inst{31-21} = 0b11100110010;
16063 let prefersSlot3 = 1;
16064 let Constraints = "$Rxx32 = $Rxx32in";
16065 }
16066 def M2_mpyud_acc_lh_s1 : HInst<
16067 (outs DoubleRegs:$Rxx32),
16068 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16069 "$Rxx32 += mpyu($Rs32.l,$Rt32.h):<<1",
16070 tc_e913dc32, TypeM>, Enc_61f0b0 {
16071 let Inst{7-5} = 0b001;
16072 let Inst{13-13} = 0b0;
16073 let Inst{31-21} = 0b11100110110;
16074 let prefersSlot3 = 1;
16075 let Constraints = "$Rxx32 = $Rxx32in";
16076 }
16077 def M2_mpyud_acc_ll_s0 : HInst<
16078 (outs DoubleRegs:$Rxx32),
16079 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16080 "$Rxx32 += mpyu($Rs32.l,$Rt32.l)",
16081 tc_e913dc32, TypeM>, Enc_61f0b0 {
16082 let Inst{7-5} = 0b000;
16083 let Inst{13-13} = 0b0;
16084 let Inst{31-21} = 0b11100110010;
16085 let prefersSlot3 = 1;
16086 let Constraints = "$Rxx32 = $Rxx32in";
16087 }
16088 def M2_mpyud_acc_ll_s1 : HInst<
16089 (outs DoubleRegs:$Rxx32),
16090 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16091 "$Rxx32 += mpyu($Rs32.l,$Rt32.l):<<1",
16092 tc_e913dc32, TypeM>, Enc_61f0b0 {
16093 let Inst{7-5} = 0b000;
16094 let Inst{13-13} = 0b0;
16095 let Inst{31-21} = 0b11100110110;
16096 let prefersSlot3 = 1;
16097 let Constraints = "$Rxx32 = $Rxx32in";
16098 }
16099 def M2_mpyud_hh_s0 : HInst<
16100 (outs DoubleRegs:$Rdd32),
16101 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16102 "$Rdd32 = mpyu($Rs32.h,$Rt32.h)",
16103 tc_8fd5f294, TypeM>, Enc_be32a5 {
16104 let Inst{7-5} = 0b011;
16105 let Inst{13-13} = 0b0;
16106 let Inst{31-21} = 0b11100100010;
16107 let prefersSlot3 = 1;
16108 }
16109 def M2_mpyud_hh_s1 : HInst<
16110 (outs DoubleRegs:$Rdd32),
16111 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16112 "$Rdd32 = mpyu($Rs32.h,$Rt32.h):<<1",
16113 tc_8fd5f294, TypeM>, Enc_be32a5 {
16114 let Inst{7-5} = 0b011;
16115 let Inst{13-13} = 0b0;
16116 let Inst{31-21} = 0b11100100110;
16117 let prefersSlot3 = 1;
16118 }
16119 def M2_mpyud_hl_s0 : HInst<
16120 (outs DoubleRegs:$Rdd32),
16121 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16122 "$Rdd32 = mpyu($Rs32.h,$Rt32.l)",
16123 tc_8fd5f294, TypeM>, Enc_be32a5 {
16124 let Inst{7-5} = 0b010;
16125 let Inst{13-13} = 0b0;
16126 let Inst{31-21} = 0b11100100010;
16127 let prefersSlot3 = 1;
16128 }
16129 def M2_mpyud_hl_s1 : HInst<
16130 (outs DoubleRegs:$Rdd32),
16131 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16132 "$Rdd32 = mpyu($Rs32.h,$Rt32.l):<<1",
16133 tc_8fd5f294, TypeM>, Enc_be32a5 {
16134 let Inst{7-5} = 0b010;
16135 let Inst{13-13} = 0b0;
16136 let Inst{31-21} = 0b11100100110;
16137 let prefersSlot3 = 1;
16138 }
16139 def M2_mpyud_lh_s0 : HInst<
16140 (outs DoubleRegs:$Rdd32),
16141 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16142 "$Rdd32 = mpyu($Rs32.l,$Rt32.h)",
16143 tc_8fd5f294, TypeM>, Enc_be32a5 {
16144 let Inst{7-5} = 0b001;
16145 let Inst{13-13} = 0b0;
16146 let Inst{31-21} = 0b11100100010;
16147 let prefersSlot3 = 1;
16148 }
16149 def M2_mpyud_lh_s1 : HInst<
16150 (outs DoubleRegs:$Rdd32),
16151 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16152 "$Rdd32 = mpyu($Rs32.l,$Rt32.h):<<1",
16153 tc_8fd5f294, TypeM>, Enc_be32a5 {
16154 let Inst{7-5} = 0b001;
16155 let Inst{13-13} = 0b0;
16156 let Inst{31-21} = 0b11100100110;
16157 let prefersSlot3 = 1;
16158 }
16159 def M2_mpyud_ll_s0 : HInst<
16160 (outs DoubleRegs:$Rdd32),
16161 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16162 "$Rdd32 = mpyu($Rs32.l,$Rt32.l)",
16163 tc_8fd5f294, TypeM>, Enc_be32a5 {
16164 let Inst{7-5} = 0b000;
16165 let Inst{13-13} = 0b0;
16166 let Inst{31-21} = 0b11100100010;
16167 let prefersSlot3 = 1;
16168 }
16169 def M2_mpyud_ll_s1 : HInst<
16170 (outs DoubleRegs:$Rdd32),
16171 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16172 "$Rdd32 = mpyu($Rs32.l,$Rt32.l):<<1",
16173 tc_8fd5f294, TypeM>, Enc_be32a5 {
16174 let Inst{7-5} = 0b000;
16175 let Inst{13-13} = 0b0;
16176 let Inst{31-21} = 0b11100100110;
16177 let prefersSlot3 = 1;
16178 }
16179 def M2_mpyud_nac_hh_s0 : HInst<
16180 (outs DoubleRegs:$Rxx32),
16181 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16182 "$Rxx32 -= mpyu($Rs32.h,$Rt32.h)",
16183 tc_e913dc32, TypeM>, Enc_61f0b0 {
16184 let Inst{7-5} = 0b011;
16185 let Inst{13-13} = 0b0;
16186 let Inst{31-21} = 0b11100110011;
16187 let prefersSlot3 = 1;
16188 let Constraints = "$Rxx32 = $Rxx32in";
16189 }
16190 def M2_mpyud_nac_hh_s1 : HInst<
16191 (outs DoubleRegs:$Rxx32),
16192 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16193 "$Rxx32 -= mpyu($Rs32.h,$Rt32.h):<<1",
16194 tc_e913dc32, TypeM>, Enc_61f0b0 {
16195 let Inst{7-5} = 0b011;
16196 let Inst{13-13} = 0b0;
16197 let Inst{31-21} = 0b11100110111;
16198 let prefersSlot3 = 1;
16199 let Constraints = "$Rxx32 = $Rxx32in";
16200 }
16201 def M2_mpyud_nac_hl_s0 : HInst<
16202 (outs DoubleRegs:$Rxx32),
16203 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16204 "$Rxx32 -= mpyu($Rs32.h,$Rt32.l)",
16205 tc_e913dc32, TypeM>, Enc_61f0b0 {
16206 let Inst{7-5} = 0b010;
16207 let Inst{13-13} = 0b0;
16208 let Inst{31-21} = 0b11100110011;
16209 let prefersSlot3 = 1;
16210 let Constraints = "$Rxx32 = $Rxx32in";
16211 }
16212 def M2_mpyud_nac_hl_s1 : HInst<
16213 (outs DoubleRegs:$Rxx32),
16214 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16215 "$Rxx32 -= mpyu($Rs32.h,$Rt32.l):<<1",
16216 tc_e913dc32, TypeM>, Enc_61f0b0 {
16217 let Inst{7-5} = 0b010;
16218 let Inst{13-13} = 0b0;
16219 let Inst{31-21} = 0b11100110111;
16220 let prefersSlot3 = 1;
16221 let Constraints = "$Rxx32 = $Rxx32in";
16222 }
16223 def M2_mpyud_nac_lh_s0 : HInst<
16224 (outs DoubleRegs:$Rxx32),
16225 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16226 "$Rxx32 -= mpyu($Rs32.l,$Rt32.h)",
16227 tc_e913dc32, TypeM>, Enc_61f0b0 {
16228 let Inst{7-5} = 0b001;
16229 let Inst{13-13} = 0b0;
16230 let Inst{31-21} = 0b11100110011;
16231 let prefersSlot3 = 1;
16232 let Constraints = "$Rxx32 = $Rxx32in";
16233 }
16234 def M2_mpyud_nac_lh_s1 : HInst<
16235 (outs DoubleRegs:$Rxx32),
16236 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16237 "$Rxx32 -= mpyu($Rs32.l,$Rt32.h):<<1",
16238 tc_e913dc32, TypeM>, Enc_61f0b0 {
16239 let Inst{7-5} = 0b001;
16240 let Inst{13-13} = 0b0;
16241 let Inst{31-21} = 0b11100110111;
16242 let prefersSlot3 = 1;
16243 let Constraints = "$Rxx32 = $Rxx32in";
16244 }
16245 def M2_mpyud_nac_ll_s0 : HInst<
16246 (outs DoubleRegs:$Rxx32),
16247 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16248 "$Rxx32 -= mpyu($Rs32.l,$Rt32.l)",
16249 tc_e913dc32, TypeM>, Enc_61f0b0 {
16250 let Inst{7-5} = 0b000;
16251 let Inst{13-13} = 0b0;
16252 let Inst{31-21} = 0b11100110011;
16253 let prefersSlot3 = 1;
16254 let Constraints = "$Rxx32 = $Rxx32in";
16255 }
16256 def M2_mpyud_nac_ll_s1 : HInst<
16257 (outs DoubleRegs:$Rxx32),
16258 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16259 "$Rxx32 -= mpyu($Rs32.l,$Rt32.l):<<1",
16260 tc_e913dc32, TypeM>, Enc_61f0b0 {
16261 let Inst{7-5} = 0b000;
16262 let Inst{13-13} = 0b0;
16263 let Inst{31-21} = 0b11100110111;
16264 let prefersSlot3 = 1;
16265 let Constraints = "$Rxx32 = $Rxx32in";
16266 }
16267 def M2_mpyui : HInst<
16268 (outs IntRegs:$Rd32),
16269 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16270 "$Rd32 = mpyui($Rs32,$Rt32)",
16271 tc_8fd5f294, TypeM> {
16272 let hasNewValue = 1;
16273 let opNewValue = 0;
16274 let isPseudo = 1;
16275 let isCodeGenOnly = 1;
16276 }
16277 def M2_nacci : HInst<
16278 (outs IntRegs:$Rx32),
16279 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16280 "$Rx32 -= add($Rs32,$Rt32)",
16281 tc_c74f796f, TypeM>, Enc_2ae154 {
16282 let Inst{7-5} = 0b001;
16283 let Inst{13-13} = 0b0;
16284 let Inst{31-21} = 0b11101111100;
16285 let hasNewValue = 1;
16286 let opNewValue = 0;
16287 let prefersSlot3 = 1;
16288 let InputType = "reg";
16289 let Constraints = "$Rx32 = $Rx32in";
16290 }
16291 def M2_naccii : HInst<
16292 (outs IntRegs:$Rx32),
16293 (ins IntRegs:$Rx32in, IntRegs:$Rs32, s32_0Imm:$Ii),
16294 "$Rx32 -= add($Rs32,#$Ii)",
16295 tc_c74f796f, TypeM>, Enc_c90aca {
16296 let Inst{13-13} = 0b0;
16297 let Inst{31-21} = 0b11100010100;
16298 let hasNewValue = 1;
16299 let opNewValue = 0;
16300 let prefersSlot3 = 1;
16301 let InputType = "imm";
16302 let isExtendable = 1;
16303 let opExtendable = 3;
16304 let isExtentSigned = 1;
16305 let opExtentBits = 8;
16306 let opExtentAlign = 0;
16307 let Constraints = "$Rx32 = $Rx32in";
16308 }
16309 def M2_subacc : HInst<
16310 (outs IntRegs:$Rx32),
16311 (ins IntRegs:$Rx32in, IntRegs:$Rt32, IntRegs:$Rs32),
16312 "$Rx32 += sub($Rt32,$Rs32)",
16313 tc_c74f796f, TypeM>, Enc_a568d4 {
16314 let Inst{7-5} = 0b011;
16315 let Inst{13-13} = 0b0;
16316 let Inst{31-21} = 0b11101111000;
16317 let hasNewValue = 1;
16318 let opNewValue = 0;
16319 let prefersSlot3 = 1;
16320 let InputType = "reg";
16321 let Constraints = "$Rx32 = $Rx32in";
16322 }
16323 def M2_vabsdiffh : HInst<
16324 (outs DoubleRegs:$Rdd32),
16325 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
16326 "$Rdd32 = vabsdiffh($Rtt32,$Rss32)",
16327 tc_2b6f77c6, TypeM>, Enc_ea23e4 {
16328 let Inst{7-5} = 0b000;
16329 let Inst{13-13} = 0b0;
16330 let Inst{31-21} = 0b11101000011;
16331 let prefersSlot3 = 1;
16332 }
16333 def M2_vabsdiffw : HInst<
16334 (outs DoubleRegs:$Rdd32),
16335 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
16336 "$Rdd32 = vabsdiffw($Rtt32,$Rss32)",
16337 tc_2b6f77c6, TypeM>, Enc_ea23e4 {
16338 let Inst{7-5} = 0b000;
16339 let Inst{13-13} = 0b0;
16340 let Inst{31-21} = 0b11101000001;
16341 let prefersSlot3 = 1;
16342 }
16343 def M2_vcmac_s0_sat_i : HInst<
16344 (outs DoubleRegs:$Rxx32),
16345 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16346 "$Rxx32 += vcmpyi($Rss32,$Rtt32):sat",
16347 tc_e913dc32, TypeM>, Enc_88c16c {
16348 let Inst{7-5} = 0b100;
16349 let Inst{13-13} = 0b0;
16350 let Inst{31-21} = 0b11101010010;
16351 let prefersSlot3 = 1;
16352 let Defs = [USR_OVF];
16353 let Constraints = "$Rxx32 = $Rxx32in";
16354 }
16355 def M2_vcmac_s0_sat_r : HInst<
16356 (outs DoubleRegs:$Rxx32),
16357 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16358 "$Rxx32 += vcmpyr($Rss32,$Rtt32):sat",
16359 tc_e913dc32, TypeM>, Enc_88c16c {
16360 let Inst{7-5} = 0b100;
16361 let Inst{13-13} = 0b0;
16362 let Inst{31-21} = 0b11101010001;
16363 let prefersSlot3 = 1;
16364 let Defs = [USR_OVF];
16365 let Constraints = "$Rxx32 = $Rxx32in";
16366 }
16367 def M2_vcmpy_s0_sat_i : HInst<
16368 (outs DoubleRegs:$Rdd32),
16369 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16370 "$Rdd32 = vcmpyi($Rss32,$Rtt32):sat",
16371 tc_8fd5f294, TypeM>, Enc_a56825 {
16372 let Inst{7-5} = 0b110;
16373 let Inst{13-13} = 0b0;
16374 let Inst{31-21} = 0b11101000010;
16375 let prefersSlot3 = 1;
16376 let Defs = [USR_OVF];
16377 }
16378 def M2_vcmpy_s0_sat_r : HInst<
16379 (outs DoubleRegs:$Rdd32),
16380 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16381 "$Rdd32 = vcmpyr($Rss32,$Rtt32):sat",
16382 tc_8fd5f294, TypeM>, Enc_a56825 {
16383 let Inst{7-5} = 0b110;
16384 let Inst{13-13} = 0b0;
16385 let Inst{31-21} = 0b11101000001;
16386 let prefersSlot3 = 1;
16387 let Defs = [USR_OVF];
16388 }
16389 def M2_vcmpy_s1_sat_i : HInst<
16390 (outs DoubleRegs:$Rdd32),
16391 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16392 "$Rdd32 = vcmpyi($Rss32,$Rtt32):<<1:sat",
16393 tc_8fd5f294, TypeM>, Enc_a56825 {
16394 let Inst{7-5} = 0b110;
16395 let Inst{13-13} = 0b0;
16396 let Inst{31-21} = 0b11101000110;
16397 let prefersSlot3 = 1;
16398 let Defs = [USR_OVF];
16399 }
16400 def M2_vcmpy_s1_sat_r : HInst<
16401 (outs DoubleRegs:$Rdd32),
16402 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16403 "$Rdd32 = vcmpyr($Rss32,$Rtt32):<<1:sat",
16404 tc_8fd5f294, TypeM>, Enc_a56825 {
16405 let Inst{7-5} = 0b110;
16406 let Inst{13-13} = 0b0;
16407 let Inst{31-21} = 0b11101000101;
16408 let prefersSlot3 = 1;
16409 let Defs = [USR_OVF];
16410 }
16411 def M2_vdmacs_s0 : HInst<
16412 (outs DoubleRegs:$Rxx32),
16413 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16414 "$Rxx32 += vdmpy($Rss32,$Rtt32):sat",
16415 tc_e913dc32, TypeM>, Enc_88c16c {
16416 let Inst{7-5} = 0b100;
16417 let Inst{13-13} = 0b0;
16418 let Inst{31-21} = 0b11101010000;
16419 let prefersSlot3 = 1;
16420 let Defs = [USR_OVF];
16421 let Constraints = "$Rxx32 = $Rxx32in";
16422 }
16423 def M2_vdmacs_s1 : HInst<
16424 (outs DoubleRegs:$Rxx32),
16425 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16426 "$Rxx32 += vdmpy($Rss32,$Rtt32):<<1:sat",
16427 tc_e913dc32, TypeM>, Enc_88c16c {
16428 let Inst{7-5} = 0b100;
16429 let Inst{13-13} = 0b0;
16430 let Inst{31-21} = 0b11101010100;
16431 let prefersSlot3 = 1;
16432 let Defs = [USR_OVF];
16433 let Constraints = "$Rxx32 = $Rxx32in";
16434 }
16435 def M2_vdmpyrs_s0 : HInst<
16436 (outs IntRegs:$Rd32),
16437 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16438 "$Rd32 = vdmpy($Rss32,$Rtt32):rnd:sat",
16439 tc_8fd5f294, TypeM>, Enc_d2216a {
16440 let Inst{7-5} = 0b000;
16441 let Inst{13-13} = 0b0;
16442 let Inst{31-21} = 0b11101001000;
16443 let hasNewValue = 1;
16444 let opNewValue = 0;
16445 let prefersSlot3 = 1;
16446 let Defs = [USR_OVF];
16447 }
16448 def M2_vdmpyrs_s1 : HInst<
16449 (outs IntRegs:$Rd32),
16450 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16451 "$Rd32 = vdmpy($Rss32,$Rtt32):<<1:rnd:sat",
16452 tc_8fd5f294, TypeM>, Enc_d2216a {
16453 let Inst{7-5} = 0b000;
16454 let Inst{13-13} = 0b0;
16455 let Inst{31-21} = 0b11101001100;
16456 let hasNewValue = 1;
16457 let opNewValue = 0;
16458 let prefersSlot3 = 1;
16459 let Defs = [USR_OVF];
16460 }
16461 def M2_vdmpys_s0 : HInst<
16462 (outs DoubleRegs:$Rdd32),
16463 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16464 "$Rdd32 = vdmpy($Rss32,$Rtt32):sat",
16465 tc_8fd5f294, TypeM>, Enc_a56825 {
16466 let Inst{7-5} = 0b100;
16467 let Inst{13-13} = 0b0;
16468 let Inst{31-21} = 0b11101000000;
16469 let prefersSlot3 = 1;
16470 let Defs = [USR_OVF];
16471 }
16472 def M2_vdmpys_s1 : HInst<
16473 (outs DoubleRegs:$Rdd32),
16474 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16475 "$Rdd32 = vdmpy($Rss32,$Rtt32):<<1:sat",
16476 tc_8fd5f294, TypeM>, Enc_a56825 {
16477 let Inst{7-5} = 0b100;
16478 let Inst{13-13} = 0b0;
16479 let Inst{31-21} = 0b11101000100;
16480 let prefersSlot3 = 1;
16481 let Defs = [USR_OVF];
16482 }
16483 def M2_vmac2 : HInst<
16484 (outs DoubleRegs:$Rxx32),
16485 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16486 "$Rxx32 += vmpyh($Rs32,$Rt32)",
16487 tc_e913dc32, TypeM>, Enc_61f0b0 {
16488 let Inst{7-5} = 0b001;
16489 let Inst{13-13} = 0b0;
16490 let Inst{31-21} = 0b11100111001;
16491 let prefersSlot3 = 1;
16492 let Constraints = "$Rxx32 = $Rxx32in";
16493 }
16494 def M2_vmac2es : HInst<
16495 (outs DoubleRegs:$Rxx32),
16496 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16497 "$Rxx32 += vmpyeh($Rss32,$Rtt32)",
16498 tc_e913dc32, TypeM>, Enc_88c16c {
16499 let Inst{7-5} = 0b010;
16500 let Inst{13-13} = 0b0;
16501 let Inst{31-21} = 0b11101010001;
16502 let prefersSlot3 = 1;
16503 let Constraints = "$Rxx32 = $Rxx32in";
16504 }
16505 def M2_vmac2es_s0 : HInst<
16506 (outs DoubleRegs:$Rxx32),
16507 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16508 "$Rxx32 += vmpyeh($Rss32,$Rtt32):sat",
16509 tc_e913dc32, TypeM>, Enc_88c16c {
16510 let Inst{7-5} = 0b110;
16511 let Inst{13-13} = 0b0;
16512 let Inst{31-21} = 0b11101010000;
16513 let prefersSlot3 = 1;
16514 let Defs = [USR_OVF];
16515 let Constraints = "$Rxx32 = $Rxx32in";
16516 }
16517 def M2_vmac2es_s1 : HInst<
16518 (outs DoubleRegs:$Rxx32),
16519 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16520 "$Rxx32 += vmpyeh($Rss32,$Rtt32):<<1:sat",
16521 tc_e913dc32, TypeM>, Enc_88c16c {
16522 let Inst{7-5} = 0b110;
16523 let Inst{13-13} = 0b0;
16524 let Inst{31-21} = 0b11101010100;
16525 let prefersSlot3 = 1;
16526 let Defs = [USR_OVF];
16527 let Constraints = "$Rxx32 = $Rxx32in";
16528 }
16529 def M2_vmac2s_s0 : HInst<
16530 (outs DoubleRegs:$Rxx32),
16531 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16532 "$Rxx32 += vmpyh($Rs32,$Rt32):sat",
16533 tc_e913dc32, TypeM>, Enc_61f0b0 {
16534 let Inst{7-5} = 0b101;
16535 let Inst{13-13} = 0b0;
16536 let Inst{31-21} = 0b11100111000;
16537 let prefersSlot3 = 1;
16538 let Defs = [USR_OVF];
16539 let Constraints = "$Rxx32 = $Rxx32in";
16540 }
16541 def M2_vmac2s_s1 : HInst<
16542 (outs DoubleRegs:$Rxx32),
16543 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16544 "$Rxx32 += vmpyh($Rs32,$Rt32):<<1:sat",
16545 tc_e913dc32, TypeM>, Enc_61f0b0 {
16546 let Inst{7-5} = 0b101;
16547 let Inst{13-13} = 0b0;
16548 let Inst{31-21} = 0b11100111100;
16549 let prefersSlot3 = 1;
16550 let Defs = [USR_OVF];
16551 let Constraints = "$Rxx32 = $Rxx32in";
16552 }
16553 def M2_vmac2su_s0 : HInst<
16554 (outs DoubleRegs:$Rxx32),
16555 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16556 "$Rxx32 += vmpyhsu($Rs32,$Rt32):sat",
16557 tc_e913dc32, TypeM>, Enc_61f0b0 {
16558 let Inst{7-5} = 0b101;
16559 let Inst{13-13} = 0b0;
16560 let Inst{31-21} = 0b11100111011;
16561 let prefersSlot3 = 1;
16562 let Defs = [USR_OVF];
16563 let Constraints = "$Rxx32 = $Rxx32in";
16564 }
16565 def M2_vmac2su_s1 : HInst<
16566 (outs DoubleRegs:$Rxx32),
16567 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16568 "$Rxx32 += vmpyhsu($Rs32,$Rt32):<<1:sat",
16569 tc_e913dc32, TypeM>, Enc_61f0b0 {
16570 let Inst{7-5} = 0b101;
16571 let Inst{13-13} = 0b0;
16572 let Inst{31-21} = 0b11100111111;
16573 let prefersSlot3 = 1;
16574 let Defs = [USR_OVF];
16575 let Constraints = "$Rxx32 = $Rxx32in";
16576 }
16577 def M2_vmpy2es_s0 : HInst<
16578 (outs DoubleRegs:$Rdd32),
16579 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16580 "$Rdd32 = vmpyeh($Rss32,$Rtt32):sat",
16581 tc_8fd5f294, TypeM>, Enc_a56825 {
16582 let Inst{7-5} = 0b110;
16583 let Inst{13-13} = 0b0;
16584 let Inst{31-21} = 0b11101000000;
16585 let prefersSlot3 = 1;
16586 let Defs = [USR_OVF];
16587 }
16588 def M2_vmpy2es_s1 : HInst<
16589 (outs DoubleRegs:$Rdd32),
16590 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16591 "$Rdd32 = vmpyeh($Rss32,$Rtt32):<<1:sat",
16592 tc_8fd5f294, TypeM>, Enc_a56825 {
16593 let Inst{7-5} = 0b110;
16594 let Inst{13-13} = 0b0;
16595 let Inst{31-21} = 0b11101000100;
16596 let prefersSlot3 = 1;
16597 let Defs = [USR_OVF];
16598 }
16599 def M2_vmpy2s_s0 : HInst<
16600 (outs DoubleRegs:$Rdd32),
16601 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16602 "$Rdd32 = vmpyh($Rs32,$Rt32):sat",
16603 tc_8fd5f294, TypeM>, Enc_be32a5 {
16604 let Inst{7-5} = 0b101;
16605 let Inst{13-13} = 0b0;
16606 let Inst{31-21} = 0b11100101000;
16607 let prefersSlot3 = 1;
16608 let Defs = [USR_OVF];
16609 }
16610 def M2_vmpy2s_s0pack : HInst<
16611 (outs IntRegs:$Rd32),
16612 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16613 "$Rd32 = vmpyh($Rs32,$Rt32):rnd:sat",
16614 tc_8fd5f294, TypeM>, Enc_5ab2be {
16615 let Inst{7-5} = 0b111;
16616 let Inst{13-13} = 0b0;
16617 let Inst{31-21} = 0b11101101001;
16618 let hasNewValue = 1;
16619 let opNewValue = 0;
16620 let prefersSlot3 = 1;
16621 let Defs = [USR_OVF];
16622 }
16623 def M2_vmpy2s_s1 : HInst<
16624 (outs DoubleRegs:$Rdd32),
16625 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16626 "$Rdd32 = vmpyh($Rs32,$Rt32):<<1:sat",
16627 tc_8fd5f294, TypeM>, Enc_be32a5 {
16628 let Inst{7-5} = 0b101;
16629 let Inst{13-13} = 0b0;
16630 let Inst{31-21} = 0b11100101100;
16631 let prefersSlot3 = 1;
16632 let Defs = [USR_OVF];
16633 }
16634 def M2_vmpy2s_s1pack : HInst<
16635 (outs IntRegs:$Rd32),
16636 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16637 "$Rd32 = vmpyh($Rs32,$Rt32):<<1:rnd:sat",
16638 tc_8fd5f294, TypeM>, Enc_5ab2be {
16639 let Inst{7-5} = 0b111;
16640 let Inst{13-13} = 0b0;
16641 let Inst{31-21} = 0b11101101101;
16642 let hasNewValue = 1;
16643 let opNewValue = 0;
16644 let prefersSlot3 = 1;
16645 let Defs = [USR_OVF];
16646 }
16647 def M2_vmpy2su_s0 : HInst<
16648 (outs DoubleRegs:$Rdd32),
16649 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16650 "$Rdd32 = vmpyhsu($Rs32,$Rt32):sat",
16651 tc_8fd5f294, TypeM>, Enc_be32a5 {
16652 let Inst{7-5} = 0b111;
16653 let Inst{13-13} = 0b0;
16654 let Inst{31-21} = 0b11100101000;
16655 let prefersSlot3 = 1;
16656 let Defs = [USR_OVF];
16657 }
16658 def M2_vmpy2su_s1 : HInst<
16659 (outs DoubleRegs:$Rdd32),
16660 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16661 "$Rdd32 = vmpyhsu($Rs32,$Rt32):<<1:sat",
16662 tc_8fd5f294, TypeM>, Enc_be32a5 {
16663 let Inst{7-5} = 0b111;
16664 let Inst{13-13} = 0b0;
16665 let Inst{31-21} = 0b11100101100;
16666 let prefersSlot3 = 1;
16667 let Defs = [USR_OVF];
16668 }
16669 def M2_vraddh : HInst<
16670 (outs IntRegs:$Rd32),
16671 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16672 "$Rd32 = vraddh($Rss32,$Rtt32)",
16673 tc_8fd5f294, TypeM>, Enc_d2216a {
16674 let Inst{7-5} = 0b111;
16675 let Inst{13-13} = 0b0;
16676 let Inst{31-21} = 0b11101001001;
16677 let hasNewValue = 1;
16678 let opNewValue = 0;
16679 let prefersSlot3 = 1;
16680 }
16681 def M2_vradduh : HInst<
16682 (outs IntRegs:$Rd32),
16683 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16684 "$Rd32 = vradduh($Rss32,$Rtt32)",
16685 tc_8fd5f294, TypeM>, Enc_d2216a {
16686 let Inst{7-5} = 0b001;
16687 let Inst{13-13} = 0b0;
16688 let Inst{31-21} = 0b11101001000;
16689 let hasNewValue = 1;
16690 let opNewValue = 0;
16691 let prefersSlot3 = 1;
16692 }
16693 def M2_vrcmaci_s0 : HInst<
16694 (outs DoubleRegs:$Rxx32),
16695 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16696 "$Rxx32 += vrcmpyi($Rss32,$Rtt32)",
16697 tc_e913dc32, TypeM>, Enc_88c16c {
16698 let Inst{7-5} = 0b000;
16699 let Inst{13-13} = 0b0;
16700 let Inst{31-21} = 0b11101010000;
16701 let prefersSlot3 = 1;
16702 let Constraints = "$Rxx32 = $Rxx32in";
16703 }
16704 def M2_vrcmaci_s0c : HInst<
16705 (outs DoubleRegs:$Rxx32),
16706 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16707 "$Rxx32 += vrcmpyi($Rss32,$Rtt32*)",
16708 tc_e913dc32, TypeM>, Enc_88c16c {
16709 let Inst{7-5} = 0b000;
16710 let Inst{13-13} = 0b0;
16711 let Inst{31-21} = 0b11101010010;
16712 let prefersSlot3 = 1;
16713 let Constraints = "$Rxx32 = $Rxx32in";
16714 }
16715 def M2_vrcmacr_s0 : HInst<
16716 (outs DoubleRegs:$Rxx32),
16717 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16718 "$Rxx32 += vrcmpyr($Rss32,$Rtt32)",
16719 tc_e913dc32, TypeM>, Enc_88c16c {
16720 let Inst{7-5} = 0b001;
16721 let Inst{13-13} = 0b0;
16722 let Inst{31-21} = 0b11101010000;
16723 let prefersSlot3 = 1;
16724 let Constraints = "$Rxx32 = $Rxx32in";
16725 }
16726 def M2_vrcmacr_s0c : HInst<
16727 (outs DoubleRegs:$Rxx32),
16728 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16729 "$Rxx32 += vrcmpyr($Rss32,$Rtt32*)",
16730 tc_e913dc32, TypeM>, Enc_88c16c {
16731 let Inst{7-5} = 0b001;
16732 let Inst{13-13} = 0b0;
16733 let Inst{31-21} = 0b11101010011;
16734 let prefersSlot3 = 1;
16735 let Constraints = "$Rxx32 = $Rxx32in";
16736 }
16737 def M2_vrcmpyi_s0 : HInst<
16738 (outs DoubleRegs:$Rdd32),
16739 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16740 "$Rdd32 = vrcmpyi($Rss32,$Rtt32)",
16741 tc_8fd5f294, TypeM>, Enc_a56825 {
16742 let Inst{7-5} = 0b000;
16743 let Inst{13-13} = 0b0;
16744 let Inst{31-21} = 0b11101000000;
16745 let prefersSlot3 = 1;
16746 }
16747 def M2_vrcmpyi_s0c : HInst<
16748 (outs DoubleRegs:$Rdd32),
16749 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16750 "$Rdd32 = vrcmpyi($Rss32,$Rtt32*)",
16751 tc_8fd5f294, TypeM>, Enc_a56825 {
16752 let Inst{7-5} = 0b000;
16753 let Inst{13-13} = 0b0;
16754 let Inst{31-21} = 0b11101000010;
16755 let prefersSlot3 = 1;
16756 }
16757 def M2_vrcmpyr_s0 : HInst<
16758 (outs DoubleRegs:$Rdd32),
16759 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16760 "$Rdd32 = vrcmpyr($Rss32,$Rtt32)",
16761 tc_8fd5f294, TypeM>, Enc_a56825 {
16762 let Inst{7-5} = 0b001;
16763 let Inst{13-13} = 0b0;
16764 let Inst{31-21} = 0b11101000000;
16765 let prefersSlot3 = 1;
16766 }
16767 def M2_vrcmpyr_s0c : HInst<
16768 (outs DoubleRegs:$Rdd32),
16769 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16770 "$Rdd32 = vrcmpyr($Rss32,$Rtt32*)",
16771 tc_8fd5f294, TypeM>, Enc_a56825 {
16772 let Inst{7-5} = 0b001;
16773 let Inst{13-13} = 0b0;
16774 let Inst{31-21} = 0b11101000011;
16775 let prefersSlot3 = 1;
16776 }
16777 def M2_vrcmpys_acc_s1 : HInst<
16778 (outs DoubleRegs:$Rxx32),
16779 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
16780 "$Rxx32 += vrcmpys($Rss32,$Rt32):<<1:sat",
16781 tc_e913dc32, TypeM> {
16782 let isPseudo = 1;
16783 let Constraints = "$Rxx32 = $Rxx32in";
16784 }
16785 def M2_vrcmpys_acc_s1_h : HInst<
16786 (outs DoubleRegs:$Rxx32),
16787 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16788 "$Rxx32 += vrcmpys($Rss32,$Rtt32):<<1:sat:raw:hi",
16789 tc_e913dc32, TypeM>, Enc_88c16c {
16790 let Inst{7-5} = 0b100;
16791 let Inst{13-13} = 0b0;
16792 let Inst{31-21} = 0b11101010101;
16793 let prefersSlot3 = 1;
16794 let Defs = [USR_OVF];
16795 let Constraints = "$Rxx32 = $Rxx32in";
16796 }
16797 def M2_vrcmpys_acc_s1_l : HInst<
16798 (outs DoubleRegs:$Rxx32),
16799 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16800 "$Rxx32 += vrcmpys($Rss32,$Rtt32):<<1:sat:raw:lo",
16801 tc_e913dc32, TypeM>, Enc_88c16c {
16802 let Inst{7-5} = 0b100;
16803 let Inst{13-13} = 0b0;
16804 let Inst{31-21} = 0b11101010111;
16805 let prefersSlot3 = 1;
16806 let Defs = [USR_OVF];
16807 let Constraints = "$Rxx32 = $Rxx32in";
16808 }
16809 def M2_vrcmpys_s1 : HInst<
16810 (outs DoubleRegs:$Rdd32),
16811 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
16812 "$Rdd32 = vrcmpys($Rss32,$Rt32):<<1:sat",
16813 tc_8fd5f294, TypeM> {
16814 let isPseudo = 1;
16815 }
16816 def M2_vrcmpys_s1_h : HInst<
16817 (outs DoubleRegs:$Rdd32),
16818 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16819 "$Rdd32 = vrcmpys($Rss32,$Rtt32):<<1:sat:raw:hi",
16820 tc_8fd5f294, TypeM>, Enc_a56825 {
16821 let Inst{7-5} = 0b100;
16822 let Inst{13-13} = 0b0;
16823 let Inst{31-21} = 0b11101000101;
16824 let prefersSlot3 = 1;
16825 let Defs = [USR_OVF];
16826 }
16827 def M2_vrcmpys_s1_l : HInst<
16828 (outs DoubleRegs:$Rdd32),
16829 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16830 "$Rdd32 = vrcmpys($Rss32,$Rtt32):<<1:sat:raw:lo",
16831 tc_8fd5f294, TypeM>, Enc_a56825 {
16832 let Inst{7-5} = 0b100;
16833 let Inst{13-13} = 0b0;
16834 let Inst{31-21} = 0b11101000111;
16835 let prefersSlot3 = 1;
16836 let Defs = [USR_OVF];
16837 }
16838 def M2_vrcmpys_s1rp : HInst<
16839 (outs IntRegs:$Rd32),
16840 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
16841 "$Rd32 = vrcmpys($Rss32,$Rt32):<<1:rnd:sat",
16842 tc_8fd5f294, TypeM> {
16843 let hasNewValue = 1;
16844 let opNewValue = 0;
16845 let isPseudo = 1;
16846 }
16847 def M2_vrcmpys_s1rp_h : HInst<
16848 (outs IntRegs:$Rd32),
16849 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16850 "$Rd32 = vrcmpys($Rss32,$Rtt32):<<1:rnd:sat:raw:hi",
16851 tc_8fd5f294, TypeM>, Enc_d2216a {
16852 let Inst{7-5} = 0b110;
16853 let Inst{13-13} = 0b0;
16854 let Inst{31-21} = 0b11101001101;
16855 let hasNewValue = 1;
16856 let opNewValue = 0;
16857 let prefersSlot3 = 1;
16858 let Defs = [USR_OVF];
16859 }
16860 def M2_vrcmpys_s1rp_l : HInst<
16861 (outs IntRegs:$Rd32),
16862 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16863 "$Rd32 = vrcmpys($Rss32,$Rtt32):<<1:rnd:sat:raw:lo",
16864 tc_8fd5f294, TypeM>, Enc_d2216a {
16865 let Inst{7-5} = 0b111;
16866 let Inst{13-13} = 0b0;
16867 let Inst{31-21} = 0b11101001101;
16868 let hasNewValue = 1;
16869 let opNewValue = 0;
16870 let prefersSlot3 = 1;
16871 let Defs = [USR_OVF];
16872 }
16873 def M2_vrmac_s0 : HInst<
16874 (outs DoubleRegs:$Rxx32),
16875 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16876 "$Rxx32 += vrmpyh($Rss32,$Rtt32)",
16877 tc_e913dc32, TypeM>, Enc_88c16c {
16878 let Inst{7-5} = 0b010;
16879 let Inst{13-13} = 0b0;
16880 let Inst{31-21} = 0b11101010000;
16881 let prefersSlot3 = 1;
16882 let Constraints = "$Rxx32 = $Rxx32in";
16883 }
16884 def M2_vrmpy_s0 : HInst<
16885 (outs DoubleRegs:$Rdd32),
16886 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16887 "$Rdd32 = vrmpyh($Rss32,$Rtt32)",
16888 tc_8fd5f294, TypeM>, Enc_a56825 {
16889 let Inst{7-5} = 0b010;
16890 let Inst{13-13} = 0b0;
16891 let Inst{31-21} = 0b11101000000;
16892 let prefersSlot3 = 1;
16893 }
16894 def M2_xor_xacc : HInst<
16895 (outs IntRegs:$Rx32),
16896 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16897 "$Rx32 ^= xor($Rs32,$Rt32)",
16898 tc_84df2cd3, TypeM>, Enc_2ae154 {
16899 let Inst{7-5} = 0b011;
16900 let Inst{13-13} = 0b0;
16901 let Inst{31-21} = 0b11101111100;
16902 let hasNewValue = 1;
16903 let opNewValue = 0;
16904 let prefersSlot3 = 1;
16905 let InputType = "reg";
16906 let Constraints = "$Rx32 = $Rx32in";
16907 }
16908 def M4_and_and : HInst<
16909 (outs IntRegs:$Rx32),
16910 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16911 "$Rx32 &= and($Rs32,$Rt32)",
16912 tc_84df2cd3, TypeM>, Enc_2ae154 {
16913 let Inst{7-5} = 0b000;
16914 let Inst{13-13} = 0b0;
16915 let Inst{31-21} = 0b11101111010;
16916 let hasNewValue = 1;
16917 let opNewValue = 0;
16918 let prefersSlot3 = 1;
16919 let InputType = "reg";
16920 let Constraints = "$Rx32 = $Rx32in";
16921 }
16922 def M4_and_andn : HInst<
16923 (outs IntRegs:$Rx32),
16924 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16925 "$Rx32 &= and($Rs32,~$Rt32)",
16926 tc_84df2cd3, TypeM>, Enc_2ae154 {
16927 let Inst{7-5} = 0b001;
16928 let Inst{13-13} = 0b0;
16929 let Inst{31-21} = 0b11101111001;
16930 let hasNewValue = 1;
16931 let opNewValue = 0;
16932 let prefersSlot3 = 1;
16933 let InputType = "reg";
16934 let Constraints = "$Rx32 = $Rx32in";
16935 }
16936 def M4_and_or : HInst<
16937 (outs IntRegs:$Rx32),
16938 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16939 "$Rx32 &= or($Rs32,$Rt32)",
16940 tc_84df2cd3, TypeM>, Enc_2ae154 {
16941 let Inst{7-5} = 0b001;
16942 let Inst{13-13} = 0b0;
16943 let Inst{31-21} = 0b11101111010;
16944 let hasNewValue = 1;
16945 let opNewValue = 0;
16946 let prefersSlot3 = 1;
16947 let InputType = "reg";
16948 let Constraints = "$Rx32 = $Rx32in";
16949 }
16950 def M4_and_xor : HInst<
16951 (outs IntRegs:$Rx32),
16952 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16953 "$Rx32 &= xor($Rs32,$Rt32)",
16954 tc_84df2cd3, TypeM>, Enc_2ae154 {
16955 let Inst{7-5} = 0b010;
16956 let Inst{13-13} = 0b0;
16957 let Inst{31-21} = 0b11101111010;
16958 let hasNewValue = 1;
16959 let opNewValue = 0;
16960 let prefersSlot3 = 1;
16961 let InputType = "reg";
16962 let Constraints = "$Rx32 = $Rx32in";
16963 }
16964 def M4_cmpyi_wh : HInst<
16965 (outs IntRegs:$Rd32),
16966 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
16967 "$Rd32 = cmpyiwh($Rss32,$Rt32):<<1:rnd:sat",
16968 tc_8fd5f294, TypeS_3op>, Enc_3d5b28 {
16969 let Inst{7-5} = 0b100;
16970 let Inst{13-13} = 0b0;
16971 let Inst{31-21} = 0b11000101000;
16972 let hasNewValue = 1;
16973 let opNewValue = 0;
16974 let prefersSlot3 = 1;
16975 let Defs = [USR_OVF];
16976 }
16977 def M4_cmpyi_whc : HInst<
16978 (outs IntRegs:$Rd32),
16979 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
16980 "$Rd32 = cmpyiwh($Rss32,$Rt32*):<<1:rnd:sat",
16981 tc_8fd5f294, TypeS_3op>, Enc_3d5b28, Requires<[HasV5]> {
16982 let Inst{7-5} = 0b101;
16983 let Inst{13-13} = 0b0;
16984 let Inst{31-21} = 0b11000101000;
16985 let hasNewValue = 1;
16986 let opNewValue = 0;
16987 let prefersSlot3 = 1;
16988 let Defs = [USR_OVF];
16989 }
16990 def M4_cmpyr_wh : HInst<
16991 (outs IntRegs:$Rd32),
16992 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
16993 "$Rd32 = cmpyrwh($Rss32,$Rt32):<<1:rnd:sat",
16994 tc_8fd5f294, TypeS_3op>, Enc_3d5b28 {
16995 let Inst{7-5} = 0b110;
16996 let Inst{13-13} = 0b0;
16997 let Inst{31-21} = 0b11000101000;
16998 let hasNewValue = 1;
16999 let opNewValue = 0;
17000 let prefersSlot3 = 1;
17001 let Defs = [USR_OVF];
17002 }
17003 def M4_cmpyr_whc : HInst<
17004 (outs IntRegs:$Rd32),
17005 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
17006 "$Rd32 = cmpyrwh($Rss32,$Rt32*):<<1:rnd:sat",
17007 tc_8fd5f294, TypeS_3op>, Enc_3d5b28, Requires<[HasV5]> {
17008 let Inst{7-5} = 0b111;
17009 let Inst{13-13} = 0b0;
17010 let Inst{31-21} = 0b11000101000;
17011 let hasNewValue = 1;
17012 let opNewValue = 0;
17013 let prefersSlot3 = 1;
17014 let Defs = [USR_OVF];
17015 }
17016 def M4_mac_up_s1_sat : HInst<
17017 (outs IntRegs:$Rx32),
17018 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17019 "$Rx32 += mpy($Rs32,$Rt32):<<1:sat",
17020 tc_e913dc32, TypeM>, Enc_2ae154 {
17021 let Inst{7-5} = 0b000;
17022 let Inst{13-13} = 0b0;
17023 let Inst{31-21} = 0b11101111011;
17024 let hasNewValue = 1;
17025 let opNewValue = 0;
17026 let prefersSlot3 = 1;
17027 let Defs = [USR_OVF];
17028 let InputType = "reg";
17029 let Constraints = "$Rx32 = $Rx32in";
17030 }
17031 def M4_mpyri_addi : HInst<
17032 (outs IntRegs:$Rd32),
17033 (ins u32_0Imm:$Ii, IntRegs:$Rs32, u6_0Imm:$II),
17034 "$Rd32 = add(#$Ii,mpyi($Rs32,#$II))",
17035 tc_16d0d8d5, TypeALU64>, Enc_322e1b, ImmRegRel {
17036 let Inst{31-24} = 0b11011000;
17037 let hasNewValue = 1;
17038 let opNewValue = 0;
17039 let prefersSlot3 = 1;
17040 let CextOpcode = "M4_mpyri_addr";
17041 let isExtendable = 1;
17042 let opExtendable = 1;
17043 let isExtentSigned = 0;
17044 let opExtentBits = 6;
17045 let opExtentAlign = 0;
17046 }
17047 def M4_mpyri_addr : HInst<
17048 (outs IntRegs:$Rd32),
17049 (ins IntRegs:$Ru32, IntRegs:$Rs32, u32_0Imm:$Ii),
17050 "$Rd32 = add($Ru32,mpyi($Rs32,#$Ii))",
17051 tc_16d0d8d5, TypeALU64>, Enc_420cf3, ImmRegRel {
17052 let Inst{31-23} = 0b110111111;
17053 let hasNewValue = 1;
17054 let opNewValue = 0;
17055 let prefersSlot3 = 1;
17056 let CextOpcode = "M4_mpyri_addr";
17057 let InputType = "imm";
17058 let isExtendable = 1;
17059 let opExtendable = 3;
17060 let isExtentSigned = 0;
17061 let opExtentBits = 6;
17062 let opExtentAlign = 0;
17063 }
17064 def M4_mpyri_addr_u2 : HInst<
17065 (outs IntRegs:$Rd32),
17066 (ins IntRegs:$Ru32, u6_2Imm:$Ii, IntRegs:$Rs32),
17067 "$Rd32 = add($Ru32,mpyi(#$Ii,$Rs32))",
17068 tc_bcc96cee, TypeALU64>, Enc_277737 {
17069 let Inst{31-23} = 0b110111110;
17070 let hasNewValue = 1;
17071 let opNewValue = 0;
17072 let prefersSlot3 = 1;
17073 }
17074 def M4_mpyrr_addi : HInst<
17075 (outs IntRegs:$Rd32),
17076 (ins u32_0Imm:$Ii, IntRegs:$Rs32, IntRegs:$Rt32),
17077 "$Rd32 = add(#$Ii,mpyi($Rs32,$Rt32))",
17078 tc_e913dc32, TypeALU64>, Enc_a7b8e8, ImmRegRel {
17079 let Inst{31-23} = 0b110101110;
17080 let hasNewValue = 1;
17081 let opNewValue = 0;
17082 let prefersSlot3 = 1;
17083 let CextOpcode = "M4_mpyrr_addr";
17084 let InputType = "imm";
17085 let isExtendable = 1;
17086 let opExtendable = 1;
17087 let isExtentSigned = 0;
17088 let opExtentBits = 6;
17089 let opExtentAlign = 0;
17090 }
17091 def M4_mpyrr_addr : HInst<
17092 (outs IntRegs:$Ry32),
17093 (ins IntRegs:$Ru32, IntRegs:$Ry32in, IntRegs:$Rs32),
17094 "$Ry32 = add($Ru32,mpyi($Ry32in,$Rs32))",
17095 tc_e913dc32, TypeM>, Enc_7f1a05, ImmRegRel {
17096 let Inst{7-5} = 0b000;
17097 let Inst{13-13} = 0b0;
17098 let Inst{31-21} = 0b11100011000;
17099 let hasNewValue = 1;
17100 let opNewValue = 0;
17101 let prefersSlot3 = 1;
17102 let CextOpcode = "M4_mpyrr_addr";
17103 let InputType = "reg";
17104 let Constraints = "$Ry32 = $Ry32in";
17105 }
17106 def M4_nac_up_s1_sat : HInst<
17107 (outs IntRegs:$Rx32),
17108 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17109 "$Rx32 -= mpy($Rs32,$Rt32):<<1:sat",
17110 tc_e913dc32, TypeM>, Enc_2ae154 {
17111 let Inst{7-5} = 0b001;
17112 let Inst{13-13} = 0b0;
17113 let Inst{31-21} = 0b11101111011;
17114 let hasNewValue = 1;
17115 let opNewValue = 0;
17116 let prefersSlot3 = 1;
17117 let Defs = [USR_OVF];
17118 let InputType = "reg";
17119 let Constraints = "$Rx32 = $Rx32in";
17120 }
17121 def M4_or_and : HInst<
17122 (outs IntRegs:$Rx32),
17123 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17124 "$Rx32 |= and($Rs32,$Rt32)",
17125 tc_84df2cd3, TypeM>, Enc_2ae154 {
17126 let Inst{7-5} = 0b011;
17127 let Inst{13-13} = 0b0;
17128 let Inst{31-21} = 0b11101111010;
17129 let hasNewValue = 1;
17130 let opNewValue = 0;
17131 let prefersSlot3 = 1;
17132 let InputType = "reg";
17133 let Constraints = "$Rx32 = $Rx32in";
17134 }
17135 def M4_or_andn : HInst<
17136 (outs IntRegs:$Rx32),
17137 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17138 "$Rx32 |= and($Rs32,~$Rt32)",
17139 tc_84df2cd3, TypeM>, Enc_2ae154 {
17140 let Inst{7-5} = 0b000;
17141 let Inst{13-13} = 0b0;
17142 let Inst{31-21} = 0b11101111001;
17143 let hasNewValue = 1;
17144 let opNewValue = 0;
17145 let prefersSlot3 = 1;
17146 let InputType = "reg";
17147 let Constraints = "$Rx32 = $Rx32in";
17148 }
17149 def M4_or_or : HInst<
17150 (outs IntRegs:$Rx32),
17151 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17152 "$Rx32 |= or($Rs32,$Rt32)",
17153 tc_84df2cd3, TypeM>, Enc_2ae154 {
17154 let Inst{7-5} = 0b000;
17155 let Inst{13-13} = 0b0;
17156 let Inst{31-21} = 0b11101111110;
17157 let hasNewValue = 1;
17158 let opNewValue = 0;
17159 let prefersSlot3 = 1;
17160 let InputType = "reg";
17161 let Constraints = "$Rx32 = $Rx32in";
17162 }
17163 def M4_or_xor : HInst<
17164 (outs IntRegs:$Rx32),
17165 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17166 "$Rx32 |= xor($Rs32,$Rt32)",
17167 tc_84df2cd3, TypeM>, Enc_2ae154 {
17168 let Inst{7-5} = 0b001;
17169 let Inst{13-13} = 0b0;
17170 let Inst{31-21} = 0b11101111110;
17171 let hasNewValue = 1;
17172 let opNewValue = 0;
17173 let prefersSlot3 = 1;
17174 let InputType = "reg";
17175 let Constraints = "$Rx32 = $Rx32in";
17176 }
17177 def M4_pmpyw : HInst<
17178 (outs DoubleRegs:$Rdd32),
17179 (ins IntRegs:$Rs32, IntRegs:$Rt32),
17180 "$Rdd32 = pmpyw($Rs32,$Rt32)",
17181 tc_8fd5f294, TypeM>, Enc_be32a5 {
17182 let Inst{7-5} = 0b111;
17183 let Inst{13-13} = 0b0;
17184 let Inst{31-21} = 0b11100101010;
17185 let prefersSlot3 = 1;
17186 }
17187 def M4_pmpyw_acc : HInst<
17188 (outs DoubleRegs:$Rxx32),
17189 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17190 "$Rxx32 ^= pmpyw($Rs32,$Rt32)",
17191 tc_e913dc32, TypeM>, Enc_61f0b0 {
17192 let Inst{7-5} = 0b111;
17193 let Inst{13-13} = 0b0;
17194 let Inst{31-21} = 0b11100111001;
17195 let prefersSlot3 = 1;
17196 let Constraints = "$Rxx32 = $Rxx32in";
17197 }
17198 def M4_vpmpyh : HInst<
17199 (outs DoubleRegs:$Rdd32),
17200 (ins IntRegs:$Rs32, IntRegs:$Rt32),
17201 "$Rdd32 = vpmpyh($Rs32,$Rt32)",
17202 tc_8fd5f294, TypeM>, Enc_be32a5 {
17203 let Inst{7-5} = 0b111;
17204 let Inst{13-13} = 0b0;
17205 let Inst{31-21} = 0b11100101110;
17206 let prefersSlot3 = 1;
17207 }
17208 def M4_vpmpyh_acc : HInst<
17209 (outs DoubleRegs:$Rxx32),
17210 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17211 "$Rxx32 ^= vpmpyh($Rs32,$Rt32)",
17212 tc_e913dc32, TypeM>, Enc_61f0b0 {
17213 let Inst{7-5} = 0b111;
17214 let Inst{13-13} = 0b0;
17215 let Inst{31-21} = 0b11100111101;
17216 let prefersSlot3 = 1;
17217 let Constraints = "$Rxx32 = $Rxx32in";
17218 }
17219 def M4_vrmpyeh_acc_s0 : HInst<
17220 (outs DoubleRegs:$Rxx32),
17221 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17222 "$Rxx32 += vrmpyweh($Rss32,$Rtt32)",
17223 tc_e913dc32, TypeM>, Enc_88c16c {
17224 let Inst{7-5} = 0b110;
17225 let Inst{13-13} = 0b0;
17226 let Inst{31-21} = 0b11101010001;
17227 let prefersSlot3 = 1;
17228 let Constraints = "$Rxx32 = $Rxx32in";
17229 }
17230 def M4_vrmpyeh_acc_s1 : HInst<
17231 (outs DoubleRegs:$Rxx32),
17232 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17233 "$Rxx32 += vrmpyweh($Rss32,$Rtt32):<<1",
17234 tc_e913dc32, TypeM>, Enc_88c16c {
17235 let Inst{7-5} = 0b110;
17236 let Inst{13-13} = 0b0;
17237 let Inst{31-21} = 0b11101010101;
17238 let prefersSlot3 = 1;
17239 let Constraints = "$Rxx32 = $Rxx32in";
17240 }
17241 def M4_vrmpyeh_s0 : HInst<
17242 (outs DoubleRegs:$Rdd32),
17243 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17244 "$Rdd32 = vrmpyweh($Rss32,$Rtt32)",
17245 tc_8fd5f294, TypeM>, Enc_a56825 {
17246 let Inst{7-5} = 0b100;
17247 let Inst{13-13} = 0b0;
17248 let Inst{31-21} = 0b11101000010;
17249 let prefersSlot3 = 1;
17250 }
17251 def M4_vrmpyeh_s1 : HInst<
17252 (outs DoubleRegs:$Rdd32),
17253 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17254 "$Rdd32 = vrmpyweh($Rss32,$Rtt32):<<1",
17255 tc_8fd5f294, TypeM>, Enc_a56825 {
17256 let Inst{7-5} = 0b100;
17257 let Inst{13-13} = 0b0;
17258 let Inst{31-21} = 0b11101000110;
17259 let prefersSlot3 = 1;
17260 }
17261 def M4_vrmpyoh_acc_s0 : HInst<
17262 (outs DoubleRegs:$Rxx32),
17263 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17264 "$Rxx32 += vrmpywoh($Rss32,$Rtt32)",
17265 tc_e913dc32, TypeM>, Enc_88c16c {
17266 let Inst{7-5} = 0b110;
17267 let Inst{13-13} = 0b0;
17268 let Inst{31-21} = 0b11101010011;
17269 let prefersSlot3 = 1;
17270 let Constraints = "$Rxx32 = $Rxx32in";
17271 }
17272 def M4_vrmpyoh_acc_s1 : HInst<
17273 (outs DoubleRegs:$Rxx32),
17274 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17275 "$Rxx32 += vrmpywoh($Rss32,$Rtt32):<<1",
17276 tc_e913dc32, TypeM>, Enc_88c16c {
17277 let Inst{7-5} = 0b110;
17278 let Inst{13-13} = 0b0;
17279 let Inst{31-21} = 0b11101010111;
17280 let prefersSlot3 = 1;
17281 let Constraints = "$Rxx32 = $Rxx32in";
17282 }
17283 def M4_vrmpyoh_s0 : HInst<
17284 (outs DoubleRegs:$Rdd32),
17285 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17286 "$Rdd32 = vrmpywoh($Rss32,$Rtt32)",
17287 tc_8fd5f294, TypeM>, Enc_a56825 {
17288 let Inst{7-5} = 0b010;
17289 let Inst{13-13} = 0b0;
17290 let Inst{31-21} = 0b11101000001;
17291 let prefersSlot3 = 1;
17292 }
17293 def M4_vrmpyoh_s1 : HInst<
17294 (outs DoubleRegs:$Rdd32),
17295 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17296 "$Rdd32 = vrmpywoh($Rss32,$Rtt32):<<1",
17297 tc_8fd5f294, TypeM>, Enc_a56825 {
17298 let Inst{7-5} = 0b010;
17299 let Inst{13-13} = 0b0;
17300 let Inst{31-21} = 0b11101000101;
17301 let prefersSlot3 = 1;
17302 }
17303 def M4_xor_and : HInst<
17304 (outs IntRegs:$Rx32),
17305 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17306 "$Rx32 ^= and($Rs32,$Rt32)",
17307 tc_84df2cd3, TypeM>, Enc_2ae154 {
17308 let Inst{7-5} = 0b010;
17309 let Inst{13-13} = 0b0;
17310 let Inst{31-21} = 0b11101111110;
17311 let hasNewValue = 1;
17312 let opNewValue = 0;
17313 let prefersSlot3 = 1;
17314 let InputType = "reg";
17315 let Constraints = "$Rx32 = $Rx32in";
17316 }
17317 def M4_xor_andn : HInst<
17318 (outs IntRegs:$Rx32),
17319 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17320 "$Rx32 ^= and($Rs32,~$Rt32)",
17321 tc_84df2cd3, TypeM>, Enc_2ae154 {
17322 let Inst{7-5} = 0b010;
17323 let Inst{13-13} = 0b0;
17324 let Inst{31-21} = 0b11101111001;
17325 let hasNewValue = 1;
17326 let opNewValue = 0;
17327 let prefersSlot3 = 1;
17328 let InputType = "reg";
17329 let Constraints = "$Rx32 = $Rx32in";
17330 }
17331 def M4_xor_or : HInst<
17332 (outs IntRegs:$Rx32),
17333 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17334 "$Rx32 ^= or($Rs32,$Rt32)",
17335 tc_84df2cd3, TypeM>, Enc_2ae154 {
17336 let Inst{7-5} = 0b011;
17337 let Inst{13-13} = 0b0;
17338 let Inst{31-21} = 0b11101111110;
17339 let hasNewValue = 1;
17340 let opNewValue = 0;
17341 let prefersSlot3 = 1;
17342 let InputType = "reg";
17343 let Constraints = "$Rx32 = $Rx32in";
17344 }
17345 def M4_xor_xacc : HInst<
17346 (outs DoubleRegs:$Rxx32),
17347 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17348 "$Rxx32 ^= xor($Rss32,$Rtt32)",
17349 tc_84df2cd3, TypeS_3op>, Enc_88c16c {
17350 let Inst{7-5} = 0b000;
17351 let Inst{13-13} = 0b0;
17352 let Inst{31-21} = 0b11001010100;
17353 let prefersSlot3 = 1;
17354 let Constraints = "$Rxx32 = $Rxx32in";
17355 }
17356 def M5_vdmacbsu : HInst<
17357 (outs DoubleRegs:$Rxx32),
17358 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17359 "$Rxx32 += vdmpybsu($Rss32,$Rtt32):sat",
17360 tc_e913dc32, TypeM>, Enc_88c16c, Requires<[HasV5]> {
17361 let Inst{7-5} = 0b001;
17362 let Inst{13-13} = 0b0;
17363 let Inst{31-21} = 0b11101010001;
17364 let prefersSlot3 = 1;
17365 let Defs = [USR_OVF];
17366 let Constraints = "$Rxx32 = $Rxx32in";
17367 }
17368 def M5_vdmpybsu : HInst<
17369 (outs DoubleRegs:$Rdd32),
17370 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17371 "$Rdd32 = vdmpybsu($Rss32,$Rtt32):sat",
17372 tc_8fd5f294, TypeM>, Enc_a56825, Requires<[HasV5]> {
17373 let Inst{7-5} = 0b001;
17374 let Inst{13-13} = 0b0;
17375 let Inst{31-21} = 0b11101000101;
17376 let prefersSlot3 = 1;
17377 let Defs = [USR_OVF];
17378 }
17379 def M5_vmacbsu : HInst<
17380 (outs DoubleRegs:$Rxx32),
17381 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17382 "$Rxx32 += vmpybsu($Rs32,$Rt32)",
17383 tc_e913dc32, TypeM>, Enc_61f0b0 {
17384 let Inst{7-5} = 0b001;
17385 let Inst{13-13} = 0b0;
17386 let Inst{31-21} = 0b11100111110;
17387 let prefersSlot3 = 1;
17388 let Constraints = "$Rxx32 = $Rxx32in";
17389 }
17390 def M5_vmacbuu : HInst<
17391 (outs DoubleRegs:$Rxx32),
17392 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17393 "$Rxx32 += vmpybu($Rs32,$Rt32)",
17394 tc_e913dc32, TypeM>, Enc_61f0b0 {
17395 let Inst{7-5} = 0b001;
17396 let Inst{13-13} = 0b0;
17397 let Inst{31-21} = 0b11100111100;
17398 let prefersSlot3 = 1;
17399 let Constraints = "$Rxx32 = $Rxx32in";
17400 }
17401 def M5_vmpybsu : HInst<
17402 (outs DoubleRegs:$Rdd32),
17403 (ins IntRegs:$Rs32, IntRegs:$Rt32),
17404 "$Rdd32 = vmpybsu($Rs32,$Rt32)",
17405 tc_8fd5f294, TypeM>, Enc_be32a5 {
17406 let Inst{7-5} = 0b001;
17407 let Inst{13-13} = 0b0;
17408 let Inst{31-21} = 0b11100101010;
17409 let prefersSlot3 = 1;
17410 }
17411 def M5_vmpybuu : HInst<
17412 (outs DoubleRegs:$Rdd32),
17413 (ins IntRegs:$Rs32, IntRegs:$Rt32),
17414 "$Rdd32 = vmpybu($Rs32,$Rt32)",
17415 tc_8fd5f294, TypeM>, Enc_be32a5 {
17416 let Inst{7-5} = 0b001;
17417 let Inst{13-13} = 0b0;
17418 let Inst{31-21} = 0b11100101100;
17419 let prefersSlot3 = 1;
17420 }
17421 def M5_vrmacbsu : HInst<
17422 (outs DoubleRegs:$Rxx32),
17423 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17424 "$Rxx32 += vrmpybsu($Rss32,$Rtt32)",
17425 tc_e913dc32, TypeM>, Enc_88c16c {
17426 let Inst{7-5} = 0b001;
17427 let Inst{13-13} = 0b0;
17428 let Inst{31-21} = 0b11101010110;
17429 let prefersSlot3 = 1;
17430 let Constraints = "$Rxx32 = $Rxx32in";
17431 }
17432 def M5_vrmacbuu : HInst<
17433 (outs DoubleRegs:$Rxx32),
17434 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17435 "$Rxx32 += vrmpybu($Rss32,$Rtt32)",
17436 tc_e913dc32, TypeM>, Enc_88c16c {
17437 let Inst{7-5} = 0b001;
17438 let Inst{13-13} = 0b0;
17439 let Inst{31-21} = 0b11101010100;
17440 let prefersSlot3 = 1;
17441 let Constraints = "$Rxx32 = $Rxx32in";
17442 }
17443 def M5_vrmpybsu : HInst<
17444 (outs DoubleRegs:$Rdd32),
17445 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17446 "$Rdd32 = vrmpybsu($Rss32,$Rtt32)",
17447 tc_8fd5f294, TypeM>, Enc_a56825 {
17448 let Inst{7-5} = 0b001;
17449 let Inst{13-13} = 0b0;
17450 let Inst{31-21} = 0b11101000110;
17451 let prefersSlot3 = 1;
17452 }
17453 def M5_vrmpybuu : HInst<
17454 (outs DoubleRegs:$Rdd32),
17455 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17456 "$Rdd32 = vrmpybu($Rss32,$Rtt32)",
17457 tc_8fd5f294, TypeM>, Enc_a56825 {
17458 let Inst{7-5} = 0b001;
17459 let Inst{13-13} = 0b0;
17460 let Inst{31-21} = 0b11101000100;
17461 let prefersSlot3 = 1;
17462 }
17463 def M6_vabsdiffb : HInst<
17464 (outs DoubleRegs:$Rdd32),
17465 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
17466 "$Rdd32 = vabsdiffb($Rtt32,$Rss32)",
17467 tc_f49e76f4, TypeM>, Enc_ea23e4, Requires<[HasV62]> {
17468 let Inst{7-5} = 0b000;
17469 let Inst{13-13} = 0b0;
17470 let Inst{31-21} = 0b11101000111;
17471 let prefersSlot3 = 1;
17472 }
17473 def M6_vabsdiffub : HInst<
17474 (outs DoubleRegs:$Rdd32),
17475 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
17476 "$Rdd32 = vabsdiffub($Rtt32,$Rss32)",
17477 tc_f49e76f4, TypeM>, Enc_ea23e4, Requires<[HasV62]> {
17478 let Inst{7-5} = 0b000;
17479 let Inst{13-13} = 0b0;
17480 let Inst{31-21} = 0b11101000101;
17481 let prefersSlot3 = 1;
17482 }
17483 def PS_loadrbabs : HInst<
17484 (outs IntRegs:$Rd32),
17485 (ins u32_0Imm:$Ii),
17486 "$Rd32 = memb(#$Ii)",
17487 tc_9c98e8af, TypeV2LDST>, Enc_25bef0, AddrModeRel {
17488 let Inst{24-21} = 0b1000;
17489 let Inst{31-27} = 0b01001;
17490 let hasNewValue = 1;
17491 let opNewValue = 0;
17492 let addrMode = Absolute;
17493 let accessSize = ByteAccess;
17494 let mayLoad = 1;
17495 let isExtended = 1;
17496 let CextOpcode = "L2_loadrb";
17497 let BaseOpcode = "L4_loadrb_abs";
17498 let isPredicable = 1;
17499 let DecoderNamespace = "MustExtend";
17500 let isExtended = 1;
17501 let opExtendable = 1;
17502 let isExtentSigned = 0;
17503 let opExtentBits = 16;
17504 let opExtentAlign = 0;
17505 }
17506 def PS_loadrdabs : HInst<
17507 (outs DoubleRegs:$Rdd32),
17508 (ins u29_3Imm:$Ii),
17509 "$Rdd32 = memd(#$Ii)",
17510 tc_9c98e8af, TypeV2LDST>, Enc_509701, AddrModeRel {
17511 let Inst{24-21} = 0b1110;
17512 let Inst{31-27} = 0b01001;
17513 let addrMode = Absolute;
17514 let accessSize = DoubleWordAccess;
17515 let mayLoad = 1;
17516 let isExtended = 1;
17517 let CextOpcode = "L2_loadrd";
17518 let BaseOpcode = "L4_loadrd_abs";
17519 let isPredicable = 1;
17520 let DecoderNamespace = "MustExtend";
17521 let isExtended = 1;
17522 let opExtendable = 1;
17523 let isExtentSigned = 0;
17524 let opExtentBits = 19;
17525 let opExtentAlign = 3;
17526 }
17527 def PS_loadrhabs : HInst<
17528 (outs IntRegs:$Rd32),
17529 (ins u31_1Imm:$Ii),
17530 "$Rd32 = memh(#$Ii)",
17531 tc_9c98e8af, TypeV2LDST>, Enc_8df4be, AddrModeRel {
17532 let Inst{24-21} = 0b1010;
17533 let Inst{31-27} = 0b01001;
17534 let hasNewValue = 1;
17535 let opNewValue = 0;
17536 let addrMode = Absolute;
17537 let accessSize = HalfWordAccess;
17538 let mayLoad = 1;
17539 let isExtended = 1;
17540 let CextOpcode = "L2_loadrh";
17541 let BaseOpcode = "L4_loadrh_abs";
17542 let isPredicable = 1;
17543 let DecoderNamespace = "MustExtend";
17544 let isExtended = 1;
17545 let opExtendable = 1;
17546 let isExtentSigned = 0;
17547 let opExtentBits = 17;
17548 let opExtentAlign = 1;
17549 }
17550 def PS_loadriabs : HInst<
17551 (outs IntRegs:$Rd32),
17552 (ins u30_2Imm:$Ii),
17553 "$Rd32 = memw(#$Ii)",
17554 tc_9c98e8af, TypeV2LDST>, Enc_4f4ed7, AddrModeRel {
17555 let Inst{24-21} = 0b1100;
17556 let Inst{31-27} = 0b01001;
17557 let hasNewValue = 1;
17558 let opNewValue = 0;
17559 let addrMode = Absolute;
17560 let accessSize = WordAccess;
17561 let mayLoad = 1;
17562 let isExtended = 1;
17563 let CextOpcode = "L2_loadri";
17564 let BaseOpcode = "L4_loadri_abs";
17565 let isPredicable = 1;
17566 let DecoderNamespace = "MustExtend";
17567 let isExtended = 1;
17568 let opExtendable = 1;
17569 let isExtentSigned = 0;
17570 let opExtentBits = 18;
17571 let opExtentAlign = 2;
17572 }
17573 def PS_loadrubabs : HInst<
17574 (outs IntRegs:$Rd32),
17575 (ins u32_0Imm:$Ii),
17576 "$Rd32 = memub(#$Ii)",
17577 tc_9c98e8af, TypeV2LDST>, Enc_25bef0, AddrModeRel {
17578 let Inst{24-21} = 0b1001;
17579 let Inst{31-27} = 0b01001;
17580 let hasNewValue = 1;
17581 let opNewValue = 0;
17582 let addrMode = Absolute;
17583 let accessSize = ByteAccess;
17584 let mayLoad = 1;
17585 let isExtended = 1;
17586 let CextOpcode = "L2_loadrub";
17587 let BaseOpcode = "L4_loadrub_abs";
17588 let isPredicable = 1;
17589 let DecoderNamespace = "MustExtend";
17590 let isExtended = 1;
17591 let opExtendable = 1;
17592 let isExtentSigned = 0;
17593 let opExtentBits = 16;
17594 let opExtentAlign = 0;
17595 }
17596 def PS_loadruhabs : HInst<
17597 (outs IntRegs:$Rd32),
17598 (ins u31_1Imm:$Ii),
17599 "$Rd32 = memuh(#$Ii)",
17600 tc_9c98e8af, TypeV2LDST>, Enc_8df4be, AddrModeRel {
17601 let Inst{24-21} = 0b1011;
17602 let Inst{31-27} = 0b01001;
17603 let hasNewValue = 1;
17604 let opNewValue = 0;
17605 let addrMode = Absolute;
17606 let accessSize = HalfWordAccess;
17607 let mayLoad = 1;
17608 let isExtended = 1;
17609 let CextOpcode = "L2_loadruh";
17610 let BaseOpcode = "L4_loadruh_abs";
17611 let isPredicable = 1;
17612 let DecoderNamespace = "MustExtend";
17613 let isExtended = 1;
17614 let opExtendable = 1;
17615 let isExtentSigned = 0;
17616 let opExtentBits = 17;
17617 let opExtentAlign = 1;
17618 }
17619 def PS_storerbabs : HInst<
17620 (outs),
17621 (ins u32_0Imm:$Ii, IntRegs:$Rt32),
17622 "memb(#$Ii) = $Rt32",
17623 tc_a788683e, TypeV2LDST>, Enc_1b64fb, AddrModeRel {
17624 let Inst{24-21} = 0b0000;
17625 let Inst{31-27} = 0b01001;
17626 let addrMode = Absolute;
17627 let accessSize = ByteAccess;
17628 let isExtended = 1;
17629 let mayStore = 1;
17630 let CextOpcode = "S2_storerb";
17631 let BaseOpcode = "S2_storerbabs";
17632 let isPredicable = 1;
17633 let isNVStorable = 1;
17634 let DecoderNamespace = "MustExtend";
17635 let isExtended = 1;
17636 let opExtendable = 0;
17637 let isExtentSigned = 0;
17638 let opExtentBits = 16;
17639 let opExtentAlign = 0;
17640 }
17641 def PS_storerbnewabs : HInst<
17642 (outs),
17643 (ins u32_0Imm:$Ii, IntRegs:$Nt8),
17644 "memb(#$Ii) = $Nt8.new",
17645 tc_ff9ee76e, TypeV2LDST>, Enc_ad1831, AddrModeRel {
17646 let Inst{12-11} = 0b00;
17647 let Inst{24-21} = 0b0101;
17648 let Inst{31-27} = 0b01001;
17649 let addrMode = Absolute;
17650 let accessSize = ByteAccess;
17651 let isNVStore = 1;
17652 let isNewValue = 1;
17653 let isExtended = 1;
17654 let isRestrictNoSlot1Store = 1;
17655 let mayStore = 1;
17656 let CextOpcode = "S2_storerb";
17657 let BaseOpcode = "S2_storerbabs";
17658 let isPredicable = 1;
17659 let DecoderNamespace = "MustExtend";
17660 let isExtended = 1;
17661 let opExtendable = 0;
17662 let isExtentSigned = 0;
17663 let opExtentBits = 16;
17664 let opExtentAlign = 0;
17665 let opNewValue = 1;
17666 }
17667 def PS_storerdabs : HInst<
17668 (outs),
17669 (ins u29_3Imm:$Ii, DoubleRegs:$Rtt32),
17670 "memd(#$Ii) = $Rtt32",
17671 tc_a788683e, TypeV2LDST>, Enc_5c124a, AddrModeRel {
17672 let Inst{24-21} = 0b0110;
17673 let Inst{31-27} = 0b01001;
17674 let addrMode = Absolute;
17675 let accessSize = DoubleWordAccess;
17676 let isExtended = 1;
17677 let mayStore = 1;
17678 let CextOpcode = "S2_storerd";
17679 let BaseOpcode = "S2_storerdabs";
17680 let isPredicable = 1;
17681 let DecoderNamespace = "MustExtend";
17682 let isExtended = 1;
17683 let opExtendable = 0;
17684 let isExtentSigned = 0;
17685 let opExtentBits = 19;
17686 let opExtentAlign = 3;
17687 }
17688 def PS_storerfabs : HInst<
17689 (outs),
17690 (ins u31_1Imm:$Ii, IntRegs:$Rt32),
17691 "memh(#$Ii) = $Rt32.h",
17692 tc_a788683e, TypeV2LDST>, Enc_fda92c, AddrModeRel {
17693 let Inst{24-21} = 0b0011;
17694 let Inst{31-27} = 0b01001;
17695 let addrMode = Absolute;
17696 let accessSize = HalfWordAccess;
17697 let isExtended = 1;
17698 let mayStore = 1;
17699 let CextOpcode = "S2_storerf";
17700 let BaseOpcode = "S2_storerfabs";
17701 let isPredicable = 1;
17702 let DecoderNamespace = "MustExtend";
17703 let isExtended = 1;
17704 let opExtendable = 0;
17705 let isExtentSigned = 0;
17706 let opExtentBits = 17;
17707 let opExtentAlign = 1;
17708 }
17709 def PS_storerhabs : HInst<
17710 (outs),
17711 (ins u31_1Imm:$Ii, IntRegs:$Rt32),
17712 "memh(#$Ii) = $Rt32",
17713 tc_a788683e, TypeV2LDST>, Enc_fda92c, AddrModeRel {
17714 let Inst{24-21} = 0b0010;
17715 let Inst{31-27} = 0b01001;
17716 let addrMode = Absolute;
17717 let accessSize = HalfWordAccess;
17718 let isExtended = 1;
17719 let mayStore = 1;
17720 let CextOpcode = "S2_storerh";
17721 let BaseOpcode = "S2_storerhabs";
17722 let isPredicable = 1;
17723 let isNVStorable = 1;
17724 let DecoderNamespace = "MustExtend";
17725 let isExtended = 1;
17726 let opExtendable = 0;
17727 let isExtentSigned = 0;
17728 let opExtentBits = 17;
17729 let opExtentAlign = 1;
17730 }
17731 def PS_storerhnewabs : HInst<
17732 (outs),
17733 (ins u31_1Imm:$Ii, IntRegs:$Nt8),
17734 "memh(#$Ii) = $Nt8.new",
17735 tc_ff9ee76e, TypeV2LDST>, Enc_bc03e5, AddrModeRel {
17736 let Inst{12-11} = 0b01;
17737 let Inst{24-21} = 0b0101;
17738 let Inst{31-27} = 0b01001;
17739 let addrMode = Absolute;
17740 let accessSize = HalfWordAccess;
17741 let isNVStore = 1;
17742 let isNewValue = 1;
17743 let isExtended = 1;
17744 let isRestrictNoSlot1Store = 1;
17745 let mayStore = 1;
17746 let CextOpcode = "S2_storerh";
17747 let BaseOpcode = "S2_storerhabs";
17748 let isPredicable = 1;
17749 let DecoderNamespace = "MustExtend";
17750 let isExtended = 1;
17751 let opExtendable = 0;
17752 let isExtentSigned = 0;
17753 let opExtentBits = 17;
17754 let opExtentAlign = 1;
17755 let opNewValue = 1;
17756 }
17757 def PS_storeriabs : HInst<
17758 (outs),
17759 (ins u30_2Imm:$Ii, IntRegs:$Rt32),
17760 "memw(#$Ii) = $Rt32",
17761 tc_a788683e, TypeV2LDST>, Enc_541f26, AddrModeRel {
17762 let Inst{24-21} = 0b0100;
17763 let Inst{31-27} = 0b01001;
17764 let addrMode = Absolute;
17765 let accessSize = WordAccess;
17766 let isExtended = 1;
17767 let mayStore = 1;
17768 let CextOpcode = "S2_storeri";
17769 let BaseOpcode = "S2_storeriabs";
17770 let isPredicable = 1;
17771 let isNVStorable = 1;
17772 let DecoderNamespace = "MustExtend";
17773 let isExtended = 1;
17774 let opExtendable = 0;
17775 let isExtentSigned = 0;
17776 let opExtentBits = 18;
17777 let opExtentAlign = 2;
17778 }
17779 def PS_storerinewabs : HInst<
17780 (outs),
17781 (ins u30_2Imm:$Ii, IntRegs:$Nt8),
17782 "memw(#$Ii) = $Nt8.new",
17783 tc_ff9ee76e, TypeV2LDST>, Enc_78cbf0, AddrModeRel {
17784 let Inst{12-11} = 0b10;
17785 let Inst{24-21} = 0b0101;
17786 let Inst{31-27} = 0b01001;
17787 let addrMode = Absolute;
17788 let accessSize = WordAccess;
17789 let isNVStore = 1;
17790 let isNewValue = 1;
17791 let isExtended = 1;
17792 let isRestrictNoSlot1Store = 1;
17793 let mayStore = 1;
17794 let CextOpcode = "S2_storeri";
17795 let BaseOpcode = "S2_storeriabs";
17796 let isPredicable = 1;
17797 let DecoderNamespace = "MustExtend";
17798 let isExtended = 1;
17799 let opExtendable = 0;
17800 let isExtentSigned = 0;
17801 let opExtentBits = 18;
17802 let opExtentAlign = 2;
17803 let opNewValue = 1;
17804 }
17805 def S2_addasl_rrri : HInst<
17806 (outs IntRegs:$Rd32),
17807 (ins IntRegs:$Rt32, IntRegs:$Rs32, u3_0Imm:$Ii),
17808 "$Rd32 = addasl($Rt32,$Rs32,#$Ii)",
17809 tc_c74f796f, TypeS_3op>, Enc_47ef61 {
17810 let Inst{13-13} = 0b0;
17811 let Inst{31-21} = 0b11000100000;
17812 let hasNewValue = 1;
17813 let opNewValue = 0;
17814 let prefersSlot3 = 1;
17815 }
17816 def S2_allocframe : HInst<
17817 (outs IntRegs:$Rx32),
17818 (ins IntRegs:$Rx32in, u11_3Imm:$Ii),
17819 "allocframe($Rx32,#$Ii):raw",
17820 tc_e216a5db, TypeST>, Enc_22c845 {
17821 let Inst{13-11} = 0b000;
17822 let Inst{31-21} = 0b10100000100;
17823 let hasNewValue = 1;
17824 let opNewValue = 0;
17825 let addrMode = BaseImmOffset;
17826 let accessSize = DoubleWordAccess;
17827 let mayStore = 1;
17828 let Uses = [FRAMEKEY, FRAMELIMIT, R30, R31];
17829 let Defs = [R30];
17830 let Constraints = "$Rx32 = $Rx32in";
17831 }
17832 def S2_asl_i_p : HInst<
17833 (outs DoubleRegs:$Rdd32),
17834 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii),
17835 "$Rdd32 = asl($Rss32,#$Ii)",
17836 tc_540fdfbc, TypeS_2op>, Enc_5eac98 {
17837 let Inst{7-5} = 0b010;
17838 let Inst{31-21} = 0b10000000000;
17839 }
17840 def S2_asl_i_p_acc : HInst<
17841 (outs DoubleRegs:$Rxx32),
17842 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
17843 "$Rxx32 += asl($Rss32,#$Ii)",
17844 tc_c74f796f, TypeS_2op>, Enc_70fb07 {
17845 let Inst{7-5} = 0b110;
17846 let Inst{31-21} = 0b10000010000;
17847 let prefersSlot3 = 1;
17848 let Constraints = "$Rxx32 = $Rxx32in";
17849 }
17850 def S2_asl_i_p_and : HInst<
17851 (outs DoubleRegs:$Rxx32),
17852 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
17853 "$Rxx32 &= asl($Rss32,#$Ii)",
17854 tc_84df2cd3, TypeS_2op>, Enc_70fb07 {
17855 let Inst{7-5} = 0b010;
17856 let Inst{31-21} = 0b10000010010;
17857 let prefersSlot3 = 1;
17858 let Constraints = "$Rxx32 = $Rxx32in";
17859 }
17860 def S2_asl_i_p_nac : HInst<
17861 (outs DoubleRegs:$Rxx32),
17862 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
17863 "$Rxx32 -= asl($Rss32,#$Ii)",
17864 tc_c74f796f, TypeS_2op>, Enc_70fb07 {
17865 let Inst{7-5} = 0b010;
17866 let Inst{31-21} = 0b10000010000;
17867 let prefersSlot3 = 1;
17868 let Constraints = "$Rxx32 = $Rxx32in";
17869 }
17870 def S2_asl_i_p_or : HInst<
17871 (outs DoubleRegs:$Rxx32),
17872 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
17873 "$Rxx32 |= asl($Rss32,#$Ii)",
17874 tc_84df2cd3, TypeS_2op>, Enc_70fb07 {
17875 let Inst{7-5} = 0b110;
17876 let Inst{31-21} = 0b10000010010;
17877 let prefersSlot3 = 1;
17878 let Constraints = "$Rxx32 = $Rxx32in";
17879 }
17880 def S2_asl_i_p_xacc : HInst<
17881 (outs DoubleRegs:$Rxx32),
17882 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
17883 "$Rxx32 ^= asl($Rss32,#$Ii)",
17884 tc_84df2cd3, TypeS_2op>, Enc_70fb07 {
17885 let Inst{7-5} = 0b010;
17886 let Inst{31-21} = 0b10000010100;
17887 let prefersSlot3 = 1;
17888 let Constraints = "$Rxx32 = $Rxx32in";
17889 }
17890 def S2_asl_i_r : HInst<
17891 (outs IntRegs:$Rd32),
17892 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
17893 "$Rd32 = asl($Rs32,#$Ii)",
17894 tc_540fdfbc, TypeS_2op>, Enc_a05677 {
17895 let Inst{7-5} = 0b010;
17896 let Inst{13-13} = 0b0;
17897 let Inst{31-21} = 0b10001100000;
17898 let hasNewValue = 1;
17899 let opNewValue = 0;
17900 }
17901 def S2_asl_i_r_acc : HInst<
17902 (outs IntRegs:$Rx32),
17903 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
17904 "$Rx32 += asl($Rs32,#$Ii)",
17905 tc_c74f796f, TypeS_2op>, Enc_28a2dc {
17906 let Inst{7-5} = 0b110;
17907 let Inst{13-13} = 0b0;
17908 let Inst{31-21} = 0b10001110000;
17909 let hasNewValue = 1;
17910 let opNewValue = 0;
17911 let prefersSlot3 = 1;
17912 let Constraints = "$Rx32 = $Rx32in";
17913 }
17914 def S2_asl_i_r_and : HInst<
17915 (outs IntRegs:$Rx32),
17916 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
17917 "$Rx32 &= asl($Rs32,#$Ii)",
17918 tc_84df2cd3, TypeS_2op>, Enc_28a2dc {
17919 let Inst{7-5} = 0b010;
17920 let Inst{13-13} = 0b0;
17921 let Inst{31-21} = 0b10001110010;
17922 let hasNewValue = 1;
17923 let opNewValue = 0;
17924 let prefersSlot3 = 1;
17925 let Constraints = "$Rx32 = $Rx32in";
17926 }
17927 def S2_asl_i_r_nac : HInst<
17928 (outs IntRegs:$Rx32),
17929 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
17930 "$Rx32 -= asl($Rs32,#$Ii)",
17931 tc_c74f796f, TypeS_2op>, Enc_28a2dc {
17932 let Inst{7-5} = 0b010;
17933 let Inst{13-13} = 0b0;
17934 let Inst{31-21} = 0b10001110000;
17935 let hasNewValue = 1;
17936 let opNewValue = 0;
17937 let prefersSlot3 = 1;
17938 let Constraints = "$Rx32 = $Rx32in";
17939 }
17940 def S2_asl_i_r_or : HInst<
17941 (outs IntRegs:$Rx32),
17942 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
17943 "$Rx32 |= asl($Rs32,#$Ii)",
17944 tc_84df2cd3, TypeS_2op>, Enc_28a2dc {
17945 let Inst{7-5} = 0b110;
17946 let Inst{13-13} = 0b0;
17947 let Inst{31-21} = 0b10001110010;
17948 let hasNewValue = 1;
17949 let opNewValue = 0;
17950 let prefersSlot3 = 1;
17951 let Constraints = "$Rx32 = $Rx32in";
17952 }
17953 def S2_asl_i_r_sat : HInst<
17954 (outs IntRegs:$Rd32),
17955 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
17956 "$Rd32 = asl($Rs32,#$Ii):sat",
17957 tc_b44c6e2a, TypeS_2op>, Enc_a05677 {
17958 let Inst{7-5} = 0b010;
17959 let Inst{13-13} = 0b0;
17960 let Inst{31-21} = 0b10001100010;
17961 let hasNewValue = 1;
17962 let opNewValue = 0;
17963 let prefersSlot3 = 1;
17964 let Defs = [USR_OVF];
17965 }
17966 def S2_asl_i_r_xacc : HInst<
17967 (outs IntRegs:$Rx32),
17968 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
17969 "$Rx32 ^= asl($Rs32,#$Ii)",
17970 tc_84df2cd3, TypeS_2op>, Enc_28a2dc {
17971 let Inst{7-5} = 0b010;
17972 let Inst{13-13} = 0b0;
17973 let Inst{31-21} = 0b10001110100;
17974 let hasNewValue = 1;
17975 let opNewValue = 0;
17976 let prefersSlot3 = 1;
17977 let Constraints = "$Rx32 = $Rx32in";
17978 }
17979 def S2_asl_i_vh : HInst<
17980 (outs DoubleRegs:$Rdd32),
17981 (ins DoubleRegs:$Rss32, u4_0Imm:$Ii),
17982 "$Rdd32 = vaslh($Rss32,#$Ii)",
17983 tc_540fdfbc, TypeS_2op>, Enc_12b6e9 {
17984 let Inst{7-5} = 0b010;
17985 let Inst{13-12} = 0b00;
17986 let Inst{31-21} = 0b10000000100;
17987 }
17988 def S2_asl_i_vw : HInst<
17989 (outs DoubleRegs:$Rdd32),
17990 (ins DoubleRegs:$Rss32, u5_0Imm:$Ii),
17991 "$Rdd32 = vaslw($Rss32,#$Ii)",
17992 tc_540fdfbc, TypeS_2op>, Enc_7e5a82 {
17993 let Inst{7-5} = 0b010;
17994 let Inst{13-13} = 0b0;
17995 let Inst{31-21} = 0b10000000010;
17996 }
17997 def S2_asl_r_p : HInst<
17998 (outs DoubleRegs:$Rdd32),
17999 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18000 "$Rdd32 = asl($Rss32,$Rt32)",
18001 tc_540fdfbc, TypeS_3op>, Enc_927852 {
18002 let Inst{7-5} = 0b100;
18003 let Inst{13-13} = 0b0;
18004 let Inst{31-21} = 0b11000011100;
18005 }
18006 def S2_asl_r_p_acc : HInst<
18007 (outs DoubleRegs:$Rxx32),
18008 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18009 "$Rxx32 += asl($Rss32,$Rt32)",
18010 tc_c74f796f, TypeS_3op>, Enc_1aa186 {
18011 let Inst{7-5} = 0b100;
18012 let Inst{13-13} = 0b0;
18013 let Inst{31-21} = 0b11001011110;
18014 let prefersSlot3 = 1;
18015 let Constraints = "$Rxx32 = $Rxx32in";
18016 }
18017 def S2_asl_r_p_and : HInst<
18018 (outs DoubleRegs:$Rxx32),
18019 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18020 "$Rxx32 &= asl($Rss32,$Rt32)",
18021 tc_84df2cd3, TypeS_3op>, Enc_1aa186 {
18022 let Inst{7-5} = 0b100;
18023 let Inst{13-13} = 0b0;
18024 let Inst{31-21} = 0b11001011010;
18025 let prefersSlot3 = 1;
18026 let Constraints = "$Rxx32 = $Rxx32in";
18027 }
18028 def S2_asl_r_p_nac : HInst<
18029 (outs DoubleRegs:$Rxx32),
18030 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18031 "$Rxx32 -= asl($Rss32,$Rt32)",
18032 tc_c74f796f, TypeS_3op>, Enc_1aa186 {
18033 let Inst{7-5} = 0b100;
18034 let Inst{13-13} = 0b0;
18035 let Inst{31-21} = 0b11001011100;
18036 let prefersSlot3 = 1;
18037 let Constraints = "$Rxx32 = $Rxx32in";
18038 }
18039 def S2_asl_r_p_or : HInst<
18040 (outs DoubleRegs:$Rxx32),
18041 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18042 "$Rxx32 |= asl($Rss32,$Rt32)",
18043 tc_84df2cd3, TypeS_3op>, Enc_1aa186 {
18044 let Inst{7-5} = 0b100;
18045 let Inst{13-13} = 0b0;
18046 let Inst{31-21} = 0b11001011000;
18047 let prefersSlot3 = 1;
18048 let Constraints = "$Rxx32 = $Rxx32in";
18049 }
18050 def S2_asl_r_p_xor : HInst<
18051 (outs DoubleRegs:$Rxx32),
18052 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18053 "$Rxx32 ^= asl($Rss32,$Rt32)",
18054 tc_84df2cd3, TypeS_3op>, Enc_1aa186 {
18055 let Inst{7-5} = 0b100;
18056 let Inst{13-13} = 0b0;
18057 let Inst{31-21} = 0b11001011011;
18058 let prefersSlot3 = 1;
18059 let Constraints = "$Rxx32 = $Rxx32in";
18060 }
18061 def S2_asl_r_r : HInst<
18062 (outs IntRegs:$Rd32),
18063 (ins IntRegs:$Rs32, IntRegs:$Rt32),
18064 "$Rd32 = asl($Rs32,$Rt32)",
18065 tc_540fdfbc, TypeS_3op>, Enc_5ab2be {
18066 let Inst{7-5} = 0b100;
18067 let Inst{13-13} = 0b0;
18068 let Inst{31-21} = 0b11000110010;
18069 let hasNewValue = 1;
18070 let opNewValue = 0;
18071 }
18072 def S2_asl_r_r_acc : HInst<
18073 (outs IntRegs:$Rx32),
18074 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18075 "$Rx32 += asl($Rs32,$Rt32)",
18076 tc_c74f796f, TypeS_3op>, Enc_2ae154 {
18077 let Inst{7-5} = 0b100;
18078 let Inst{13-13} = 0b0;
18079 let Inst{31-21} = 0b11001100110;
18080 let hasNewValue = 1;
18081 let opNewValue = 0;
18082 let prefersSlot3 = 1;
18083 let Constraints = "$Rx32 = $Rx32in";
18084 }
18085 def S2_asl_r_r_and : HInst<
18086 (outs IntRegs:$Rx32),
18087 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18088 "$Rx32 &= asl($Rs32,$Rt32)",
18089 tc_84df2cd3, TypeS_3op>, Enc_2ae154 {
18090 let Inst{7-5} = 0b100;
18091 let Inst{13-13} = 0b0;
18092 let Inst{31-21} = 0b11001100010;
18093 let hasNewValue = 1;
18094 let opNewValue = 0;
18095 let prefersSlot3 = 1;
18096 let Constraints = "$Rx32 = $Rx32in";
18097 }
18098 def S2_asl_r_r_nac : HInst<
18099 (outs IntRegs:$Rx32),
18100 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18101 "$Rx32 -= asl($Rs32,$Rt32)",
18102 tc_c74f796f, TypeS_3op>, Enc_2ae154 {
18103 let Inst{7-5} = 0b100;
18104 let Inst{13-13} = 0b0;
18105 let Inst{31-21} = 0b11001100100;
18106 let hasNewValue = 1;
18107 let opNewValue = 0;
18108 let prefersSlot3 = 1;
18109 let Constraints = "$Rx32 = $Rx32in";
18110 }
18111 def S2_asl_r_r_or : HInst<
18112 (outs IntRegs:$Rx32),
18113 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18114 "$Rx32 |= asl($Rs32,$Rt32)",
18115 tc_84df2cd3, TypeS_3op>, Enc_2ae154 {
18116 let Inst{7-5} = 0b100;
18117 let Inst{13-13} = 0b0;
18118 let Inst{31-21} = 0b11001100000;
18119 let hasNewValue = 1;
18120 let opNewValue = 0;
18121 let prefersSlot3 = 1;
18122 let Constraints = "$Rx32 = $Rx32in";
18123 }
18124 def S2_asl_r_r_sat : HInst<
18125 (outs IntRegs:$Rd32),
18126 (ins IntRegs:$Rs32, IntRegs:$Rt32),
18127 "$Rd32 = asl($Rs32,$Rt32):sat",
18128 tc_b44c6e2a, TypeS_3op>, Enc_5ab2be {
18129 let Inst{7-5} = 0b100;
18130 let Inst{13-13} = 0b0;
18131 let Inst{31-21} = 0b11000110000;
18132 let hasNewValue = 1;
18133 let opNewValue = 0;
18134 let prefersSlot3 = 1;
18135 let Defs = [USR_OVF];
18136 }
18137 def S2_asl_r_vh : HInst<
18138 (outs DoubleRegs:$Rdd32),
18139 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18140 "$Rdd32 = vaslh($Rss32,$Rt32)",
18141 tc_540fdfbc, TypeS_3op>, Enc_927852 {
18142 let Inst{7-5} = 0b100;
18143 let Inst{13-13} = 0b0;
18144 let Inst{31-21} = 0b11000011010;
18145 }
18146 def S2_asl_r_vw : HInst<
18147 (outs DoubleRegs:$Rdd32),
18148 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18149 "$Rdd32 = vaslw($Rss32,$Rt32)",
18150 tc_540fdfbc, TypeS_3op>, Enc_927852 {
18151 let Inst{7-5} = 0b100;
18152 let Inst{13-13} = 0b0;
18153 let Inst{31-21} = 0b11000011000;
18154 }
18155 def S2_asr_i_p : HInst<
18156 (outs DoubleRegs:$Rdd32),
18157 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii),
18158 "$Rdd32 = asr($Rss32,#$Ii)",
18159 tc_540fdfbc, TypeS_2op>, Enc_5eac98 {
18160 let Inst{7-5} = 0b000;
18161 let Inst{31-21} = 0b10000000000;
18162 }
18163 def S2_asr_i_p_acc : HInst<
18164 (outs DoubleRegs:$Rxx32),
18165 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
18166 "$Rxx32 += asr($Rss32,#$Ii)",
18167 tc_c74f796f, TypeS_2op>, Enc_70fb07 {
18168 let Inst{7-5} = 0b100;
18169 let Inst{31-21} = 0b10000010000;
18170 let prefersSlot3 = 1;
18171 let Constraints = "$Rxx32 = $Rxx32in";
18172 }
18173 def S2_asr_i_p_and : HInst<
18174 (outs DoubleRegs:$Rxx32),
18175 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
18176 "$Rxx32 &= asr($Rss32,#$Ii)",
18177 tc_84df2cd3, TypeS_2op>, Enc_70fb07 {
18178 let Inst{7-5} = 0b000;
18179 let Inst{31-21} = 0b10000010010;
18180 let prefersSlot3 = 1;
18181 let Constraints = "$Rxx32 = $Rxx32in";
18182 }
18183 def S2_asr_i_p_nac : HInst<
18184 (outs DoubleRegs:$Rxx32),
18185 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
18186 "$Rxx32 -= asr($Rss32,#$Ii)",
18187 tc_c74f796f, TypeS_2op>, Enc_70fb07 {
18188 let Inst{7-5} = 0b000;
18189 let Inst{31-21} = 0b10000010000;
18190 let prefersSlot3 = 1;
18191 let Constraints = "$Rxx32 = $Rxx32in";
18192 }
18193 def S2_asr_i_p_or : HInst<
18194 (outs DoubleRegs:$Rxx32),
18195 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
18196 "$Rxx32 |= asr($Rss32,#$Ii)",
18197 tc_84df2cd3, TypeS_2op>, Enc_70fb07 {
18198 let Inst{7-5} = 0b100;
18199 let Inst{31-21} = 0b10000010010;
18200 let prefersSlot3 = 1;
18201 let Constraints = "$Rxx32 = $Rxx32in";
18202 }
18203 def S2_asr_i_p_rnd : HInst<
18204 (outs DoubleRegs:$Rdd32),
18205 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii),
18206 "$Rdd32 = asr($Rss32,#$Ii):rnd",
18207 tc_2b6f77c6, TypeS_2op>, Enc_5eac98, Requires<[HasV5]> {
18208 let Inst{7-5} = 0b111;
18209 let Inst{31-21} = 0b10000000110;
18210 let prefersSlot3 = 1;
18211 }
18212 def S2_asr_i_p_rnd_goodsyntax : HInst<
18213 (outs DoubleRegs:$Rdd32),
18214 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii),
18215 "$Rdd32 = asrrnd($Rss32,#$Ii)",
18216 tc_2b6f77c6, TypeS_2op>, Requires<[HasV5]> {
18217 let isPseudo = 1;
18218 }
18219 def S2_asr_i_r : HInst<
18220 (outs IntRegs:$Rd32),
18221 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
18222 "$Rd32 = asr($Rs32,#$Ii)",
18223 tc_540fdfbc, TypeS_2op>, Enc_a05677 {
18224 let Inst{7-5} = 0b000;
18225 let Inst{13-13} = 0b0;
18226 let Inst{31-21} = 0b10001100000;
18227 let hasNewValue = 1;
18228 let opNewValue = 0;
18229 }
18230 def S2_asr_i_r_acc : HInst<
18231 (outs IntRegs:$Rx32),
18232 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
18233 "$Rx32 += asr($Rs32,#$Ii)",
18234 tc_c74f796f, TypeS_2op>, Enc_28a2dc {
18235 let Inst{7-5} = 0b100;
18236 let Inst{13-13} = 0b0;
18237 let Inst{31-21} = 0b10001110000;
18238 let hasNewValue = 1;
18239 let opNewValue = 0;
18240 let prefersSlot3 = 1;
18241 let Constraints = "$Rx32 = $Rx32in";
18242 }
18243 def S2_asr_i_r_and : HInst<
18244 (outs IntRegs:$Rx32),
18245 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
18246 "$Rx32 &= asr($Rs32,#$Ii)",
18247 tc_84df2cd3, TypeS_2op>, Enc_28a2dc {
18248 let Inst{7-5} = 0b000;
18249 let Inst{13-13} = 0b0;
18250 let Inst{31-21} = 0b10001110010;
18251 let hasNewValue = 1;
18252 let opNewValue = 0;
18253 let prefersSlot3 = 1;
18254 let Constraints = "$Rx32 = $Rx32in";
18255 }
18256 def S2_asr_i_r_nac : HInst<
18257 (outs IntRegs:$Rx32),
18258 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
18259 "$Rx32 -= asr($Rs32,#$Ii)",
18260 tc_c74f796f, TypeS_2op>, Enc_28a2dc {
18261 let Inst{7-5} = 0b000;
18262 let Inst{13-13} = 0b0;
18263 let Inst{31-21} = 0b10001110000;
18264 let hasNewValue = 1;
18265 let opNewValue = 0;
18266 let prefersSlot3 = 1;
18267 let Constraints = "$Rx32 = $Rx32in";
18268 }
18269 def S2_asr_i_r_or : HInst<
18270 (outs IntRegs:$Rx32),
18271 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
18272 "$Rx32 |= asr($Rs32,#$Ii)",
18273 tc_84df2cd3, TypeS_2op>, Enc_28a2dc {
18274 let Inst{7-5} = 0b100;
18275 let Inst{13-13} = 0b0;
18276 let Inst{31-21} = 0b10001110010;
18277 let hasNewValue = 1;
18278 let opNewValue = 0;
18279 let prefersSlot3 = 1;
18280 let Constraints = "$Rx32 = $Rx32in";
18281 }
18282 def S2_asr_i_r_rnd : HInst<
18283 (outs IntRegs:$Rd32),
18284 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
18285 "$Rd32 = asr($Rs32,#$Ii):rnd",
18286 tc_2b6f77c6, TypeS_2op>, Enc_a05677 {
18287 let Inst{7-5} = 0b000;
18288 let Inst{13-13} = 0b0;
18289 let Inst{31-21} = 0b10001100010;
18290 let hasNewValue = 1;
18291 let opNewValue = 0;
18292 let prefersSlot3 = 1;
18293 }
18294 def S2_asr_i_r_rnd_goodsyntax : HInst<
18295 (outs IntRegs:$Rd32),
18296 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
18297 "$Rd32 = asrrnd($Rs32,#$Ii)",
18298 tc_2b6f77c6, TypeS_2op> {
18299 let hasNewValue = 1;
18300 let opNewValue = 0;
18301 let isPseudo = 1;
18302 }
18303 def S2_asr_i_svw_trun : HInst<
18304 (outs IntRegs:$Rd32),
18305 (ins DoubleRegs:$Rss32, u5_0Imm:$Ii),
18306 "$Rd32 = vasrw($Rss32,#$Ii)",
18307 tc_1b9c9ee5, TypeS_2op>, Enc_8dec2e {
18308 let Inst{7-5} = 0b010;
18309 let Inst{13-13} = 0b0;
18310 let Inst{31-21} = 0b10001000110;
18311 let hasNewValue = 1;
18312 let opNewValue = 0;
18313 let prefersSlot3 = 1;
18314 }
18315 def S2_asr_i_vh : HInst<
18316 (outs DoubleRegs:$Rdd32),
18317 (ins DoubleRegs:$Rss32, u4_0Imm:$Ii),
18318 "$Rdd32 = vasrh($Rss32,#$Ii)",
18319 tc_540fdfbc, TypeS_2op>, Enc_12b6e9 {
18320 let Inst{7-5} = 0b000;
18321 let Inst{13-12} = 0b00;
18322 let Inst{31-21} = 0b10000000100;
18323 }
18324 def S2_asr_i_vw : HInst<
18325 (outs DoubleRegs:$Rdd32),
18326 (ins DoubleRegs:$Rss32, u5_0Imm:$Ii),
18327 "$Rdd32 = vasrw($Rss32,#$Ii)",
18328 tc_540fdfbc, TypeS_2op>, Enc_7e5a82 {
18329 let Inst{7-5} = 0b000;
18330 let Inst{13-13} = 0b0;
18331 let Inst{31-21} = 0b10000000010;
18332 }
18333 def S2_asr_r_p : HInst<
18334 (outs DoubleRegs:$Rdd32),
18335 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18336 "$Rdd32 = asr($Rss32,$Rt32)",
18337 tc_540fdfbc, TypeS_3op>, Enc_927852 {
18338 let Inst{7-5} = 0b000;
18339 let Inst{13-13} = 0b0;
18340 let Inst{31-21} = 0b11000011100;
18341 }
18342 def S2_asr_r_p_acc : HInst<
18343 (outs DoubleRegs:$Rxx32),
18344 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18345 "$Rxx32 += asr($Rss32,$Rt32)",
18346 tc_c74f796f, TypeS_3op>, Enc_1aa186 {
18347 let Inst{7-5} = 0b000;
18348 let Inst{13-13} = 0b0;
18349 let Inst{31-21} = 0b11001011110;
18350 let prefersSlot3 = 1;
18351 let Constraints = "$Rxx32 = $Rxx32in";
18352 }
18353 def S2_asr_r_p_and : HInst<
18354 (outs DoubleRegs:$Rxx32),
18355 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18356 "$Rxx32 &= asr($Rss32,$Rt32)",
18357 tc_84df2cd3, TypeS_3op>, Enc_1aa186 {
18358 let Inst{7-5} = 0b000;
18359 let Inst{13-13} = 0b0;
18360 let Inst{31-21} = 0b11001011010;
18361 let prefersSlot3 = 1;
18362 let Constraints = "$Rxx32 = $Rxx32in";
18363 }
18364 def S2_asr_r_p_nac : HInst<
18365 (outs DoubleRegs:$Rxx32),
18366 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18367 "$Rxx32 -= asr($Rss32,$Rt32)",
18368 tc_c74f796f, TypeS_3op>, Enc_1aa186 {
18369 let Inst{7-5} = 0b000;
18370 let Inst{13-13} = 0b0;
18371 let Inst{31-21} = 0b11001011100;
18372 let prefersSlot3 = 1;
18373 let Constraints = "$Rxx32 = $Rxx32in";
18374 }
18375 def S2_asr_r_p_or : HInst<
18376 (outs DoubleRegs:$Rxx32),
18377 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18378 "$Rxx32 |= asr($Rss32,$Rt32)",
18379 tc_84df2cd3, TypeS_3op>, Enc_1aa186 {
18380 let Inst{7-5} = 0b000;
18381 let Inst{13-13} = 0b0;
18382 let Inst{31-21} = 0b11001011000;
18383 let prefersSlot3 = 1;
18384 let Constraints = "$Rxx32 = $Rxx32in";
18385 }
18386 def S2_asr_r_p_xor : HInst<
18387 (outs DoubleRegs:$Rxx32),
18388 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18389 "$Rxx32 ^= asr($Rss32,$Rt32)",
18390 tc_84df2cd3, TypeS_3op>, Enc_1aa186 {
18391 let Inst{7-5} = 0b000;
18392 let Inst{13-13} = 0b0;
18393 let Inst{31-21} = 0b11001011011;
18394 let prefersSlot3 = 1;
18395 let Constraints = "$Rxx32 = $Rxx32in";
18396 }
18397 def S2_asr_r_r : HInst<
18398 (outs IntRegs:$Rd32),
18399 (ins IntRegs:$Rs32, IntRegs:$Rt32),
18400 "$Rd32 = asr($Rs32,$Rt32)",
18401 tc_540fdfbc, TypeS_3op>, Enc_5ab2be {
18402 let Inst{7-5} = 0b000;
18403 let Inst{13-13} = 0b0;
18404 let Inst{31-21} = 0b11000110010;
18405 let hasNewValue = 1;
18406 let opNewValue = 0;
18407 }
18408 def S2_asr_r_r_acc : HInst<
18409 (outs IntRegs:$Rx32),
18410 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18411 "$Rx32 += asr($Rs32,$Rt32)",
18412 tc_c74f796f, TypeS_3op>, Enc_2ae154 {
18413 let Inst{7-5} = 0b000;
18414 let Inst{13-13} = 0b0;
18415 let Inst{31-21} = 0b11001100110;
18416 let hasNewValue = 1;
18417 let opNewValue = 0;
18418 let prefersSlot3 = 1;
18419 let Constraints = "$Rx32 = $Rx32in";
18420 }
18421 def S2_asr_r_r_and : HInst<
18422 (outs IntRegs:$Rx32),
18423 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18424 "$Rx32 &= asr($Rs32,$Rt32)",
18425 tc_84df2cd3, TypeS_3op>, Enc_2ae154 {
18426 let Inst{7-5} = 0b000;
18427 let Inst{13-13} = 0b0;
18428 let Inst{31-21} = 0b11001100010;
18429 let hasNewValue = 1;
18430 let opNewValue = 0;
18431 let prefersSlot3 = 1;
18432 let Constraints = "$Rx32 = $Rx32in";
18433 }
18434 def S2_asr_r_r_nac : HInst<
18435 (outs IntRegs:$Rx32),
18436 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18437 "$Rx32 -= asr($Rs32,$Rt32)",
18438 tc_c74f796f, TypeS_3op>, Enc_2ae154 {
18439 let Inst{7-5} = 0b000;
18440 let Inst{13-13} = 0b0;
18441 let Inst{31-21} = 0b11001100100;
18442 let hasNewValue = 1;
18443 let opNewValue = 0;
18444 let prefersSlot3 = 1;
18445 let Constraints = "$Rx32 = $Rx32in";
18446 }
18447 def S2_asr_r_r_or : HInst<
18448 (outs IntRegs:$Rx32),
18449 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18450 "$Rx32 |= asr($Rs32,$Rt32)",
18451 tc_84df2cd3, TypeS_3op>, Enc_2ae154 {
18452 let Inst{7-5} = 0b000;
18453 let Inst{13-13} = 0b0;
18454 let Inst{31-21} = 0b11001100000;
18455 let hasNewValue = 1;
18456 let opNewValue = 0;
18457 let prefersSlot3 = 1;
18458 let Constraints = "$Rx32 = $Rx32in";
18459 }
18460 def S2_asr_r_r_sat : HInst<
18461 (outs IntRegs:$Rd32),
18462 (ins IntRegs:$Rs32, IntRegs:$Rt32),
18463 "$Rd32 = asr($Rs32,$Rt32):sat",
18464 tc_b44c6e2a, TypeS_3op>, Enc_5ab2be {
18465 let Inst{7-5} = 0b000;
18466 let Inst{13-13} = 0b0;
18467 let Inst{31-21} = 0b11000110000;
18468 let hasNewValue = 1;
18469 let opNewValue = 0;
18470 let prefersSlot3 = 1;
18471 let Defs = [USR_OVF];
18472 }
18473 def S2_asr_r_svw_trun : HInst<
18474 (outs IntRegs:$Rd32),
18475 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18476 "$Rd32 = vasrw($Rss32,$Rt32)",
18477 tc_1b9c9ee5, TypeS_3op>, Enc_3d5b28 {
18478 let Inst{7-5} = 0b010;
18479 let Inst{13-13} = 0b0;
18480 let Inst{31-21} = 0b11000101000;
18481 let hasNewValue = 1;
18482 let opNewValue = 0;
18483 let prefersSlot3 = 1;
18484 }
18485 def S2_asr_r_vh : HInst<
18486 (outs DoubleRegs:$Rdd32),
18487 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18488 "$Rdd32 = vasrh($Rss32,$Rt32)",
18489 tc_540fdfbc, TypeS_3op>, Enc_927852 {
18490 let Inst{7-5} = 0b000;
18491 let Inst{13-13} = 0b0;
18492 let Inst{31-21} = 0b11000011010;
18493 }
18494 def S2_asr_r_vw : HInst<
18495 (outs DoubleRegs:$Rdd32),
18496 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18497 "$Rdd32 = vasrw($Rss32,$Rt32)",
18498 tc_540fdfbc, TypeS_3op>, Enc_927852 {
18499 let Inst{7-5} = 0b000;
18500 let Inst{13-13} = 0b0;
18501 let Inst{31-21} = 0b11000011000;
18502 }
18503 def S2_brev : HInst<
18504 (outs IntRegs:$Rd32),
18505 (ins IntRegs:$Rs32),
18506 "$Rd32 = brev($Rs32)",
18507 tc_d088982c, TypeS_2op>, Enc_5e2823 {
18508 let Inst{13-5} = 0b000000110;
18509 let Inst{31-21} = 0b10001100010;
18510 let hasNewValue = 1;
18511 let opNewValue = 0;
18512 let prefersSlot3 = 1;
18513 }
18514 def S2_brevp : HInst<
18515 (outs DoubleRegs:$Rdd32),
18516 (ins DoubleRegs:$Rss32),
18517 "$Rdd32 = brev($Rss32)",
18518 tc_d088982c, TypeS_2op>, Enc_b9c5fb {
18519 let Inst{13-5} = 0b000000110;
18520 let Inst{31-21} = 0b10000000110;
18521 let prefersSlot3 = 1;
18522 }
18523 def S2_cabacdecbin : HInst<
18524 (outs DoubleRegs:$Rdd32),
18525 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
18526 "$Rdd32 = decbin($Rss32,$Rtt32)",
18527 tc_c6ebf8dd, TypeS_3op>, Enc_a56825 {
18528 let Inst{7-5} = 0b110;
18529 let Inst{13-13} = 0b0;
18530 let Inst{31-21} = 0b11000001110;
18531 let isPredicateLate = 1;
18532 let prefersSlot3 = 1;
18533 let Defs = [P0];
18534 }
18535 def S2_cl0 : HInst<
18536 (outs IntRegs:$Rd32),
18537 (ins IntRegs:$Rs32),
18538 "$Rd32 = cl0($Rs32)",
18539 tc_d088982c, TypeS_2op>, Enc_5e2823 {
18540 let Inst{13-5} = 0b000000101;
18541 let Inst{31-21} = 0b10001100000;
18542 let hasNewValue = 1;
18543 let opNewValue = 0;
18544 let prefersSlot3 = 1;
18545 }
18546 def S2_cl0p : HInst<
18547 (outs IntRegs:$Rd32),
18548 (ins DoubleRegs:$Rss32),
18549 "$Rd32 = cl0($Rss32)",
18550 tc_d088982c, TypeS_2op>, Enc_90cd8b {
18551 let Inst{13-5} = 0b000000010;
18552 let Inst{31-21} = 0b10001000010;
18553 let hasNewValue = 1;
18554 let opNewValue = 0;
18555 let prefersSlot3 = 1;
18556 }
18557 def S2_cl1 : HInst<
18558 (outs IntRegs:$Rd32),
18559 (ins IntRegs:$Rs32),
18560 "$Rd32 = cl1($Rs32)",
18561 tc_d088982c, TypeS_2op>, Enc_5e2823 {
18562 let Inst{13-5} = 0b000000110;
18563 let Inst{31-21} = 0b10001100000;
18564 let hasNewValue = 1;
18565 let opNewValue = 0;
18566 let prefersSlot3 = 1;
18567 }
18568 def S2_cl1p : HInst<
18569 (outs IntRegs:$Rd32),
18570 (ins DoubleRegs:$Rss32),
18571 "$Rd32 = cl1($Rss32)",
18572 tc_d088982c, TypeS_2op>, Enc_90cd8b {
18573 let Inst{13-5} = 0b000000100;
18574 let Inst{31-21} = 0b10001000010;
18575 let hasNewValue = 1;
18576 let opNewValue = 0;
18577 let prefersSlot3 = 1;
18578 }
18579 def S2_clb : HInst<
18580 (outs IntRegs:$Rd32),
18581 (ins IntRegs:$Rs32),
18582 "$Rd32 = clb($Rs32)",
18583 tc_d088982c, TypeS_2op>, Enc_5e2823 {
18584 let Inst{13-5} = 0b000000100;
18585 let Inst{31-21} = 0b10001100000;
18586 let hasNewValue = 1;
18587 let opNewValue = 0;
18588 let prefersSlot3 = 1;
18589 }
18590 def S2_clbnorm : HInst<
18591 (outs IntRegs:$Rd32),
18592 (ins IntRegs:$Rs32),
18593 "$Rd32 = normamt($Rs32)",
18594 tc_d088982c, TypeS_2op>, Enc_5e2823 {
18595 let Inst{13-5} = 0b000000111;
18596 let Inst{31-21} = 0b10001100000;
18597 let hasNewValue = 1;
18598 let opNewValue = 0;
18599 let prefersSlot3 = 1;
18600 }
18601 def S2_clbp : HInst<
18602 (outs IntRegs:$Rd32),
18603 (ins DoubleRegs:$Rss32),
18604 "$Rd32 = clb($Rss32)",
18605 tc_d088982c, TypeS_2op>, Enc_90cd8b {
18606 let Inst{13-5} = 0b000000000;
18607 let Inst{31-21} = 0b10001000010;
18608 let hasNewValue = 1;
18609 let opNewValue = 0;
18610 let prefersSlot3 = 1;
18611 }
18612 def S2_clrbit_i : HInst<
18613 (outs IntRegs:$Rd32),
18614 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
18615 "$Rd32 = clrbit($Rs32,#$Ii)",
18616 tc_540fdfbc, TypeS_2op>, Enc_a05677 {
18617 let Inst{7-5} = 0b001;
18618 let Inst{13-13} = 0b0;
18619 let Inst{31-21} = 0b10001100110;
18620 let hasNewValue = 1;
18621 let opNewValue = 0;
18622 }
18623 def S2_clrbit_r : HInst<
18624 (outs IntRegs:$Rd32),
18625 (ins IntRegs:$Rs32, IntRegs:$Rt32),
18626 "$Rd32 = clrbit($Rs32,$Rt32)",
18627 tc_540fdfbc, TypeS_3op>, Enc_5ab2be {
18628 let Inst{7-5} = 0b010;
18629 let Inst{13-13} = 0b0;
18630 let Inst{31-21} = 0b11000110100;
18631 let hasNewValue = 1;
18632 let opNewValue = 0;
18633 }
18634 def S2_ct0 : HInst<
18635 (outs IntRegs:$Rd32),
18636 (ins IntRegs:$Rs32),
18637 "$Rd32 = ct0($Rs32)",
18638 tc_d088982c, TypeS_2op>, Enc_5e2823 {
18639 let Inst{13-5} = 0b000000100;
18640 let Inst{31-21} = 0b10001100010;
18641 let hasNewValue = 1;
18642 let opNewValue = 0;
18643 let prefersSlot3 = 1;
18644 }
18645 def S2_ct0p : HInst<
18646 (outs IntRegs:$Rd32),
18647 (ins DoubleRegs:$Rss32),
18648 "$Rd32 = ct0($Rss32)",
18649 tc_d088982c, TypeS_2op>, Enc_90cd8b {
18650 let Inst{13-5} = 0b000000010;
18651 let Inst{31-21} = 0b10001000111;
18652 let hasNewValue = 1;
18653 let opNewValue = 0;
18654 let prefersSlot3 = 1;
18655 }
18656 def S2_ct1 : HInst<
18657 (outs IntRegs:$Rd32),
18658 (ins IntRegs:$Rs32),
18659 "$Rd32 = ct1($Rs32)",
18660 tc_d088982c, TypeS_2op>, Enc_5e2823 {
18661 let Inst{13-5} = 0b000000101;
18662 let Inst{31-21} = 0b10001100010;
18663 let hasNewValue = 1;
18664 let opNewValue = 0;
18665 let prefersSlot3 = 1;
18666 }
18667 def S2_ct1p : HInst<
18668 (outs IntRegs:$Rd32),
18669 (ins DoubleRegs:$Rss32),
18670 "$Rd32 = ct1($Rss32)",
18671 tc_d088982c, TypeS_2op>, Enc_90cd8b {
18672 let Inst{13-5} = 0b000000100;
18673 let Inst{31-21} = 0b10001000111;
18674 let hasNewValue = 1;
18675 let opNewValue = 0;
18676 let prefersSlot3 = 1;
18677 }
18678 def S2_deinterleave : HInst<
18679 (outs DoubleRegs:$Rdd32),
18680 (ins DoubleRegs:$Rss32),
18681 "$Rdd32 = deinterleave($Rss32)",
18682 tc_d088982c, TypeS_2op>, Enc_b9c5fb {
18683 let Inst{13-5} = 0b000000100;
18684 let Inst{31-21} = 0b10000000110;
18685 let prefersSlot3 = 1;
18686 }
18687 def S2_extractu : HInst<
18688 (outs IntRegs:$Rd32),
18689 (ins IntRegs:$Rs32, u5_0Imm:$Ii, u5_0Imm:$II),
18690 "$Rd32 = extractu($Rs32,#$Ii,#$II)",
18691 tc_c74f796f, TypeS_2op>, Enc_b388cf {
18692 let Inst{13-13} = 0b0;
18693 let Inst{31-23} = 0b100011010;
18694 let hasNewValue = 1;
18695 let opNewValue = 0;
18696 let prefersSlot3 = 1;
18697 }
18698 def S2_extractu_rp : HInst<
18699 (outs IntRegs:$Rd32),
18700 (ins IntRegs:$Rs32, DoubleRegs:$Rtt32),
18701 "$Rd32 = extractu($Rs32,$Rtt32)",
18702 tc_2b6f77c6, TypeS_3op>, Enc_e07374 {
18703 let Inst{7-5} = 0b000;
18704 let Inst{13-13} = 0b0;
18705 let Inst{31-21} = 0b11001001000;
18706 let hasNewValue = 1;
18707 let opNewValue = 0;
18708 let prefersSlot3 = 1;
18709 }
18710 def S2_extractup : HInst<
18711 (outs DoubleRegs:$Rdd32),
18712 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii, u6_0Imm:$II),
18713 "$Rdd32 = extractu($Rss32,#$Ii,#$II)",
18714 tc_c74f796f, TypeS_2op>, Enc_b84c4c {
18715 let Inst{31-24} = 0b10000001;
18716 let prefersSlot3 = 1;
18717 }
18718 def S2_extractup_rp : HInst<
18719 (outs DoubleRegs:$Rdd32),
18720 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
18721 "$Rdd32 = extractu($Rss32,$Rtt32)",
18722 tc_2b6f77c6, TypeS_3op>, Enc_a56825 {
18723 let Inst{7-5} = 0b000;
18724 let Inst{13-13} = 0b0;
18725 let Inst{31-21} = 0b11000001000;
18726 let prefersSlot3 = 1;
18727 }
18728 def S2_insert : HInst<
18729 (outs IntRegs:$Rx32),
18730 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii, u5_0Imm:$II),
18731 "$Rx32 = insert($Rs32,#$Ii,#$II)",
18732 tc_87735c3b, TypeS_2op>, Enc_a1e29d {
18733 let Inst{13-13} = 0b0;
18734 let Inst{31-23} = 0b100011110;
18735 let hasNewValue = 1;
18736 let opNewValue = 0;
18737 let prefersSlot3 = 1;
18738 let Constraints = "$Rx32 = $Rx32in";
18739 }
18740 def S2_insert_rp : HInst<
18741 (outs IntRegs:$Rx32),
18742 (ins IntRegs:$Rx32in, IntRegs:$Rs32, DoubleRegs:$Rtt32),
18743 "$Rx32 = insert($Rs32,$Rtt32)",
18744 tc_84df2cd3, TypeS_3op>, Enc_179b35 {
18745 let Inst{7-5} = 0b000;
18746 let Inst{13-13} = 0b0;
18747 let Inst{31-21} = 0b11001000000;
18748 let hasNewValue = 1;
18749 let opNewValue = 0;
18750 let prefersSlot3 = 1;
18751 let Constraints = "$Rx32 = $Rx32in";
18752 }
18753 def S2_insertp : HInst<
18754 (outs DoubleRegs:$Rxx32),
18755 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii, u6_0Imm:$II),
18756 "$Rxx32 = insert($Rss32,#$Ii,#$II)",
18757 tc_87735c3b, TypeS_2op>, Enc_143a3c {
18758 let Inst{31-24} = 0b10000011;
18759 let prefersSlot3 = 1;
18760 let Constraints = "$Rxx32 = $Rxx32in";
18761 }
18762 def S2_insertp_rp : HInst<
18763 (outs DoubleRegs:$Rxx32),
18764 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
18765 "$Rxx32 = insert($Rss32,$Rtt32)",
18766 tc_84df2cd3, TypeS_3op>, Enc_88c16c {
18767 let Inst{7-5} = 0b000;
18768 let Inst{13-13} = 0b0;
18769 let Inst{31-21} = 0b11001010000;
18770 let prefersSlot3 = 1;
18771 let Constraints = "$Rxx32 = $Rxx32in";
18772 }
18773 def S2_interleave : HInst<
18774 (outs DoubleRegs:$Rdd32),
18775 (ins DoubleRegs:$Rss32),
18776 "$Rdd32 = interleave($Rss32)",
18777 tc_d088982c, TypeS_2op>, Enc_b9c5fb {
18778 let Inst{13-5} = 0b000000101;
18779 let Inst{31-21} = 0b10000000110;
18780 let prefersSlot3 = 1;
18781 }
18782 def S2_lfsp : HInst<
18783 (outs DoubleRegs:$Rdd32),
18784 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
18785 "$Rdd32 = lfs($Rss32,$Rtt32)",
18786 tc_2b6f77c6, TypeS_3op>, Enc_a56825 {
18787 let Inst{7-5} = 0b110;
18788 let Inst{13-13} = 0b0;
18789 let Inst{31-21} = 0b11000001100;
18790 let prefersSlot3 = 1;
18791 }
18792 def S2_lsl_r_p : HInst<
18793 (outs DoubleRegs:$Rdd32),
18794 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18795 "$Rdd32 = lsl($Rss32,$Rt32)",
18796 tc_540fdfbc, TypeS_3op>, Enc_927852 {
18797 let Inst{7-5} = 0b110;
18798 let Inst{13-13} = 0b0;
18799 let Inst{31-21} = 0b11000011100;
18800 }
18801 def S2_lsl_r_p_acc : HInst<
18802 (outs DoubleRegs:$Rxx32),
18803 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18804 "$Rxx32 += lsl($Rss32,$Rt32)",
18805 tc_c74f796f, TypeS_3op>, Enc_1aa186 {
18806 let Inst{7-5} = 0b110;
18807 let Inst{13-13} = 0b0;
18808 let Inst{31-21} = 0b11001011110;
18809 let prefersSlot3 = 1;
18810 let Constraints = "$Rxx32 = $Rxx32in";
18811 }
18812 def S2_lsl_r_p_and : HInst<
18813 (outs DoubleRegs:$Rxx32),
18814 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18815 "$Rxx32 &= lsl($Rss32,$Rt32)",
18816 tc_84df2cd3, TypeS_3op>, Enc_1aa186 {
18817 let Inst{7-5} = 0b110;
18818 let Inst{13-13} = 0b0;
18819 let Inst{31-21} = 0b11001011010;
18820 let prefersSlot3 = 1;
18821 let Constraints = "$Rxx32 = $Rxx32in";
18822 }
18823 def S2_lsl_r_p_nac : HInst<
18824 (outs DoubleRegs:$Rxx32),
18825 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18826 "$Rxx32 -= lsl($Rss32,$Rt32)",
18827 tc_c74f796f, TypeS_3op>, Enc_1aa186 {
18828 let Inst{7-5} = 0b110;
18829 let Inst{13-13} = 0b0;
18830 let Inst{31-21} = 0b11001011100;
18831 let prefersSlot3 = 1;
18832 let Constraints = "$Rxx32 = $Rxx32in";
18833 }
18834 def S2_lsl_r_p_or : HInst<
18835 (outs DoubleRegs:$Rxx32),
18836 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18837 "$Rxx32 |= lsl($Rss32,$Rt32)",
18838 tc_84df2cd3, TypeS_3op>, Enc_1aa186 {
18839 let Inst{7-5} = 0b110;
18840 let Inst{13-13} = 0b0;
18841 let Inst{31-21} = 0b11001011000;
18842 let prefersSlot3 = 1;
18843 let Constraints = "$Rxx32 = $Rxx32in";
18844 }
18845 def S2_lsl_r_p_xor : HInst<
18846 (outs DoubleRegs:$Rxx32),
18847 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18848 "$Rxx32 ^= lsl($Rss32,$Rt32)",
18849 tc_84df2cd3, TypeS_3op>, Enc_1aa186 {
18850 let Inst{7-5} = 0b110;
18851 let Inst{13-13} = 0b0;
18852 let Inst{31-21} = 0b11001011011;
18853 let prefersSlot3 = 1;
18854 let Constraints = "$Rxx32 = $Rxx32in";
18855 }
18856 def S2_lsl_r_r : HInst<
18857 (outs IntRegs:$Rd32),
18858 (ins IntRegs:$Rs32, IntRegs:$Rt32),
18859 "$Rd32 = lsl($Rs32,$Rt32)",
18860 tc_540fdfbc, TypeS_3op>, Enc_5ab2be {
18861 let Inst{7-5} = 0b110;
18862 let Inst{13-13} = 0b0;
18863 let Inst{31-21} = 0b11000110010;
18864 let hasNewValue = 1;
18865 let opNewValue = 0;
18866 }
18867 def S2_lsl_r_r_acc : HInst<
18868 (outs IntRegs:$Rx32),
18869 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18870 "$Rx32 += lsl($Rs32,$Rt32)",
18871 tc_c74f796f, TypeS_3op>, Enc_2ae154 {
18872 let Inst{7-5} = 0b110;
18873 let Inst{13-13} = 0b0;
18874 let Inst{31-21} = 0b11001100110;
18875 let hasNewValue = 1;
18876 let opNewValue = 0;
18877 let prefersSlot3 = 1;
18878 let Constraints = "$Rx32 = $Rx32in";
18879 }
18880 def S2_lsl_r_r_and : HInst<
18881 (outs IntRegs:$Rx32),
18882 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18883 "$Rx32 &= lsl($Rs32,$Rt32)",
18884 tc_84df2cd3, TypeS_3op>, Enc_2ae154 {
18885 let Inst{7-5} = 0b110;
18886 let Inst{13-13} = 0b0;
18887 let Inst{31-21} = 0b11001100010;
18888 let hasNewValue = 1;
18889 let opNewValue = 0;
18890 let prefersSlot3 = 1;
18891 let Constraints = "$Rx32 = $Rx32in";
18892 }
18893 def S2_lsl_r_r_nac : HInst<
18894 (outs IntRegs:$Rx32),
18895 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18896 "$Rx32 -= lsl($Rs32,$Rt32)",
18897 tc_c74f796f, TypeS_3op>, Enc_2ae154 {
18898 let Inst{7-5} = 0b110;
18899 let Inst{13-13} = 0b0;
18900 let Inst{31-21} = 0b11001100100;
18901 let hasNewValue = 1;
18902 let opNewValue = 0;
18903 let prefersSlot3 = 1;
18904 let Constraints = "$Rx32 = $Rx32in";
18905 }
18906 def S2_lsl_r_r_or : HInst<
18907 (outs IntRegs:$Rx32),
18908 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18909 "$Rx32 |= lsl($Rs32,$Rt32)",
18910 tc_84df2cd3, TypeS_3op>, Enc_2ae154 {
18911 let Inst{7-5} = 0b110;
18912 let Inst{13-13} = 0b0;
18913 let Inst{31-21} = 0b11001100000;
18914 let hasNewValue = 1;
18915 let opNewValue = 0;
18916 let prefersSlot3 = 1;
18917 let Constraints = "$Rx32 = $Rx32in";
18918 }
18919 def S2_lsl_r_vh : HInst<
18920 (outs DoubleRegs:$Rdd32),
18921 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18922 "$Rdd32 = vlslh($Rss32,$Rt32)",
18923 tc_540fdfbc, TypeS_3op>, Enc_927852 {
18924 let Inst{7-5} = 0b110;
18925 let Inst{13-13} = 0b0;
18926 let Inst{31-21} = 0b11000011010;
18927 }
18928 def S2_lsl_r_vw : HInst<
18929 (outs DoubleRegs:$Rdd32),
18930 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18931 "$Rdd32 = vlslw($Rss32,$Rt32)",
18932 tc_540fdfbc, TypeS_3op>, Enc_927852 {
18933 let Inst{7-5} = 0b110;
18934 let Inst{13-13} = 0b0;
18935 let Inst{31-21} = 0b11000011000;
18936 }
18937 def S2_lsr_i_p : HInst<
18938 (outs DoubleRegs:$Rdd32),
18939 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii),
18940 "$Rdd32 = lsr($Rss32,#$Ii)",
18941 tc_540fdfbc, TypeS_2op>, Enc_5eac98 {
18942 let Inst{7-5} = 0b001;
18943 let Inst{31-21} = 0b10000000000;
18944 }
18945 def S2_lsr_i_p_acc : HInst<
18946 (outs DoubleRegs:$Rxx32),
18947 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
18948 "$Rxx32 += lsr($Rss32,#$Ii)",
18949 tc_c74f796f, TypeS_2op>, Enc_70fb07 {
18950 let Inst{7-5} = 0b101;
18951 let Inst{31-21} = 0b10000010000;
18952 let prefersSlot3 = 1;
18953 let Constraints = "$Rxx32 = $Rxx32in";
18954 }
18955 def S2_lsr_i_p_and : HInst<
18956 (outs DoubleRegs:$Rxx32),
18957 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
18958 "$Rxx32 &= lsr($Rss32,#$Ii)",
18959 tc_84df2cd3, TypeS_2op>, Enc_70fb07 {
18960 let Inst{7-5} = 0b001;
18961 let Inst{31-21} = 0b10000010010;
18962 let prefersSlot3 = 1;
18963 let Constraints = "$Rxx32 = $Rxx32in";
18964 }
18965 def S2_lsr_i_p_nac : HInst<
18966 (outs DoubleRegs:$Rxx32),
18967 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
18968 "$Rxx32 -= lsr($Rss32,#$Ii)",
18969 tc_c74f796f, TypeS_2op>, Enc_70fb07 {
18970 let Inst{7-5} = 0b001;
18971 let Inst{31-21} = 0b10000010000;
18972 let prefersSlot3 = 1;
18973 let Constraints = "$Rxx32 = $Rxx32in";
18974 }
18975 def S2_lsr_i_p_or : HInst<
18976 (outs DoubleRegs:$Rxx32),
18977 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
18978 "$Rxx32 |= lsr($Rss32,#$Ii)",
18979 tc_84df2cd3, TypeS_2op>, Enc_70fb07 {
18980 let Inst{7-5} = 0b101;
18981 let Inst{31-21} = 0b10000010010;
18982 let prefersSlot3 = 1;
18983 let Constraints = "$Rxx32 = $Rxx32in";
18984 }
18985 def S2_lsr_i_p_xacc : HInst<
18986 (outs DoubleRegs:$Rxx32),
18987 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
18988 "$Rxx32 ^= lsr($Rss32,#$Ii)",
18989 tc_84df2cd3, TypeS_2op>, Enc_70fb07 {
18990 let Inst{7-5} = 0b001;
18991 let Inst{31-21} = 0b10000010100;
18992 let prefersSlot3 = 1;
18993 let Constraints = "$Rxx32 = $Rxx32in";
18994 }
18995 def S2_lsr_i_r : HInst<
18996 (outs IntRegs:$Rd32),
18997 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
18998 "$Rd32 = lsr($Rs32,#$Ii)",
18999 tc_540fdfbc, TypeS_2op>, Enc_a05677 {
19000 let Inst{7-5} = 0b001;
19001 let Inst{13-13} = 0b0;
19002 let Inst{31-21} = 0b10001100000;
19003 let hasNewValue = 1;
19004 let opNewValue = 0;
19005 }
19006 def S2_lsr_i_r_acc : HInst<
19007 (outs IntRegs:$Rx32),
19008 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
19009 "$Rx32 += lsr($Rs32,#$Ii)",
19010 tc_c74f796f, TypeS_2op>, Enc_28a2dc {
19011 let Inst{7-5} = 0b101;
19012 let Inst{13-13} = 0b0;
19013 let Inst{31-21} = 0b10001110000;
19014 let hasNewValue = 1;
19015 let opNewValue = 0;
19016 let prefersSlot3 = 1;
19017 let Constraints = "$Rx32 = $Rx32in";
19018 }
19019 def S2_lsr_i_r_and : HInst<
19020 (outs IntRegs:$Rx32),
19021 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
19022 "$Rx32 &= lsr($Rs32,#$Ii)",
19023 tc_84df2cd3, TypeS_2op>, Enc_28a2dc {
19024 let Inst{7-5} = 0b001;
19025 let Inst{13-13} = 0b0;
19026 let Inst{31-21} = 0b10001110010;
19027 let hasNewValue = 1;
19028 let opNewValue = 0;
19029 let prefersSlot3 = 1;
19030 let Constraints = "$Rx32 = $Rx32in";
19031 }
19032 def S2_lsr_i_r_nac : HInst<
19033 (outs IntRegs:$Rx32),
19034 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
19035 "$Rx32 -= lsr($Rs32,#$Ii)",
19036 tc_c74f796f, TypeS_2op>, Enc_28a2dc {
19037 let Inst{7-5} = 0b001;
19038 let Inst{13-13} = 0b0;
19039 let Inst{31-21} = 0b10001110000;
19040 let hasNewValue = 1;
19041 let opNewValue = 0;
19042 let prefersSlot3 = 1;
19043 let Constraints = "$Rx32 = $Rx32in";
19044 }
19045 def S2_lsr_i_r_or : HInst<
19046 (outs IntRegs:$Rx32),
19047 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
19048 "$Rx32 |= lsr($Rs32,#$Ii)",
19049 tc_84df2cd3, TypeS_2op>, Enc_28a2dc {
19050 let Inst{7-5} = 0b101;
19051 let Inst{13-13} = 0b0;
19052 let Inst{31-21} = 0b10001110010;
19053 let hasNewValue = 1;
19054 let opNewValue = 0;
19055 let prefersSlot3 = 1;
19056 let Constraints = "$Rx32 = $Rx32in";
19057 }
19058 def S2_lsr_i_r_xacc : HInst<
19059 (outs IntRegs:$Rx32),
19060 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
19061 "$Rx32 ^= lsr($Rs32,#$Ii)",
19062 tc_84df2cd3, TypeS_2op>, Enc_28a2dc {
19063 let Inst{7-5} = 0b001;
19064 let Inst{13-13} = 0b0;
19065 let Inst{31-21} = 0b10001110100;
19066 let hasNewValue = 1;
19067 let opNewValue = 0;
19068 let prefersSlot3 = 1;
19069 let Constraints = "$Rx32 = $Rx32in";
19070 }
19071 def S2_lsr_i_vh : HInst<
19072 (outs DoubleRegs:$Rdd32),
19073 (ins DoubleRegs:$Rss32, u4_0Imm:$Ii),
19074 "$Rdd32 = vlsrh($Rss32,#$Ii)",
19075 tc_540fdfbc, TypeS_2op>, Enc_12b6e9 {
19076 let Inst{7-5} = 0b001;
19077 let Inst{13-12} = 0b00;
19078 let Inst{31-21} = 0b10000000100;
19079 }
19080 def S2_lsr_i_vw : HInst<
19081 (outs DoubleRegs:$Rdd32),
19082 (ins DoubleRegs:$Rss32, u5_0Imm:$Ii),
19083 "$Rdd32 = vlsrw($Rss32,#$Ii)",
19084 tc_540fdfbc, TypeS_2op>, Enc_7e5a82 {
19085 let Inst{7-5} = 0b001;
19086 let Inst{13-13} = 0b0;
19087 let Inst{31-21} = 0b10000000010;
19088 }
19089 def S2_lsr_r_p : HInst<
19090 (outs DoubleRegs:$Rdd32),
19091 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
19092 "$Rdd32 = lsr($Rss32,$Rt32)",
19093 tc_540fdfbc, TypeS_3op>, Enc_927852 {
19094 let Inst{7-5} = 0b010;
19095 let Inst{13-13} = 0b0;
19096 let Inst{31-21} = 0b11000011100;
19097 }
19098 def S2_lsr_r_p_acc : HInst<
19099 (outs DoubleRegs:$Rxx32),
19100 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
19101 "$Rxx32 += lsr($Rss32,$Rt32)",
19102 tc_c74f796f, TypeS_3op>, Enc_1aa186 {
19103 let Inst{7-5} = 0b010;
19104 let Inst{13-13} = 0b0;
19105 let Inst{31-21} = 0b11001011110;
19106 let prefersSlot3 = 1;
19107 let Constraints = "$Rxx32 = $Rxx32in";
19108 }
19109 def S2_lsr_r_p_and : HInst<
19110 (outs DoubleRegs:$Rxx32),
19111 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
19112 "$Rxx32 &= lsr($Rss32,$Rt32)",
19113 tc_84df2cd3, TypeS_3op>, Enc_1aa186 {
19114 let Inst{7-5} = 0b010;
19115 let Inst{13-13} = 0b0;
19116 let Inst{31-21} = 0b11001011010;
19117 let prefersSlot3 = 1;
19118 let Constraints = "$Rxx32 = $Rxx32in";
19119 }
19120 def S2_lsr_r_p_nac : HInst<
19121 (outs DoubleRegs:$Rxx32),
19122 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
19123 "$Rxx32 -= lsr($Rss32,$Rt32)",
19124 tc_c74f796f, TypeS_3op>, Enc_1aa186 {
19125 let Inst{7-5} = 0b010;
19126 let Inst{13-13} = 0b0;
19127 let Inst{31-21} = 0b11001011100;
19128 let prefersSlot3 = 1;
19129 let Constraints = "$Rxx32 = $Rxx32in";
19130 }
19131 def S2_lsr_r_p_or : HInst<
19132 (outs DoubleRegs:$Rxx32),
19133 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
19134 "$Rxx32 |= lsr($Rss32,$Rt32)",
19135 tc_84df2cd3, TypeS_3op>, Enc_1aa186 {
19136 let Inst{7-5} = 0b010;
19137 let Inst{13-13} = 0b0;
19138 let Inst{31-21} = 0b11001011000;
19139 let prefersSlot3 = 1;
19140 let Constraints = "$Rxx32 = $Rxx32in";
19141 }
19142 def S2_lsr_r_p_xor : HInst<
19143 (outs DoubleRegs:$Rxx32),
19144 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
19145 "$Rxx32 ^= lsr($Rss32,$Rt32)",
19146 tc_84df2cd3, TypeS_3op>, Enc_1aa186 {
19147 let Inst{7-5} = 0b010;
19148 let Inst{13-13} = 0b0;
19149 let Inst{31-21} = 0b11001011011;
19150 let prefersSlot3 = 1;
19151 let Constraints = "$Rxx32 = $Rxx32in";
19152 }
19153 def S2_lsr_r_r : HInst<
19154 (outs IntRegs:$Rd32),
19155 (ins IntRegs:$Rs32, IntRegs:$Rt32),
19156 "$Rd32 = lsr($Rs32,$Rt32)",
19157 tc_540fdfbc, TypeS_3op>, Enc_5ab2be {
19158 let Inst{7-5} = 0b010;
19159 let Inst{13-13} = 0b0;
19160 let Inst{31-21} = 0b11000110010;
19161 let hasNewValue = 1;
19162 let opNewValue = 0;
19163 }
19164 def S2_lsr_r_r_acc : HInst<
19165 (outs IntRegs:$Rx32),
19166 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
19167 "$Rx32 += lsr($Rs32,$Rt32)",
19168 tc_c74f796f, TypeS_3op>, Enc_2ae154 {
19169 let Inst{7-5} = 0b010;
19170 let Inst{13-13} = 0b0;
19171 let Inst{31-21} = 0b11001100110;
19172 let hasNewValue = 1;
19173 let opNewValue = 0;
19174 let prefersSlot3 = 1;
19175 let Constraints = "$Rx32 = $Rx32in";
19176 }
19177 def S2_lsr_r_r_and : HInst<
19178 (outs IntRegs:$Rx32),
19179 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
19180 "$Rx32 &= lsr($Rs32,$Rt32)",
19181 tc_84df2cd3, TypeS_3op>, Enc_2ae154 {
19182 let Inst{7-5} = 0b010;
19183 let Inst{13-13} = 0b0;
19184 let Inst{31-21} = 0b11001100010;
19185 let hasNewValue = 1;
19186 let opNewValue = 0;
19187 let prefersSlot3 = 1;
19188 let Constraints = "$Rx32 = $Rx32in";
19189 }
19190 def S2_lsr_r_r_nac : HInst<
19191 (outs IntRegs:$Rx32),
19192 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
19193 "$Rx32 -= lsr($Rs32,$Rt32)",
19194 tc_c74f796f, TypeS_3op>, Enc_2ae154 {
19195 let Inst{7-5} = 0b010;
19196 let Inst{13-13} = 0b0;
19197 let Inst{31-21} = 0b11001100100;
19198 let hasNewValue = 1;
19199 let opNewValue = 0;
19200 let prefersSlot3 = 1;
19201 let Constraints = "$Rx32 = $Rx32in";
19202 }
19203 def S2_lsr_r_r_or : HInst<
19204 (outs IntRegs:$Rx32),
19205 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
19206 "$Rx32 |= lsr($Rs32,$Rt32)",
19207 tc_84df2cd3, TypeS_3op>, Enc_2ae154 {
19208 let Inst{7-5} = 0b010;
19209 let Inst{13-13} = 0b0;
19210 let Inst{31-21} = 0b11001100000;
19211 let hasNewValue = 1;
19212 let opNewValue = 0;
19213 let prefersSlot3 = 1;
19214 let Constraints = "$Rx32 = $Rx32in";
19215 }
19216 def S2_lsr_r_vh : HInst<
19217 (outs DoubleRegs:$Rdd32),
19218 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
19219 "$Rdd32 = vlsrh($Rss32,$Rt32)",
19220 tc_540fdfbc, TypeS_3op>, Enc_927852 {
19221 let Inst{7-5} = 0b010;
19222 let Inst{13-13} = 0b0;
19223 let Inst{31-21} = 0b11000011010;
19224 }
19225 def S2_lsr_r_vw : HInst<
19226 (outs DoubleRegs:$Rdd32),
19227 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
19228 "$Rdd32 = vlsrw($Rss32,$Rt32)",
19229 tc_540fdfbc, TypeS_3op>, Enc_927852 {
19230 let Inst{7-5} = 0b010;
19231 let Inst{13-13} = 0b0;
19232 let Inst{31-21} = 0b11000011000;
19233 }
19234 def S2_packhl : HInst<
19235 (outs DoubleRegs:$Rdd32),
19236 (ins IntRegs:$Rs32, IntRegs:$Rt32),
19237 "$Rdd32 = packhl($Rs32,$Rt32)",
19238 tc_b9488031, TypeALU32_3op>, Enc_be32a5 {
19239 let Inst{7-5} = 0b000;
19240 let Inst{13-13} = 0b0;
19241 let Inst{31-21} = 0b11110101100;
19242 let InputType = "reg";
19243 }
19244 def S2_parityp : HInst<
19245 (outs IntRegs:$Rd32),
19246 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
19247 "$Rd32 = parity($Rss32,$Rtt32)",
19248 tc_2b6f77c6, TypeALU64>, Enc_d2216a {
19249 let Inst{7-5} = 0b000;
19250 let Inst{13-13} = 0b0;
19251 let Inst{31-21} = 0b11010000000;
19252 let hasNewValue = 1;
19253 let opNewValue = 0;
19254 let prefersSlot3 = 1;
19255 }
19256 def S2_pstorerbf_io : HInst<
19257 (outs),
19258 (ins PredRegs:$Pv4, IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
19259 "if (!$Pv4) memb($Rs32+#$Ii) = $Rt32",
19260 tc_8b15472a, TypeV2LDST>, Enc_da8d43, AddrModeRel {
19261 let Inst{2-2} = 0b0;
19262 let Inst{31-21} = 0b01000100000;
19263 let isPredicated = 1;
19264 let isPredicatedFalse = 1;
19265 let addrMode = BaseImmOffset;
19266 let accessSize = ByteAccess;
19267 let mayStore = 1;
19268 let CextOpcode = "S2_storerb";
19269 let InputType = "imm";
19270 let BaseOpcode = "S2_storerb_io";
19271 let isNVStorable = 1;
19272 let isExtendable = 1;
19273 let opExtendable = 2;
19274 let isExtentSigned = 0;
19275 let opExtentBits = 6;
19276 let opExtentAlign = 0;
19277 }
19278 def S2_pstorerbf_pi : HInst<
19279 (outs IntRegs:$Rx32),
19280 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Rt32),
19281 "if (!$Pv4) memb($Rx32++#$Ii) = $Rt32",
19282 tc_cd7374a0, TypeST>, Enc_cc449f, AddrModeRel {
19283 let Inst{2-2} = 0b1;
19284 let Inst{7-7} = 0b0;
19285 let Inst{13-13} = 0b1;
19286 let Inst{31-21} = 0b10101011000;
19287 let isPredicated = 1;
19288 let isPredicatedFalse = 1;
19289 let addrMode = PostInc;
19290 let accessSize = ByteAccess;
19291 let mayStore = 1;
19292 let BaseOpcode = "S2_storerb_pi";
19293 let isNVStorable = 1;
19294 let Constraints = "$Rx32 = $Rx32in";
19295 }
19296 def S2_pstorerbf_zomap : HInst<
19297 (outs),
19298 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
19299 "if (!$Pv4) memb($Rs32) = $Rt32",
19300 tc_8b15472a, TypeMAPPING> {
19301 let isPseudo = 1;
19302 let isCodeGenOnly = 1;
19303 }
19304 def S2_pstorerbfnew_pi : HInst<
19305 (outs IntRegs:$Rx32),
19306 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Rt32),
19307 "if (!$Pv4.new) memb($Rx32++#$Ii) = $Rt32",
19308 tc_74e47fd9, TypeST>, Enc_cc449f, AddrModeRel {
19309 let Inst{2-2} = 0b1;
19310 let Inst{7-7} = 0b1;
19311 let Inst{13-13} = 0b1;
19312 let Inst{31-21} = 0b10101011000;
19313 let isPredicated = 1;
19314 let isPredicatedFalse = 1;
19315 let addrMode = PostInc;
19316 let accessSize = ByteAccess;
19317 let isPredicatedNew = 1;
19318 let mayStore = 1;
19319 let BaseOpcode = "S2_storerb_pi";
19320 let isNVStorable = 1;
19321 let Constraints = "$Rx32 = $Rx32in";
19322 }
19323 def S2_pstorerbnewf_io : HInst<
19324 (outs),
19325 (ins PredRegs:$Pv4, IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Nt8),
19326 "if (!$Pv4) memb($Rs32+#$Ii) = $Nt8.new",
19327 tc_594ab548, TypeV2LDST>, Enc_585242, AddrModeRel {
19328 let Inst{2-2} = 0b0;
19329 let Inst{12-11} = 0b00;
19330 let Inst{31-21} = 0b01000100101;
19331 let isPredicated = 1;
19332 let isPredicatedFalse = 1;
19333 let addrMode = BaseImmOffset;
19334 let accessSize = ByteAccess;
19335 let isNVStore = 1;
19336 let isNewValue = 1;
19337 let isRestrictNoSlot1Store = 1;
19338 let mayStore = 1;
19339 let CextOpcode = "S2_storerb";
19340 let InputType = "imm";
19341 let BaseOpcode = "S2_storerb_io";
19342 let isExtendable = 1;
19343 let opExtendable = 2;
19344 let isExtentSigned = 0;
19345 let opExtentBits = 6;
19346 let opExtentAlign = 0;
19347 let opNewValue = 3;
19348 }
19349 def S2_pstorerbnewf_pi : HInst<
19350 (outs IntRegs:$Rx32),
19351 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Nt8),
19352 "if (!$Pv4) memb($Rx32++#$Ii) = $Nt8.new",
19353 tc_d9f95eef, TypeST>, Enc_52a5dd, AddrModeRel {
19354 let Inst{2-2} = 0b1;
19355 let Inst{7-7} = 0b0;
19356 let Inst{13-11} = 0b100;
19357 let Inst{31-21} = 0b10101011101;
19358 let isPredicated = 1;
19359 let isPredicatedFalse = 1;
19360 let addrMode = PostInc;
19361 let accessSize = ByteAccess;
19362 let isNVStore = 1;
19363 let isNewValue = 1;
19364 let isRestrictNoSlot1Store = 1;
19365 let mayStore = 1;
19366 let CextOpcode = "S2_storerb";
19367 let BaseOpcode = "S2_storerb_pi";
19368 let opNewValue = 4;
19369 let Constraints = "$Rx32 = $Rx32in";
19370 }
19371 def S2_pstorerbnewf_zomap : HInst<
19372 (outs),
19373 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
19374 "if (!$Pv4) memb($Rs32) = $Nt8.new",
19375 tc_594ab548, TypeMAPPING> {
19376 let isPseudo = 1;
19377 let isCodeGenOnly = 1;
19378 let opNewValue = 2;
19379 }
19380 def S2_pstorerbnewfnew_pi : HInst<
19381 (outs IntRegs:$Rx32),
19382 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Nt8),
19383 "if (!$Pv4.new) memb($Rx32++#$Ii) = $Nt8.new",
19384 tc_d24b2d85, TypeST>, Enc_52a5dd, AddrModeRel {
19385 let Inst{2-2} = 0b1;
19386 let Inst{7-7} = 0b1;
19387 let Inst{13-11} = 0b100;
19388 let Inst{31-21} = 0b10101011101;
19389 let isPredicated = 1;
19390 let isPredicatedFalse = 1;
19391 let addrMode = PostInc;
19392 let accessSize = ByteAccess;
19393 let isNVStore = 1;
19394 let isPredicatedNew = 1;
19395 let isNewValue = 1;
19396 let isRestrictNoSlot1Store = 1;
19397 let mayStore = 1;
19398 let CextOpcode = "S2_storerb";
19399 let BaseOpcode = "S2_storerb_pi";
19400 let opNewValue = 4;
19401 let Constraints = "$Rx32 = $Rx32in";
19402 }
19403 def S2_pstorerbnewt_io : HInst<
19404 (outs),
19405 (ins PredRegs:$Pv4, IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Nt8),
19406 "if ($Pv4) memb($Rs32+#$Ii) = $Nt8.new",
19407 tc_594ab548, TypeV2LDST>, Enc_585242, AddrModeRel {
19408 let Inst{2-2} = 0b0;
19409 let Inst{12-11} = 0b00;
19410 let Inst{31-21} = 0b01000000101;
19411 let isPredicated = 1;
19412 let addrMode = BaseImmOffset;
19413 let accessSize = ByteAccess;
19414 let isNVStore = 1;
19415 let isNewValue = 1;
19416 let isRestrictNoSlot1Store = 1;
19417 let mayStore = 1;
19418 let CextOpcode = "S2_storerb";
19419 let InputType = "imm";
19420 let BaseOpcode = "S2_storerb_io";
19421 let isExtendable = 1;
19422 let opExtendable = 2;
19423 let isExtentSigned = 0;
19424 let opExtentBits = 6;
19425 let opExtentAlign = 0;
19426 let opNewValue = 3;
19427 }
19428 def S2_pstorerbnewt_pi : HInst<
19429 (outs IntRegs:$Rx32),
19430 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Nt8),
19431 "if ($Pv4) memb($Rx32++#$Ii) = $Nt8.new",
19432 tc_d9f95eef, TypeST>, Enc_52a5dd, AddrModeRel {
19433 let Inst{2-2} = 0b0;
19434 let Inst{7-7} = 0b0;
19435 let Inst{13-11} = 0b100;
19436 let Inst{31-21} = 0b10101011101;
19437 let isPredicated = 1;
19438 let addrMode = PostInc;
19439 let accessSize = ByteAccess;
19440 let isNVStore = 1;
19441 let isNewValue = 1;
19442 let isRestrictNoSlot1Store = 1;
19443 let mayStore = 1;
19444 let CextOpcode = "S2_storerb";
19445 let BaseOpcode = "S2_storerb_pi";
19446 let opNewValue = 4;
19447 let Constraints = "$Rx32 = $Rx32in";
19448 }
19449 def S2_pstorerbnewt_zomap : HInst<
19450 (outs),
19451 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
19452 "if ($Pv4) memb($Rs32) = $Nt8.new",
19453 tc_594ab548, TypeMAPPING> {
19454 let isPseudo = 1;
19455 let isCodeGenOnly = 1;
19456 let opNewValue = 2;
19457 }
19458 def S2_pstorerbnewtnew_pi : HInst<
19459 (outs IntRegs:$Rx32),
19460 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Nt8),
19461 "if ($Pv4.new) memb($Rx32++#$Ii) = $Nt8.new",
19462 tc_d24b2d85, TypeST>, Enc_52a5dd, AddrModeRel {
19463 let Inst{2-2} = 0b0;
19464 let Inst{7-7} = 0b1;
19465 let Inst{13-11} = 0b100;
19466 let Inst{31-21} = 0b10101011101;
19467 let isPredicated = 1;
19468 let addrMode = PostInc;
19469 let accessSize = ByteAccess;
19470 let isNVStore = 1;
19471 let isPredicatedNew = 1;
19472 let isNewValue = 1;
19473 let isRestrictNoSlot1Store = 1;
19474 let mayStore = 1;
19475 let CextOpcode = "S2_storerb";
19476 let BaseOpcode = "S2_storerb_pi";
19477 let opNewValue = 4;
19478 let Constraints = "$Rx32 = $Rx32in";
19479 }
19480 def S2_pstorerbt_io : HInst<
19481 (outs),
19482 (ins PredRegs:$Pv4, IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
19483 "if ($Pv4) memb($Rs32+#$Ii) = $Rt32",
19484 tc_8b15472a, TypeV2LDST>, Enc_da8d43, AddrModeRel {
19485 let Inst{2-2} = 0b0;
19486 let Inst{31-21} = 0b01000000000;
19487 let isPredicated = 1;
19488 let addrMode = BaseImmOffset;
19489 let accessSize = ByteAccess;
19490 let mayStore = 1;
19491 let CextOpcode = "S2_storerb";
19492 let InputType = "imm";
19493 let BaseOpcode = "S2_storerb_io";
19494 let isNVStorable = 1;
19495 let isExtendable = 1;
19496 let opExtendable = 2;
19497 let isExtentSigned = 0;
19498 let opExtentBits = 6;
19499 let opExtentAlign = 0;
19500 }
19501 def S2_pstorerbt_pi : HInst<
19502 (outs IntRegs:$Rx32),
19503 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Rt32),
19504 "if ($Pv4) memb($Rx32++#$Ii) = $Rt32",
19505 tc_cd7374a0, TypeST>, Enc_cc449f, AddrModeRel {
19506 let Inst{2-2} = 0b0;
19507 let Inst{7-7} = 0b0;
19508 let Inst{13-13} = 0b1;
19509 let Inst{31-21} = 0b10101011000;
19510 let isPredicated = 1;
19511 let addrMode = PostInc;
19512 let accessSize = ByteAccess;
19513 let mayStore = 1;
19514 let BaseOpcode = "S2_storerb_pi";
19515 let isNVStorable = 1;
19516 let Constraints = "$Rx32 = $Rx32in";
19517 }
19518 def S2_pstorerbt_zomap : HInst<
19519 (outs),
19520 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
19521 "if ($Pv4) memb($Rs32) = $Rt32",
19522 tc_8b15472a, TypeMAPPING> {
19523 let isPseudo = 1;
19524 let isCodeGenOnly = 1;
19525 }
19526 def S2_pstorerbtnew_pi : HInst<
19527 (outs IntRegs:$Rx32),
19528 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Rt32),
19529 "if ($Pv4.new) memb($Rx32++#$Ii) = $Rt32",
19530 tc_74e47fd9, TypeST>, Enc_cc449f, AddrModeRel {
19531 let Inst{2-2} = 0b0;
19532 let Inst{7-7} = 0b1;
19533 let Inst{13-13} = 0b1;
19534 let Inst{31-21} = 0b10101011000;
19535 let isPredicated = 1;
19536 let addrMode = PostInc;
19537 let accessSize = ByteAccess;
19538 let isPredicatedNew = 1;
19539 let mayStore = 1;
19540 let BaseOpcode = "S2_storerb_pi";
19541 let isNVStorable = 1;
19542 let Constraints = "$Rx32 = $Rx32in";
19543 }
19544 def S2_pstorerdf_io : HInst<
19545 (outs),
19546 (ins PredRegs:$Pv4, IntRegs:$Rs32, u29_3Imm:$Ii, DoubleRegs:$Rtt32),
19547 "if (!$Pv4) memd($Rs32+#$Ii) = $Rtt32",
19548 tc_8b15472a, TypeV2LDST>, Enc_57a33e, AddrModeRel {
19549 let Inst{2-2} = 0b0;
19550 let Inst{31-21} = 0b01000100110;
19551 let isPredicated = 1;
19552 let isPredicatedFalse = 1;
19553 let addrMode = BaseImmOffset;
19554 let accessSize = DoubleWordAccess;
19555 let mayStore = 1;
19556 let CextOpcode = "S2_storerd";
19557 let InputType = "imm";
19558 let BaseOpcode = "S2_storerd_io";
19559 let isExtendable = 1;
19560 let opExtendable = 2;
19561 let isExtentSigned = 0;
19562 let opExtentBits = 9;
19563 let opExtentAlign = 3;
19564 }
19565 def S2_pstorerdf_pi : HInst<
19566 (outs IntRegs:$Rx32),
19567 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_3Imm:$Ii, DoubleRegs:$Rtt32),
19568 "if (!$Pv4) memd($Rx32++#$Ii) = $Rtt32",
19569 tc_cd7374a0, TypeST>, Enc_9a33d5, AddrModeRel {
19570 let Inst{2-2} = 0b1;
19571 let Inst{7-7} = 0b0;
19572 let Inst{13-13} = 0b1;
19573 let Inst{31-21} = 0b10101011110;
19574 let isPredicated = 1;
19575 let isPredicatedFalse = 1;
19576 let addrMode = PostInc;
19577 let accessSize = DoubleWordAccess;
19578 let mayStore = 1;
19579 let CextOpcode = "S2_storerd";
19580 let BaseOpcode = "S2_storerd_pi";
19581 let Constraints = "$Rx32 = $Rx32in";
19582 }
19583 def S2_pstorerdf_zomap : HInst<
19584 (outs),
19585 (ins PredRegs:$Pv4, IntRegs:$Rs32, DoubleRegs:$Rtt32),
19586 "if (!$Pv4) memd($Rs32) = $Rtt32",
19587 tc_8b15472a, TypeMAPPING> {
19588 let isPseudo = 1;
19589 let isCodeGenOnly = 1;
19590 }
19591 def S2_pstorerdfnew_pi : HInst<
19592 (outs IntRegs:$Rx32),
19593 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_3Imm:$Ii, DoubleRegs:$Rtt32),
19594 "if (!$Pv4.new) memd($Rx32++#$Ii) = $Rtt32",
19595 tc_74e47fd9, TypeST>, Enc_9a33d5, AddrModeRel {
19596 let Inst{2-2} = 0b1;
19597 let Inst{7-7} = 0b1;
19598 let Inst{13-13} = 0b1;
19599 let Inst{31-21} = 0b10101011110;
19600 let isPredicated = 1;
19601 let isPredicatedFalse = 1;
19602 let addrMode = PostInc;
19603 let accessSize = DoubleWordAccess;
19604 let isPredicatedNew = 1;
19605 let mayStore = 1;
19606 let CextOpcode = "S2_storerd";
19607 let BaseOpcode = "S2_storerd_pi";
19608 let Constraints = "$Rx32 = $Rx32in";
19609 }
19610 def S2_pstorerdt_io : HInst<
19611 (outs),
19612 (ins PredRegs:$Pv4, IntRegs:$Rs32, u29_3Imm:$Ii, DoubleRegs:$Rtt32),
19613 "if ($Pv4) memd($Rs32+#$Ii) = $Rtt32",
19614 tc_8b15472a, TypeV2LDST>, Enc_57a33e, AddrModeRel {
19615 let Inst{2-2} = 0b0;
19616 let Inst{31-21} = 0b01000000110;
19617 let isPredicated = 1;
19618 let addrMode = BaseImmOffset;
19619 let accessSize = DoubleWordAccess;
19620 let mayStore = 1;
19621 let CextOpcode = "S2_storerd";
19622 let InputType = "imm";
19623 let BaseOpcode = "S2_storerd_io";
19624 let isExtendable = 1;
19625 let opExtendable = 2;
19626 let isExtentSigned = 0;
19627 let opExtentBits = 9;
19628 let opExtentAlign = 3;
19629 }
19630 def S2_pstorerdt_pi : HInst<
19631 (outs IntRegs:$Rx32),
19632 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_3Imm:$Ii, DoubleRegs:$Rtt32),
19633 "if ($Pv4) memd($Rx32++#$Ii) = $Rtt32",
19634 tc_cd7374a0, TypeST>, Enc_9a33d5, AddrModeRel {
19635 let Inst{2-2} = 0b0;
19636 let Inst{7-7} = 0b0;
19637 let Inst{13-13} = 0b1;
19638 let Inst{31-21} = 0b10101011110;
19639 let isPredicated = 1;
19640 let addrMode = PostInc;
19641 let accessSize = DoubleWordAccess;
19642 let mayStore = 1;
19643 let CextOpcode = "S2_storerd";
19644 let BaseOpcode = "S2_storerd_pi";
19645 let Constraints = "$Rx32 = $Rx32in";
19646 }
19647 def S2_pstorerdt_zomap : HInst<
19648 (outs),
19649 (ins PredRegs:$Pv4, IntRegs:$Rs32, DoubleRegs:$Rtt32),
19650 "if ($Pv4) memd($Rs32) = $Rtt32",
19651 tc_8b15472a, TypeMAPPING> {
19652 let isPseudo = 1;
19653 let isCodeGenOnly = 1;
19654 }
19655 def S2_pstorerdtnew_pi : HInst<
19656 (outs IntRegs:$Rx32),
19657 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_3Imm:$Ii, DoubleRegs:$Rtt32),
19658 "if ($Pv4.new) memd($Rx32++#$Ii) = $Rtt32",
19659 tc_74e47fd9, TypeST>, Enc_9a33d5, AddrModeRel {
19660 let Inst{2-2} = 0b0;
19661 let Inst{7-7} = 0b1;
19662 let Inst{13-13} = 0b1;
19663 let Inst{31-21} = 0b10101011110;
19664 let isPredicated = 1;
19665 let addrMode = PostInc;
19666 let accessSize = DoubleWordAccess;
19667 let isPredicatedNew = 1;
19668 let mayStore = 1;
19669 let CextOpcode = "S2_storerd";
19670 let BaseOpcode = "S2_storerd_pi";
19671 let Constraints = "$Rx32 = $Rx32in";
19672 }
19673 def S2_pstorerff_io : HInst<
19674 (outs),
19675 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
19676 "if (!$Pv4) memh($Rs32+#$Ii) = $Rt32.h",
19677 tc_8b15472a, TypeV2LDST>, Enc_e8c45e, AddrModeRel {
19678 let Inst{2-2} = 0b0;
19679 let Inst{31-21} = 0b01000100011;
19680 let isPredicated = 1;
19681 let isPredicatedFalse = 1;
19682 let addrMode = BaseImmOffset;
19683 let accessSize = HalfWordAccess;
19684 let mayStore = 1;
19685 let CextOpcode = "S2_storerf";
19686 let InputType = "imm";
19687 let BaseOpcode = "S2_storerf_io";
19688 let isExtendable = 1;
19689 let opExtendable = 2;
19690 let isExtentSigned = 0;
19691 let opExtentBits = 7;
19692 let opExtentAlign = 1;
19693 }
19694 def S2_pstorerff_pi : HInst<
19695 (outs IntRegs:$Rx32),
19696 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
19697 "if (!$Pv4) memh($Rx32++#$Ii) = $Rt32.h",
19698 tc_cd7374a0, TypeST>, Enc_b886fd, AddrModeRel {
19699 let Inst{2-2} = 0b1;
19700 let Inst{7-7} = 0b0;
19701 let Inst{13-13} = 0b1;
19702 let Inst{31-21} = 0b10101011011;
19703 let isPredicated = 1;
19704 let isPredicatedFalse = 1;
19705 let addrMode = PostInc;
19706 let accessSize = HalfWordAccess;
19707 let mayStore = 1;
19708 let CextOpcode = "S2_storerf";
19709 let BaseOpcode = "S2_storerf_pi";
19710 let Constraints = "$Rx32 = $Rx32in";
19711 }
19712 def S2_pstorerff_zomap : HInst<
19713 (outs),
19714 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
19715 "if (!$Pv4) memh($Rs32) = $Rt32.h",
19716 tc_8b15472a, TypeMAPPING> {
19717 let isPseudo = 1;
19718 let isCodeGenOnly = 1;
19719 }
19720 def S2_pstorerffnew_pi : HInst<
19721 (outs IntRegs:$Rx32),
19722 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
19723 "if (!$Pv4.new) memh($Rx32++#$Ii) = $Rt32.h",
19724 tc_74e47fd9, TypeST>, Enc_b886fd, AddrModeRel {
19725 let Inst{2-2} = 0b1;
19726 let Inst{7-7} = 0b1;
19727 let Inst{13-13} = 0b1;
19728 let Inst{31-21} = 0b10101011011;
19729 let isPredicated = 1;
19730 let isPredicatedFalse = 1;
19731 let addrMode = PostInc;
19732 let accessSize = HalfWordAccess;
19733 let isPredicatedNew = 1;
19734 let mayStore = 1;
19735 let CextOpcode = "S2_storerf";
19736 let BaseOpcode = "S2_storerf_pi";
19737 let Constraints = "$Rx32 = $Rx32in";
19738 }
19739 def S2_pstorerft_io : HInst<
19740 (outs),
19741 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
19742 "if ($Pv4) memh($Rs32+#$Ii) = $Rt32.h",
19743 tc_8b15472a, TypeV2LDST>, Enc_e8c45e, AddrModeRel {
19744 let Inst{2-2} = 0b0;
19745 let Inst{31-21} = 0b01000000011;
19746 let isPredicated = 1;
19747 let addrMode = BaseImmOffset;
19748 let accessSize = HalfWordAccess;
19749 let mayStore = 1;
19750 let CextOpcode = "S2_storerf";
19751 let InputType = "imm";
19752 let BaseOpcode = "S2_storerf_io";
19753 let isExtendable = 1;
19754 let opExtendable = 2;
19755 let isExtentSigned = 0;
19756 let opExtentBits = 7;
19757 let opExtentAlign = 1;
19758 }
19759 def S2_pstorerft_pi : HInst<
19760 (outs IntRegs:$Rx32),
19761 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
19762 "if ($Pv4) memh($Rx32++#$Ii) = $Rt32.h",
19763 tc_cd7374a0, TypeST>, Enc_b886fd, AddrModeRel {
19764 let Inst{2-2} = 0b0;
19765 let Inst{7-7} = 0b0;
19766 let Inst{13-13} = 0b1;
19767 let Inst{31-21} = 0b10101011011;
19768 let isPredicated = 1;
19769 let addrMode = PostInc;
19770 let accessSize = HalfWordAccess;
19771 let mayStore = 1;
19772 let CextOpcode = "S2_storerf";
19773 let BaseOpcode = "S2_storerf_pi";
19774 let Constraints = "$Rx32 = $Rx32in";
19775 }
19776 def S2_pstorerft_zomap : HInst<
19777 (outs),
19778 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
19779 "if ($Pv4) memh($Rs32) = $Rt32.h",
19780 tc_8b15472a, TypeMAPPING> {
19781 let isPseudo = 1;
19782 let isCodeGenOnly = 1;
19783 }
19784 def S2_pstorerftnew_pi : HInst<
19785 (outs IntRegs:$Rx32),
19786 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
19787 "if ($Pv4.new) memh($Rx32++#$Ii) = $Rt32.h",
19788 tc_74e47fd9, TypeST>, Enc_b886fd, AddrModeRel {
19789 let Inst{2-2} = 0b0;
19790 let Inst{7-7} = 0b1;
19791 let Inst{13-13} = 0b1;
19792 let Inst{31-21} = 0b10101011011;
19793 let isPredicated = 1;
19794 let addrMode = PostInc;
19795 let accessSize = HalfWordAccess;
19796 let isPredicatedNew = 1;
19797 let mayStore = 1;
19798 let CextOpcode = "S2_storerf";
19799 let BaseOpcode = "S2_storerf_pi";
19800 let Constraints = "$Rx32 = $Rx32in";
19801 }
19802 def S2_pstorerhf_io : HInst<
19803 (outs),
19804 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
19805 "if (!$Pv4) memh($Rs32+#$Ii) = $Rt32",
19806 tc_8b15472a, TypeV2LDST>, Enc_e8c45e, AddrModeRel {
19807 let Inst{2-2} = 0b0;
19808 let Inst{31-21} = 0b01000100010;
19809 let isPredicated = 1;
19810 let isPredicatedFalse = 1;
19811 let addrMode = BaseImmOffset;
19812 let accessSize = HalfWordAccess;
19813 let mayStore = 1;
19814 let CextOpcode = "S2_storerh";
19815 let InputType = "imm";
19816 let BaseOpcode = "S2_storerh_io";
19817 let isNVStorable = 1;
19818 let isExtendable = 1;
19819 let opExtendable = 2;
19820 let isExtentSigned = 0;
19821 let opExtentBits = 7;
19822 let opExtentAlign = 1;
19823 }
19824 def S2_pstorerhf_pi : HInst<
19825 (outs IntRegs:$Rx32),
19826 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
19827 "if (!$Pv4) memh($Rx32++#$Ii) = $Rt32",
19828 tc_cd7374a0, TypeST>, Enc_b886fd, AddrModeRel {
19829 let Inst{2-2} = 0b1;
19830 let Inst{7-7} = 0b0;
19831 let Inst{13-13} = 0b1;
19832 let Inst{31-21} = 0b10101011010;
19833 let isPredicated = 1;
19834 let isPredicatedFalse = 1;
19835 let addrMode = PostInc;
19836 let accessSize = HalfWordAccess;
19837 let mayStore = 1;
19838 let BaseOpcode = "S2_storerh_pi";
19839 let isNVStorable = 1;
19840 let Constraints = "$Rx32 = $Rx32in";
19841 }
19842 def S2_pstorerhf_zomap : HInst<
19843 (outs),
19844 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
19845 "if (!$Pv4) memh($Rs32) = $Rt32",
19846 tc_8b15472a, TypeMAPPING> {
19847 let isPseudo = 1;
19848 let isCodeGenOnly = 1;
19849 }
19850 def S2_pstorerhfnew_pi : HInst<
19851 (outs IntRegs:$Rx32),
19852 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
19853 "if (!$Pv4.new) memh($Rx32++#$Ii) = $Rt32",
19854 tc_74e47fd9, TypeST>, Enc_b886fd, AddrModeRel {
19855 let Inst{2-2} = 0b1;
19856 let Inst{7-7} = 0b1;
19857 let Inst{13-13} = 0b1;
19858 let Inst{31-21} = 0b10101011010;
19859 let isPredicated = 1;
19860 let isPredicatedFalse = 1;
19861 let addrMode = PostInc;
19862 let accessSize = HalfWordAccess;
19863 let isPredicatedNew = 1;
19864 let mayStore = 1;
19865 let BaseOpcode = "S2_storerh_pi";
19866 let isNVStorable = 1;
19867 let Constraints = "$Rx32 = $Rx32in";
19868 }
19869 def S2_pstorerhnewf_io : HInst<
19870 (outs),
19871 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Nt8),
19872 "if (!$Pv4) memh($Rs32+#$Ii) = $Nt8.new",
19873 tc_594ab548, TypeV2LDST>, Enc_f44229, AddrModeRel {
19874 let Inst{2-2} = 0b0;
19875 let Inst{12-11} = 0b01;
19876 let Inst{31-21} = 0b01000100101;
19877 let isPredicated = 1;
19878 let isPredicatedFalse = 1;
19879 let addrMode = BaseImmOffset;
19880 let accessSize = HalfWordAccess;
19881 let isNVStore = 1;
19882 let isNewValue = 1;
19883 let isRestrictNoSlot1Store = 1;
19884 let mayStore = 1;
19885 let CextOpcode = "S2_storerh";
19886 let InputType = "imm";
19887 let BaseOpcode = "S2_storerh_io";
19888 let isExtendable = 1;
19889 let opExtendable = 2;
19890 let isExtentSigned = 0;
19891 let opExtentBits = 7;
19892 let opExtentAlign = 1;
19893 let opNewValue = 3;
19894 }
19895 def S2_pstorerhnewf_pi : HInst<
19896 (outs IntRegs:$Rx32),
19897 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Nt8),
19898 "if (!$Pv4) memh($Rx32++#$Ii) = $Nt8.new",
19899 tc_d9f95eef, TypeST>, Enc_31aa6a, AddrModeRel {
19900 let Inst{2-2} = 0b1;
19901 let Inst{7-7} = 0b0;
19902 let Inst{13-11} = 0b101;
19903 let Inst{31-21} = 0b10101011101;
19904 let isPredicated = 1;
19905 let isPredicatedFalse = 1;
19906 let addrMode = PostInc;
19907 let accessSize = HalfWordAccess;
19908 let isNVStore = 1;
19909 let isNewValue = 1;
19910 let isRestrictNoSlot1Store = 1;
19911 let mayStore = 1;
19912 let CextOpcode = "S2_storerh";
19913 let BaseOpcode = "S2_storerh_pi";
19914 let opNewValue = 4;
19915 let Constraints = "$Rx32 = $Rx32in";
19916 }
19917 def S2_pstorerhnewf_zomap : HInst<
19918 (outs),
19919 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
19920 "if (!$Pv4) memh($Rs32) = $Nt8.new",
19921 tc_594ab548, TypeMAPPING> {
19922 let isPseudo = 1;
19923 let isCodeGenOnly = 1;
19924 let opNewValue = 2;
19925 }
19926 def S2_pstorerhnewfnew_pi : HInst<
19927 (outs IntRegs:$Rx32),
19928 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Nt8),
19929 "if (!$Pv4.new) memh($Rx32++#$Ii) = $Nt8.new",
19930 tc_d24b2d85, TypeST>, Enc_31aa6a, AddrModeRel {
19931 let Inst{2-2} = 0b1;
19932 let Inst{7-7} = 0b1;
19933 let Inst{13-11} = 0b101;
19934 let Inst{31-21} = 0b10101011101;
19935 let isPredicated = 1;
19936 let isPredicatedFalse = 1;
19937 let addrMode = PostInc;
19938 let accessSize = HalfWordAccess;
19939 let isNVStore = 1;
19940 let isPredicatedNew = 1;
19941 let isNewValue = 1;
19942 let isRestrictNoSlot1Store = 1;
19943 let mayStore = 1;
19944 let CextOpcode = "S2_storerh";
19945 let BaseOpcode = "S2_storerh_pi";
19946 let opNewValue = 4;
19947 let Constraints = "$Rx32 = $Rx32in";
19948 }
19949 def S2_pstorerhnewt_io : HInst<
19950 (outs),
19951 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Nt8),
19952 "if ($Pv4) memh($Rs32+#$Ii) = $Nt8.new",
19953 tc_594ab548, TypeV2LDST>, Enc_f44229, AddrModeRel {
19954 let Inst{2-2} = 0b0;
19955 let Inst{12-11} = 0b01;
19956 let Inst{31-21} = 0b01000000101;
19957 let isPredicated = 1;
19958 let addrMode = BaseImmOffset;
19959 let accessSize = HalfWordAccess;
19960 let isNVStore = 1;
19961 let isNewValue = 1;
19962 let isRestrictNoSlot1Store = 1;
19963 let mayStore = 1;
19964 let CextOpcode = "S2_storerh";
19965 let InputType = "imm";
19966 let BaseOpcode = "S2_storerh_io";
19967 let isExtendable = 1;
19968 let opExtendable = 2;
19969 let isExtentSigned = 0;
19970 let opExtentBits = 7;
19971 let opExtentAlign = 1;
19972 let opNewValue = 3;
19973 }
19974 def S2_pstorerhnewt_pi : HInst<
19975 (outs IntRegs:$Rx32),
19976 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Nt8),
19977 "if ($Pv4) memh($Rx32++#$Ii) = $Nt8.new",
19978 tc_d9f95eef, TypeST>, Enc_31aa6a, AddrModeRel {
19979 let Inst{2-2} = 0b0;
19980 let Inst{7-7} = 0b0;
19981 let Inst{13-11} = 0b101;
19982 let Inst{31-21} = 0b10101011101;
19983 let isPredicated = 1;
19984 let addrMode = PostInc;
19985 let accessSize = HalfWordAccess;
19986 let isNVStore = 1;
19987 let isNewValue = 1;
19988 let isRestrictNoSlot1Store = 1;
19989 let mayStore = 1;
19990 let CextOpcode = "S2_storerh";
19991 let BaseOpcode = "S2_storerh_pi";
19992 let opNewValue = 4;
19993 let Constraints = "$Rx32 = $Rx32in";
19994 }
19995 def S2_pstorerhnewt_zomap : HInst<
19996 (outs),
19997 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
19998 "if ($Pv4) memh($Rs32) = $Nt8.new",
19999 tc_594ab548, TypeMAPPING> {
20000 let isPseudo = 1;
20001 let isCodeGenOnly = 1;
20002 let opNewValue = 2;
20003 }
20004 def S2_pstorerhnewtnew_pi : HInst<
20005 (outs IntRegs:$Rx32),
20006 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Nt8),
20007 "if ($Pv4.new) memh($Rx32++#$Ii) = $Nt8.new",
20008 tc_d24b2d85, TypeST>, Enc_31aa6a, AddrModeRel {
20009 let Inst{2-2} = 0b0;
20010 let Inst{7-7} = 0b1;
20011 let Inst{13-11} = 0b101;
20012 let Inst{31-21} = 0b10101011101;
20013 let isPredicated = 1;
20014 let addrMode = PostInc;
20015 let accessSize = HalfWordAccess;
20016 let isNVStore = 1;
20017 let isPredicatedNew = 1;
20018 let isNewValue = 1;
20019 let isRestrictNoSlot1Store = 1;
20020 let mayStore = 1;
20021 let CextOpcode = "S2_storerh";
20022 let BaseOpcode = "S2_storerh_pi";
20023 let opNewValue = 4;
20024 let Constraints = "$Rx32 = $Rx32in";
20025 }
20026 def S2_pstorerht_io : HInst<
20027 (outs),
20028 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
20029 "if ($Pv4) memh($Rs32+#$Ii) = $Rt32",
20030 tc_8b15472a, TypeV2LDST>, Enc_e8c45e, AddrModeRel {
20031 let Inst{2-2} = 0b0;
20032 let Inst{31-21} = 0b01000000010;
20033 let isPredicated = 1;
20034 let addrMode = BaseImmOffset;
20035 let accessSize = HalfWordAccess;
20036 let mayStore = 1;
20037 let CextOpcode = "S2_storerh";
20038 let InputType = "imm";
20039 let BaseOpcode = "S2_storerh_io";
20040 let isNVStorable = 1;
20041 let isExtendable = 1;
20042 let opExtendable = 2;
20043 let isExtentSigned = 0;
20044 let opExtentBits = 7;
20045 let opExtentAlign = 1;
20046 }
20047 def S2_pstorerht_pi : HInst<
20048 (outs IntRegs:$Rx32),
20049 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
20050 "if ($Pv4) memh($Rx32++#$Ii) = $Rt32",
20051 tc_cd7374a0, TypeST>, Enc_b886fd, AddrModeRel {
20052 let Inst{2-2} = 0b0;
20053 let Inst{7-7} = 0b0;
20054 let Inst{13-13} = 0b1;
20055 let Inst{31-21} = 0b10101011010;
20056 let isPredicated = 1;
20057 let addrMode = PostInc;
20058 let accessSize = HalfWordAccess;
20059 let mayStore = 1;
20060 let BaseOpcode = "S2_storerh_pi";
20061 let isNVStorable = 1;
20062 let Constraints = "$Rx32 = $Rx32in";
20063 }
20064 def S2_pstorerht_zomap : HInst<
20065 (outs),
20066 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
20067 "if ($Pv4) memh($Rs32) = $Rt32",
20068 tc_8b15472a, TypeMAPPING> {
20069 let isPseudo = 1;
20070 let isCodeGenOnly = 1;
20071 }
20072 def S2_pstorerhtnew_pi : HInst<
20073 (outs IntRegs:$Rx32),
20074 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
20075 "if ($Pv4.new) memh($Rx32++#$Ii) = $Rt32",
20076 tc_74e47fd9, TypeST>, Enc_b886fd, AddrModeRel {
20077 let Inst{2-2} = 0b0;
20078 let Inst{7-7} = 0b1;
20079 let Inst{13-13} = 0b1;
20080 let Inst{31-21} = 0b10101011010;
20081 let isPredicated = 1;
20082 let addrMode = PostInc;
20083 let accessSize = HalfWordAccess;
20084 let isPredicatedNew = 1;
20085 let mayStore = 1;
20086 let BaseOpcode = "S2_storerh_pi";
20087 let isNVStorable = 1;
20088 let Constraints = "$Rx32 = $Rx32in";
20089 }
20090 def S2_pstorerif_io : HInst<
20091 (outs),
20092 (ins PredRegs:$Pv4, IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Rt32),
20093 "if (!$Pv4) memw($Rs32+#$Ii) = $Rt32",
20094 tc_8b15472a, TypeV2LDST>, Enc_397f23, AddrModeRel {
20095 let Inst{2-2} = 0b0;
20096 let Inst{31-21} = 0b01000100100;
20097 let isPredicated = 1;
20098 let isPredicatedFalse = 1;
20099 let addrMode = BaseImmOffset;
20100 let accessSize = WordAccess;
20101 let mayStore = 1;
20102 let CextOpcode = "S2_storeri";
20103 let InputType = "imm";
20104 let BaseOpcode = "S2_storeri_io";
20105 let isNVStorable = 1;
20106 let isExtendable = 1;
20107 let opExtendable = 2;
20108 let isExtentSigned = 0;
20109 let opExtentBits = 8;
20110 let opExtentAlign = 2;
20111 }
20112 def S2_pstorerif_pi : HInst<
20113 (outs IntRegs:$Rx32),
20114 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Rt32),
20115 "if (!$Pv4) memw($Rx32++#$Ii) = $Rt32",
20116 tc_cd7374a0, TypeST>, Enc_7eaeb6, AddrModeRel {
20117 let Inst{2-2} = 0b1;
20118 let Inst{7-7} = 0b0;
20119 let Inst{13-13} = 0b1;
20120 let Inst{31-21} = 0b10101011100;
20121 let isPredicated = 1;
20122 let isPredicatedFalse = 1;
20123 let addrMode = PostInc;
20124 let accessSize = WordAccess;
20125 let mayStore = 1;
20126 let BaseOpcode = "S2_storeri_pi";
20127 let isNVStorable = 1;
20128 let Constraints = "$Rx32 = $Rx32in";
20129 }
20130 def S2_pstorerif_zomap : HInst<
20131 (outs),
20132 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
20133 "if (!$Pv4) memw($Rs32) = $Rt32",
20134 tc_8b15472a, TypeMAPPING> {
20135 let isPseudo = 1;
20136 let isCodeGenOnly = 1;
20137 }
20138 def S2_pstorerifnew_pi : HInst<
20139 (outs IntRegs:$Rx32),
20140 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Rt32),
20141 "if (!$Pv4.new) memw($Rx32++#$Ii) = $Rt32",
20142 tc_74e47fd9, TypeST>, Enc_7eaeb6, AddrModeRel {
20143 let Inst{2-2} = 0b1;
20144 let Inst{7-7} = 0b1;
20145 let Inst{13-13} = 0b1;
20146 let Inst{31-21} = 0b10101011100;
20147 let isPredicated = 1;
20148 let isPredicatedFalse = 1;
20149 let addrMode = PostInc;
20150 let accessSize = WordAccess;
20151 let isPredicatedNew = 1;
20152 let mayStore = 1;
20153 let CextOpcode = "S2_storeri";
20154 let BaseOpcode = "S2_storeri_pi";
20155 let isNVStorable = 1;
20156 let Constraints = "$Rx32 = $Rx32in";
20157 }
20158 def S2_pstorerinewf_io : HInst<
20159 (outs),
20160 (ins PredRegs:$Pv4, IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Nt8),
20161 "if (!$Pv4) memw($Rs32+#$Ii) = $Nt8.new",
20162 tc_594ab548, TypeV2LDST>, Enc_8dbdfe, AddrModeRel {
20163 let Inst{2-2} = 0b0;
20164 let Inst{12-11} = 0b10;
20165 let Inst{31-21} = 0b01000100101;
20166 let isPredicated = 1;
20167 let isPredicatedFalse = 1;
20168 let addrMode = BaseImmOffset;
20169 let accessSize = WordAccess;
20170 let isNVStore = 1;
20171 let isNewValue = 1;
20172 let isRestrictNoSlot1Store = 1;
20173 let mayStore = 1;
20174 let CextOpcode = "S2_storeri";
20175 let InputType = "imm";
20176 let BaseOpcode = "S2_storeri_io";
20177 let isExtendable = 1;
20178 let opExtendable = 2;
20179 let isExtentSigned = 0;
20180 let opExtentBits = 8;
20181 let opExtentAlign = 2;
20182 let opNewValue = 3;
20183 }
20184 def S2_pstorerinewf_pi : HInst<
20185 (outs IntRegs:$Rx32),
20186 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Nt8),
20187 "if (!$Pv4) memw($Rx32++#$Ii) = $Nt8.new",
20188 tc_d9f95eef, TypeST>, Enc_65f095, AddrModeRel {
20189 let Inst{2-2} = 0b1;
20190 let Inst{7-7} = 0b0;
20191 let Inst{13-11} = 0b110;
20192 let Inst{31-21} = 0b10101011101;
20193 let isPredicated = 1;
20194 let isPredicatedFalse = 1;
20195 let addrMode = PostInc;
20196 let accessSize = WordAccess;
20197 let isNVStore = 1;
20198 let isNewValue = 1;
20199 let isRestrictNoSlot1Store = 1;
20200 let mayStore = 1;
20201 let CextOpcode = "S2_storeri";
20202 let BaseOpcode = "S2_storeri_pi";
20203 let opNewValue = 4;
20204 let Constraints = "$Rx32 = $Rx32in";
20205 }
20206 def S2_pstorerinewf_zomap : HInst<
20207 (outs),
20208 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
20209 "if (!$Pv4) memw($Rs32) = $Nt8.new",
20210 tc_594ab548, TypeMAPPING> {
20211 let isPseudo = 1;
20212 let isCodeGenOnly = 1;
20213 let opNewValue = 2;
20214 }
20215 def S2_pstorerinewfnew_pi : HInst<
20216 (outs IntRegs:$Rx32),
20217 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Nt8),
20218 "if (!$Pv4.new) memw($Rx32++#$Ii) = $Nt8.new",
20219 tc_d24b2d85, TypeST>, Enc_65f095, AddrModeRel {
20220 let Inst{2-2} = 0b1;
20221 let Inst{7-7} = 0b1;
20222 let Inst{13-11} = 0b110;
20223 let Inst{31-21} = 0b10101011101;
20224 let isPredicated = 1;
20225 let isPredicatedFalse = 1;
20226 let addrMode = PostInc;
20227 let accessSize = WordAccess;
20228 let isNVStore = 1;
20229 let isPredicatedNew = 1;
20230 let isNewValue = 1;
20231 let isRestrictNoSlot1Store = 1;
20232 let mayStore = 1;
20233 let CextOpcode = "S2_storeri";
20234 let BaseOpcode = "S2_storeri_pi";
20235 let opNewValue = 4;
20236 let Constraints = "$Rx32 = $Rx32in";
20237 }
20238 def S2_pstorerinewt_io : HInst<
20239 (outs),
20240 (ins PredRegs:$Pv4, IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Nt8),
20241 "if ($Pv4) memw($Rs32+#$Ii) = $Nt8.new",
20242 tc_594ab548, TypeV2LDST>, Enc_8dbdfe, AddrModeRel {
20243 let Inst{2-2} = 0b0;
20244 let Inst{12-11} = 0b10;
20245 let Inst{31-21} = 0b01000000101;
20246 let isPredicated = 1;
20247 let addrMode = BaseImmOffset;
20248 let accessSize = WordAccess;
20249 let isNVStore = 1;
20250 let isNewValue = 1;
20251 let isRestrictNoSlot1Store = 1;
20252 let mayStore = 1;
20253 let CextOpcode = "S2_storeri";
20254 let InputType = "imm";
20255 let BaseOpcode = "S2_storeri_io";
20256 let isExtendable = 1;
20257 let opExtendable = 2;
20258 let isExtentSigned = 0;
20259 let opExtentBits = 8;
20260 let opExtentAlign = 2;
20261 let opNewValue = 3;
20262 }
20263 def S2_pstorerinewt_pi : HInst<
20264 (outs IntRegs:$Rx32),
20265 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Nt8),
20266 "if ($Pv4) memw($Rx32++#$Ii) = $Nt8.new",
20267 tc_d9f95eef, TypeST>, Enc_65f095, AddrModeRel {
20268 let Inst{2-2} = 0b0;
20269 let Inst{7-7} = 0b0;
20270 let Inst{13-11} = 0b110;
20271 let Inst{31-21} = 0b10101011101;
20272 let isPredicated = 1;
20273 let addrMode = PostInc;
20274 let accessSize = WordAccess;
20275 let isNVStore = 1;
20276 let isNewValue = 1;
20277 let isRestrictNoSlot1Store = 1;
20278 let mayStore = 1;
20279 let CextOpcode = "S2_storeri";
20280 let BaseOpcode = "S2_storeri_pi";
20281 let opNewValue = 4;
20282 let Constraints = "$Rx32 = $Rx32in";
20283 }
20284 def S2_pstorerinewt_zomap : HInst<
20285 (outs),
20286 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
20287 "if ($Pv4) memw($Rs32) = $Nt8.new",
20288 tc_594ab548, TypeMAPPING> {
20289 let isPseudo = 1;
20290 let isCodeGenOnly = 1;
20291 let opNewValue = 2;
20292 }
20293 def S2_pstorerinewtnew_pi : HInst<
20294 (outs IntRegs:$Rx32),
20295 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Nt8),
20296 "if ($Pv4.new) memw($Rx32++#$Ii) = $Nt8.new",
20297 tc_d24b2d85, TypeST>, Enc_65f095, AddrModeRel {
20298 let Inst{2-2} = 0b0;
20299 let Inst{7-7} = 0b1;
20300 let Inst{13-11} = 0b110;
20301 let Inst{31-21} = 0b10101011101;
20302 let isPredicated = 1;
20303 let addrMode = PostInc;
20304 let accessSize = WordAccess;
20305 let isNVStore = 1;
20306 let isPredicatedNew = 1;
20307 let isNewValue = 1;
20308 let isRestrictNoSlot1Store = 1;
20309 let mayStore = 1;
20310 let CextOpcode = "S2_storeri";
20311 let BaseOpcode = "S2_storeri_pi";
20312 let opNewValue = 4;
20313 let Constraints = "$Rx32 = $Rx32in";
20314 }
20315 def S2_pstorerit_io : HInst<
20316 (outs),
20317 (ins PredRegs:$Pv4, IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Rt32),
20318 "if ($Pv4) memw($Rs32+#$Ii) = $Rt32",
20319 tc_8b15472a, TypeV2LDST>, Enc_397f23, AddrModeRel {
20320 let Inst{2-2} = 0b0;
20321 let Inst{31-21} = 0b01000000100;
20322 let isPredicated = 1;
20323 let addrMode = BaseImmOffset;
20324 let accessSize = WordAccess;
20325 let mayStore = 1;
20326 let CextOpcode = "S2_storeri";
20327 let InputType = "imm";
20328 let BaseOpcode = "S2_storeri_io";
20329 let isNVStorable = 1;
20330 let isExtendable = 1;
20331 let opExtendable = 2;
20332 let isExtentSigned = 0;
20333 let opExtentBits = 8;
20334 let opExtentAlign = 2;
20335 }
20336 def S2_pstorerit_pi : HInst<
20337 (outs IntRegs:$Rx32),
20338 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Rt32),
20339 "if ($Pv4) memw($Rx32++#$Ii) = $Rt32",
20340 tc_cd7374a0, TypeST>, Enc_7eaeb6, AddrModeRel {
20341 let Inst{2-2} = 0b0;
20342 let Inst{7-7} = 0b0;
20343 let Inst{13-13} = 0b1;
20344 let Inst{31-21} = 0b10101011100;
20345 let isPredicated = 1;
20346 let addrMode = PostInc;
20347 let accessSize = WordAccess;
20348 let mayStore = 1;
20349 let BaseOpcode = "S2_storeri_pi";
20350 let isNVStorable = 1;
20351 let Constraints = "$Rx32 = $Rx32in";
20352 }
20353 def S2_pstorerit_zomap : HInst<
20354 (outs),
20355 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
20356 "if ($Pv4) memw($Rs32) = $Rt32",
20357 tc_8b15472a, TypeMAPPING> {
20358 let isPseudo = 1;
20359 let isCodeGenOnly = 1;
20360 }
20361 def S2_pstoreritnew_pi : HInst<
20362 (outs IntRegs:$Rx32),
20363 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Rt32),
20364 "if ($Pv4.new) memw($Rx32++#$Ii) = $Rt32",
20365 tc_74e47fd9, TypeST>, Enc_7eaeb6, AddrModeRel {
20366 let Inst{2-2} = 0b0;
20367 let Inst{7-7} = 0b1;
20368 let Inst{13-13} = 0b1;
20369 let Inst{31-21} = 0b10101011100;
20370 let isPredicated = 1;
20371 let addrMode = PostInc;
20372 let accessSize = WordAccess;
20373 let isPredicatedNew = 1;
20374 let mayStore = 1;
20375 let BaseOpcode = "S2_storeri_pi";
20376 let isNVStorable = 1;
20377 let Constraints = "$Rx32 = $Rx32in";
20378 }
20379 def S2_setbit_i : HInst<
20380 (outs IntRegs:$Rd32),
20381 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
20382 "$Rd32 = setbit($Rs32,#$Ii)",
20383 tc_540fdfbc, TypeS_2op>, Enc_a05677 {
20384 let Inst{7-5} = 0b000;
20385 let Inst{13-13} = 0b0;
20386 let Inst{31-21} = 0b10001100110;
20387 let hasNewValue = 1;
20388 let opNewValue = 0;
20389 }
20390 def S2_setbit_r : HInst<
20391 (outs IntRegs:$Rd32),
20392 (ins IntRegs:$Rs32, IntRegs:$Rt32),
20393 "$Rd32 = setbit($Rs32,$Rt32)",
20394 tc_540fdfbc, TypeS_3op>, Enc_5ab2be {
20395 let Inst{7-5} = 0b000;
20396 let Inst{13-13} = 0b0;
20397 let Inst{31-21} = 0b11000110100;
20398 let hasNewValue = 1;
20399 let opNewValue = 0;
20400 }
20401 def S2_shuffeb : HInst<
20402 (outs DoubleRegs:$Rdd32),
20403 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
20404 "$Rdd32 = shuffeb($Rss32,$Rtt32)",
20405 tc_540fdfbc, TypeS_3op>, Enc_a56825 {
20406 let Inst{7-5} = 0b010;
20407 let Inst{13-13} = 0b0;
20408 let Inst{31-21} = 0b11000001000;
20409 }
20410 def S2_shuffeh : HInst<
20411 (outs DoubleRegs:$Rdd32),
20412 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
20413 "$Rdd32 = shuffeh($Rss32,$Rtt32)",
20414 tc_540fdfbc, TypeS_3op>, Enc_a56825 {
20415 let Inst{7-5} = 0b110;
20416 let Inst{13-13} = 0b0;
20417 let Inst{31-21} = 0b11000001000;
20418 }
20419 def S2_shuffob : HInst<
20420 (outs DoubleRegs:$Rdd32),
20421 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
20422 "$Rdd32 = shuffob($Rtt32,$Rss32)",
20423 tc_540fdfbc, TypeS_3op>, Enc_ea23e4 {
20424 let Inst{7-5} = 0b100;
20425 let Inst{13-13} = 0b0;
20426 let Inst{31-21} = 0b11000001000;
20427 }
20428 def S2_shuffoh : HInst<
20429 (outs DoubleRegs:$Rdd32),
20430 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
20431 "$Rdd32 = shuffoh($Rtt32,$Rss32)",
20432 tc_540fdfbc, TypeS_3op>, Enc_ea23e4 {
20433 let Inst{7-5} = 0b000;
20434 let Inst{13-13} = 0b0;
20435 let Inst{31-21} = 0b11000001100;
20436 }
20437 def S2_storerb_io : HInst<
20438 (outs),
20439 (ins IntRegs:$Rs32, s32_0Imm:$Ii, IntRegs:$Rt32),
20440 "memb($Rs32+#$Ii) = $Rt32",
20441 tc_05b6c987, TypeST>, Enc_448f7f, AddrModeRel, PostInc_BaseImm {
20442 let Inst{24-21} = 0b1000;
20443 let Inst{31-27} = 0b10100;
20444 let addrMode = BaseImmOffset;
20445 let accessSize = ByteAccess;
20446 let mayStore = 1;
20447 let CextOpcode = "S2_storerb";
20448 let InputType = "imm";
20449 let BaseOpcode = "S2_storerb_io";
20450 let isPredicable = 1;
20451 let isNVStorable = 1;
20452 let isExtendable = 1;
20453 let opExtendable = 1;
20454 let isExtentSigned = 1;
20455 let opExtentBits = 11;
20456 let opExtentAlign = 0;
20457 }
20458 def S2_storerb_pbr : HInst<
20459 (outs IntRegs:$Rx32),
20460 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
20461 "memb($Rx32++$Mu2:brev) = $Rt32",
20462 tc_f86c328a, TypeST>, Enc_d5c73f, AddrModeRel {
20463 let Inst{7-0} = 0b00000000;
20464 let Inst{31-21} = 0b10101111000;
20465 let accessSize = ByteAccess;
20466 let mayStore = 1;
20467 let BaseOpcode = "S2_storerb_pbr";
20468 let isNVStorable = 1;
20469 let Constraints = "$Rx32 = $Rx32in";
20470 }
20471 def S2_storerb_pci : HInst<
20472 (outs IntRegs:$Rx32),
20473 (ins IntRegs:$Rx32in, s4_0Imm:$Ii, ModRegs:$Mu2, IntRegs:$Rt32),
20474 "memb($Rx32++#$Ii:circ($Mu2)) = $Rt32",
20475 tc_9fdb5406, TypeST>, Enc_b15941, AddrModeRel {
20476 let Inst{2-0} = 0b000;
20477 let Inst{7-7} = 0b0;
20478 let Inst{31-21} = 0b10101001000;
20479 let addrMode = PostInc;
20480 let accessSize = ByteAccess;
20481 let mayStore = 1;
20482 let Uses = [CS];
20483 let BaseOpcode = "S2_storerb_pci";
20484 let isNVStorable = 1;
20485 let Constraints = "$Rx32 = $Rx32in";
20486 }
20487 def S2_storerb_pcr : HInst<
20488 (outs IntRegs:$Rx32),
20489 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
20490 "memb($Rx32++I:circ($Mu2)) = $Rt32",
20491 tc_f86c328a, TypeST>, Enc_d5c73f, AddrModeRel {
20492 let Inst{7-0} = 0b00000010;
20493 let Inst{31-21} = 0b10101001000;
20494 let addrMode = PostInc;
20495 let accessSize = ByteAccess;
20496 let mayStore = 1;
20497 let Uses = [CS];
20498 let BaseOpcode = "S2_storerb_pcr";
20499 let isNVStorable = 1;
20500 let Constraints = "$Rx32 = $Rx32in";
20501 }
20502 def S2_storerb_pi : HInst<
20503 (outs IntRegs:$Rx32),
20504 (ins IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Rt32),
20505 "memb($Rx32++#$Ii) = $Rt32",
20506 tc_f86c328a, TypeST>, Enc_10bc21, AddrModeRel, PostInc_BaseImm {
20507 let Inst{2-0} = 0b000;
20508 let Inst{7-7} = 0b0;
20509 let Inst{13-13} = 0b0;
20510 let Inst{31-21} = 0b10101011000;
20511 let addrMode = PostInc;
20512 let accessSize = ByteAccess;
20513 let mayStore = 1;
20514 let CextOpcode = "S2_storerb";
20515 let BaseOpcode = "S2_storerb_pi";
20516 let isPredicable = 1;
20517 let isNVStorable = 1;
20518 let Constraints = "$Rx32 = $Rx32in";
20519 }
20520 def S2_storerb_pr : HInst<
20521 (outs IntRegs:$Rx32),
20522 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
20523 "memb($Rx32++$Mu2) = $Rt32",
20524 tc_f86c328a, TypeST>, Enc_d5c73f {
20525 let Inst{7-0} = 0b00000000;
20526 let Inst{31-21} = 0b10101101000;
20527 let addrMode = PostInc;
20528 let accessSize = ByteAccess;
20529 let mayStore = 1;
20530 let isNVStorable = 1;
20531 let Constraints = "$Rx32 = $Rx32in";
20532 }
20533 def S2_storerb_zomap : HInst<
20534 (outs),
20535 (ins IntRegs:$Rs32, IntRegs:$Rt32),
20536 "memb($Rs32) = $Rt32",
20537 tc_05b6c987, TypeMAPPING> {
20538 let isPseudo = 1;
20539 let isCodeGenOnly = 1;
20540 }
20541 def S2_storerbgp : HInst<
20542 (outs),
20543 (ins u32_0Imm:$Ii, IntRegs:$Rt32),
20544 "memb(gp+#$Ii) = $Rt32",
20545 tc_a788683e, TypeV2LDST>, Enc_1b64fb, AddrModeRel {
20546 let Inst{24-21} = 0b0000;
20547 let Inst{31-27} = 0b01001;
20548 let accessSize = ByteAccess;
20549 let mayStore = 1;
20550 let Uses = [GP];
20551 let BaseOpcode = "S2_storerbabs";
20552 let isPredicable = 1;
20553 let isNVStorable = 1;
20554 let opExtendable = 0;
20555 let isExtentSigned = 0;
20556 let opExtentBits = 16;
20557 let opExtentAlign = 0;
20558 }
20559 def S2_storerbnew_io : HInst<
20560 (outs),
20561 (ins IntRegs:$Rs32, s32_0Imm:$Ii, IntRegs:$Nt8),
20562 "memb($Rs32+#$Ii) = $Nt8.new",
20563 tc_f7dd9c9f, TypeST>, Enc_4df4e9, AddrModeRel {
20564 let Inst{12-11} = 0b00;
20565 let Inst{24-21} = 0b1101;
20566 let Inst{31-27} = 0b10100;
20567 let addrMode = BaseImmOffset;
20568 let accessSize = ByteAccess;
20569 let isNVStore = 1;
20570 let isNewValue = 1;
20571 let isRestrictNoSlot1Store = 1;
20572 let mayStore = 1;
20573 let CextOpcode = "S2_storerb";
20574 let InputType = "imm";
20575 let BaseOpcode = "S2_storerb_io";
20576 let isPredicable = 1;
20577 let isExtendable = 1;
20578 let opExtendable = 1;
20579 let isExtentSigned = 1;
20580 let opExtentBits = 11;
20581 let opExtentAlign = 0;
20582 let opNewValue = 2;
20583 }
20584 def S2_storerbnew_pbr : HInst<
20585 (outs IntRegs:$Rx32),
20586 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
20587 "memb($Rx32++$Mu2:brev) = $Nt8.new",
20588 tc_e7d02c66, TypeST>, Enc_8dbe85, AddrModeRel {
20589 let Inst{7-0} = 0b00000000;
20590 let Inst{12-11} = 0b00;
20591 let Inst{31-21} = 0b10101111101;
20592 let accessSize = ByteAccess;
20593 let isNVStore = 1;
20594 let isNewValue = 1;
20595 let isRestrictNoSlot1Store = 1;
20596 let mayStore = 1;
20597 let BaseOpcode = "S2_storerb_pbr";
20598 let opNewValue = 3;
20599 let Constraints = "$Rx32 = $Rx32in";
20600 }
20601 def S2_storerbnew_pci : HInst<
20602 (outs IntRegs:$Rx32),
20603 (ins IntRegs:$Rx32in, s4_0Imm:$Ii, ModRegs:$Mu2, IntRegs:$Nt8),
20604 "memb($Rx32++#$Ii:circ($Mu2)) = $Nt8.new",
20605 tc_9d5941c7, TypeST>, Enc_96ce4f, AddrModeRel {
20606 let Inst{2-0} = 0b000;
20607 let Inst{7-7} = 0b0;
20608 let Inst{12-11} = 0b00;
20609 let Inst{31-21} = 0b10101001101;
20610 let addrMode = PostInc;
20611 let accessSize = ByteAccess;
20612 let isNVStore = 1;
20613 let isNewValue = 1;
20614 let isRestrictNoSlot1Store = 1;
20615 let mayStore = 1;
20616 let Uses = [CS];
20617 let BaseOpcode = "S2_storerb_pci";
20618 let opNewValue = 4;
20619 let Constraints = "$Rx32 = $Rx32in";
20620 }
20621 def S2_storerbnew_pcr : HInst<
20622 (outs IntRegs:$Rx32),
20623 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
20624 "memb($Rx32++I:circ($Mu2)) = $Nt8.new",
20625 tc_e7d02c66, TypeST>, Enc_8dbe85, AddrModeRel {
20626 let Inst{7-0} = 0b00000010;
20627 let Inst{12-11} = 0b00;
20628 let Inst{31-21} = 0b10101001101;
20629 let addrMode = PostInc;
20630 let accessSize = ByteAccess;
20631 let isNVStore = 1;
20632 let isNewValue = 1;
20633 let isRestrictNoSlot1Store = 1;
20634 let mayStore = 1;
20635 let Uses = [CS];
20636 let BaseOpcode = "S2_storerb_pcr";
20637 let opNewValue = 3;
20638 let Constraints = "$Rx32 = $Rx32in";
20639 }
20640 def S2_storerbnew_pi : HInst<
20641 (outs IntRegs:$Rx32),
20642 (ins IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Nt8),
20643 "memb($Rx32++#$Ii) = $Nt8.new",
20644 tc_e7d02c66, TypeST>, Enc_c7cd90, AddrModeRel {
20645 let Inst{2-0} = 0b000;
20646 let Inst{7-7} = 0b0;
20647 let Inst{13-11} = 0b000;
20648 let Inst{31-21} = 0b10101011101;
20649 let addrMode = PostInc;
20650 let accessSize = ByteAccess;
20651 let isNVStore = 1;
20652 let isNewValue = 1;
20653 let isRestrictNoSlot1Store = 1;
20654 let mayStore = 1;
20655 let BaseOpcode = "S2_storerb_pi";
20656 let isPredicable = 1;
20657 let isNVStorable = 1;
20658 let opNewValue = 3;
20659 let Constraints = "$Rx32 = $Rx32in";
20660 }
20661 def S2_storerbnew_pr : HInst<
20662 (outs IntRegs:$Rx32),
20663 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
20664 "memb($Rx32++$Mu2) = $Nt8.new",
20665 tc_e7d02c66, TypeST>, Enc_8dbe85 {
20666 let Inst{7-0} = 0b00000000;
20667 let Inst{12-11} = 0b00;
20668 let Inst{31-21} = 0b10101101101;
20669 let addrMode = PostInc;
20670 let accessSize = ByteAccess;
20671 let isNVStore = 1;
20672 let isNewValue = 1;
20673 let isRestrictNoSlot1Store = 1;
20674 let mayStore = 1;
20675 let opNewValue = 3;
20676 let Constraints = "$Rx32 = $Rx32in";
20677 }
20678 def S2_storerbnew_zomap : HInst<
20679 (outs),
20680 (ins IntRegs:$Rs32, IntRegs:$Nt8),
20681 "memb($Rs32) = $Nt8.new",
20682 tc_f7dd9c9f, TypeMAPPING> {
20683 let isPseudo = 1;
20684 let isCodeGenOnly = 1;
20685 let opNewValue = 1;
20686 }
20687 def S2_storerbnewgp : HInst<
20688 (outs),
20689 (ins u32_0Imm:$Ii, IntRegs:$Nt8),
20690 "memb(gp+#$Ii) = $Nt8.new",
20691 tc_ff9ee76e, TypeV2LDST>, Enc_ad1831, AddrModeRel {
20692 let Inst{12-11} = 0b00;
20693 let Inst{24-21} = 0b0101;
20694 let Inst{31-27} = 0b01001;
20695 let accessSize = ByteAccess;
20696 let isNVStore = 1;
20697 let isNewValue = 1;
20698 let isRestrictNoSlot1Store = 1;
20699 let mayStore = 1;
20700 let Uses = [GP];
20701 let BaseOpcode = "S2_storerbabs";
20702 let isPredicable = 1;
20703 let opExtendable = 0;
20704 let isExtentSigned = 0;
20705 let opExtentBits = 16;
20706 let opExtentAlign = 0;
20707 let opNewValue = 1;
20708 }
20709 def S2_storerd_io : HInst<
20710 (outs),
20711 (ins IntRegs:$Rs32, s29_3Imm:$Ii, DoubleRegs:$Rtt32),
20712 "memd($Rs32+#$Ii) = $Rtt32",
20713 tc_05b6c987, TypeST>, Enc_ce6828, AddrModeRel, PostInc_BaseImm {
20714 let Inst{24-21} = 0b1110;
20715 let Inst{31-27} = 0b10100;
20716 let addrMode = BaseImmOffset;
20717 let accessSize = DoubleWordAccess;
20718 let mayStore = 1;
20719 let CextOpcode = "S2_storerd";
20720 let InputType = "imm";
20721 let BaseOpcode = "S2_storerd_io";
20722 let isPredicable = 1;
20723 let isExtendable = 1;
20724 let opExtendable = 1;
20725 let isExtentSigned = 1;
20726 let opExtentBits = 14;
20727 let opExtentAlign = 3;
20728 }
20729 def S2_storerd_pbr : HInst<
20730 (outs IntRegs:$Rx32),
20731 (ins IntRegs:$Rx32in, ModRegs:$Mu2, DoubleRegs:$Rtt32),
20732 "memd($Rx32++$Mu2:brev) = $Rtt32",
20733 tc_f86c328a, TypeST>, Enc_928ca1 {
20734 let Inst{7-0} = 0b00000000;
20735 let Inst{31-21} = 0b10101111110;
20736 let accessSize = DoubleWordAccess;
20737 let mayStore = 1;
20738 let Constraints = "$Rx32 = $Rx32in";
20739 }
20740 def S2_storerd_pci : HInst<
20741 (outs IntRegs:$Rx32),
20742 (ins IntRegs:$Rx32in, s4_3Imm:$Ii, ModRegs:$Mu2, DoubleRegs:$Rtt32),
20743 "memd($Rx32++#$Ii:circ($Mu2)) = $Rtt32",
20744 tc_9fdb5406, TypeST>, Enc_395cc4 {
20745 let Inst{2-0} = 0b000;
20746 let Inst{7-7} = 0b0;
20747 let Inst{31-21} = 0b10101001110;
20748 let addrMode = PostInc;
20749 let accessSize = DoubleWordAccess;
20750 let mayStore = 1;
20751 let Uses = [CS];
20752 let Constraints = "$Rx32 = $Rx32in";
20753 }
20754 def S2_storerd_pcr : HInst<
20755 (outs IntRegs:$Rx32),
20756 (ins IntRegs:$Rx32in, ModRegs:$Mu2, DoubleRegs:$Rtt32),
20757 "memd($Rx32++I:circ($Mu2)) = $Rtt32",
20758 tc_f86c328a, TypeST>, Enc_928ca1 {
20759 let Inst{7-0} = 0b00000010;
20760 let Inst{31-21} = 0b10101001110;
20761 let addrMode = PostInc;
20762 let accessSize = DoubleWordAccess;
20763 let mayStore = 1;
20764 let Uses = [CS];
20765 let Constraints = "$Rx32 = $Rx32in";
20766 }
20767 def S2_storerd_pi : HInst<
20768 (outs IntRegs:$Rx32),
20769 (ins IntRegs:$Rx32in, s4_3Imm:$Ii, DoubleRegs:$Rtt32),
20770 "memd($Rx32++#$Ii) = $Rtt32",
20771 tc_f86c328a, TypeST>, Enc_85bf58, AddrModeRel, PostInc_BaseImm {
20772 let Inst{2-0} = 0b000;
20773 let Inst{7-7} = 0b0;
20774 let Inst{13-13} = 0b0;
20775 let Inst{31-21} = 0b10101011110;
20776 let addrMode = PostInc;
20777 let accessSize = DoubleWordAccess;
20778 let mayStore = 1;
20779 let CextOpcode = "S2_storerd";
20780 let BaseOpcode = "S2_storerd_pi";
20781 let isPredicable = 1;
20782 let Constraints = "$Rx32 = $Rx32in";
20783 }
20784 def S2_storerd_pr : HInst<
20785 (outs IntRegs:$Rx32),
20786 (ins IntRegs:$Rx32in, ModRegs:$Mu2, DoubleRegs:$Rtt32),
20787 "memd($Rx32++$Mu2) = $Rtt32",
20788 tc_f86c328a, TypeST>, Enc_928ca1 {
20789 let Inst{7-0} = 0b00000000;
20790 let Inst{31-21} = 0b10101101110;
20791 let addrMode = PostInc;
20792 let accessSize = DoubleWordAccess;
20793 let mayStore = 1;
20794 let Constraints = "$Rx32 = $Rx32in";
20795 }
20796 def S2_storerd_zomap : HInst<
20797 (outs),
20798 (ins IntRegs:$Rs32, DoubleRegs:$Rtt32),
20799 "memd($Rs32) = $Rtt32",
20800 tc_05b6c987, TypeMAPPING> {
20801 let isPseudo = 1;
20802 let isCodeGenOnly = 1;
20803 }
20804 def S2_storerdgp : HInst<
20805 (outs),
20806 (ins u29_3Imm:$Ii, DoubleRegs:$Rtt32),
20807 "memd(gp+#$Ii) = $Rtt32",
20808 tc_a788683e, TypeV2LDST>, Enc_5c124a, AddrModeRel {
20809 let Inst{24-21} = 0b0110;
20810 let Inst{31-27} = 0b01001;
20811 let accessSize = DoubleWordAccess;
20812 let mayStore = 1;
20813 let Uses = [GP];
20814 let BaseOpcode = "S2_storerdabs";
20815 let isPredicable = 1;
20816 let opExtendable = 0;
20817 let isExtentSigned = 0;
20818 let opExtentBits = 19;
20819 let opExtentAlign = 3;
20820 }
20821 def S2_storerf_io : HInst<
20822 (outs),
20823 (ins IntRegs:$Rs32, s31_1Imm:$Ii, IntRegs:$Rt32),
20824 "memh($Rs32+#$Ii) = $Rt32.h",
20825 tc_05b6c987, TypeST>, Enc_e957fb, AddrModeRel, PostInc_BaseImm {
20826 let Inst{24-21} = 0b1011;
20827 let Inst{31-27} = 0b10100;
20828 let addrMode = BaseImmOffset;
20829 let accessSize = HalfWordAccess;
20830 let mayStore = 1;
20831 let CextOpcode = "S2_storerf";
20832 let InputType = "imm";
20833 let BaseOpcode = "S2_storerf_io";
20834 let isPredicable = 1;
20835 let isExtendable = 1;
20836 let opExtendable = 1;
20837 let isExtentSigned = 1;
20838 let opExtentBits = 12;
20839 let opExtentAlign = 1;
20840 }
20841 def S2_storerf_pbr : HInst<
20842 (outs IntRegs:$Rx32),
20843 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
20844 "memh($Rx32++$Mu2:brev) = $Rt32.h",
20845 tc_f86c328a, TypeST>, Enc_d5c73f {
20846 let Inst{7-0} = 0b00000000;
20847 let Inst{31-21} = 0b10101111011;
20848 let accessSize = HalfWordAccess;
20849 let mayStore = 1;
20850 let Constraints = "$Rx32 = $Rx32in";
20851 }
20852 def S2_storerf_pci : HInst<
20853 (outs IntRegs:$Rx32),
20854 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, ModRegs:$Mu2, IntRegs:$Rt32),
20855 "memh($Rx32++#$Ii:circ($Mu2)) = $Rt32.h",
20856 tc_9fdb5406, TypeST>, Enc_935d9b {
20857 let Inst{2-0} = 0b000;
20858 let Inst{7-7} = 0b0;
20859 let Inst{31-21} = 0b10101001011;
20860 let addrMode = PostInc;
20861 let accessSize = HalfWordAccess;
20862 let mayStore = 1;
20863 let Uses = [CS];
20864 let Constraints = "$Rx32 = $Rx32in";
20865 }
20866 def S2_storerf_pcr : HInst<
20867 (outs IntRegs:$Rx32),
20868 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
20869 "memh($Rx32++I:circ($Mu2)) = $Rt32.h",
20870 tc_f86c328a, TypeST>, Enc_d5c73f {
20871 let Inst{7-0} = 0b00000010;
20872 let Inst{31-21} = 0b10101001011;
20873 let addrMode = PostInc;
20874 let accessSize = HalfWordAccess;
20875 let mayStore = 1;
20876 let Uses = [CS];
20877 let Constraints = "$Rx32 = $Rx32in";
20878 }
20879 def S2_storerf_pi : HInst<
20880 (outs IntRegs:$Rx32),
20881 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
20882 "memh($Rx32++#$Ii) = $Rt32.h",
20883 tc_f86c328a, TypeST>, Enc_052c7d, AddrModeRel, PostInc_BaseImm {
20884 let Inst{2-0} = 0b000;
20885 let Inst{7-7} = 0b0;
20886 let Inst{13-13} = 0b0;
20887 let Inst{31-21} = 0b10101011011;
20888 let addrMode = PostInc;
20889 let accessSize = HalfWordAccess;
20890 let mayStore = 1;
20891 let CextOpcode = "S2_storerf";
20892 let BaseOpcode = "S2_storerf_pi";
20893 let isPredicable = 1;
20894 let Constraints = "$Rx32 = $Rx32in";
20895 }
20896 def S2_storerf_pr : HInst<
20897 (outs IntRegs:$Rx32),
20898 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
20899 "memh($Rx32++$Mu2) = $Rt32.h",
20900 tc_f86c328a, TypeST>, Enc_d5c73f {
20901 let Inst{7-0} = 0b00000000;
20902 let Inst{31-21} = 0b10101101011;
20903 let addrMode = PostInc;
20904 let accessSize = HalfWordAccess;
20905 let mayStore = 1;
20906 let Constraints = "$Rx32 = $Rx32in";
20907 }
20908 def S2_storerf_zomap : HInst<
20909 (outs),
20910 (ins IntRegs:$Rs32, IntRegs:$Rt32),
20911 "memh($Rs32) = $Rt32.h",
20912 tc_05b6c987, TypeMAPPING> {
20913 let isPseudo = 1;
20914 let isCodeGenOnly = 1;
20915 }
20916 def S2_storerfgp : HInst<
20917 (outs),
20918 (ins u31_1Imm:$Ii, IntRegs:$Rt32),
20919 "memh(gp+#$Ii) = $Rt32.h",
20920 tc_a788683e, TypeV2LDST>, Enc_fda92c, AddrModeRel {
20921 let Inst{24-21} = 0b0011;
20922 let Inst{31-27} = 0b01001;
20923 let accessSize = HalfWordAccess;
20924 let mayStore = 1;
20925 let Uses = [GP];
20926 let BaseOpcode = "S2_storerfabs";
20927 let isPredicable = 1;
20928 let opExtendable = 0;
20929 let isExtentSigned = 0;
20930 let opExtentBits = 17;
20931 let opExtentAlign = 1;
20932 }
20933 def S2_storerh_io : HInst<
20934 (outs),
20935 (ins IntRegs:$Rs32, s31_1Imm:$Ii, IntRegs:$Rt32),
20936 "memh($Rs32+#$Ii) = $Rt32",
20937 tc_05b6c987, TypeST>, Enc_e957fb, AddrModeRel, PostInc_BaseImm {
20938 let Inst{24-21} = 0b1010;
20939 let Inst{31-27} = 0b10100;
20940 let addrMode = BaseImmOffset;
20941 let accessSize = HalfWordAccess;
20942 let mayStore = 1;
20943 let CextOpcode = "S2_storerh";
20944 let InputType = "imm";
20945 let BaseOpcode = "S2_storerh_io";
20946 let isPredicable = 1;
20947 let isNVStorable = 1;
20948 let isExtendable = 1;
20949 let opExtendable = 1;
20950 let isExtentSigned = 1;
20951 let opExtentBits = 12;
20952 let opExtentAlign = 1;
20953 }
20954 def S2_storerh_pbr : HInst<
20955 (outs IntRegs:$Rx32),
20956 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
20957 "memh($Rx32++$Mu2:brev) = $Rt32",
20958 tc_f86c328a, TypeST>, Enc_d5c73f, AddrModeRel {
20959 let Inst{7-0} = 0b00000000;
20960 let Inst{31-21} = 0b10101111010;
20961 let accessSize = HalfWordAccess;
20962 let mayStore = 1;
20963 let BaseOpcode = "S2_storerh_pbr";
20964 let isNVStorable = 1;
20965 let Constraints = "$Rx32 = $Rx32in";
20966 }
20967 def S2_storerh_pci : HInst<
20968 (outs IntRegs:$Rx32),
20969 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, ModRegs:$Mu2, IntRegs:$Rt32),
20970 "memh($Rx32++#$Ii:circ($Mu2)) = $Rt32",
20971 tc_9fdb5406, TypeST>, Enc_935d9b, AddrModeRel {
20972 let Inst{2-0} = 0b000;
20973 let Inst{7-7} = 0b0;
20974 let Inst{31-21} = 0b10101001010;
20975 let addrMode = PostInc;
20976 let accessSize = HalfWordAccess;
20977 let mayStore = 1;
20978 let Uses = [CS];
20979 let BaseOpcode = "S2_storerh_pci";
20980 let isNVStorable = 1;
20981 let Constraints = "$Rx32 = $Rx32in";
20982 }
20983 def S2_storerh_pcr : HInst<
20984 (outs IntRegs:$Rx32),
20985 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
20986 "memh($Rx32++I:circ($Mu2)) = $Rt32",
20987 tc_f86c328a, TypeST>, Enc_d5c73f, AddrModeRel {
20988 let Inst{7-0} = 0b00000010;
20989 let Inst{31-21} = 0b10101001010;
20990 let addrMode = PostInc;
20991 let accessSize = HalfWordAccess;
20992 let mayStore = 1;
20993 let Uses = [CS];
20994 let BaseOpcode = "S2_storerh_pcr";
20995 let isNVStorable = 1;
20996 let Constraints = "$Rx32 = $Rx32in";
20997 }
20998 def S2_storerh_pi : HInst<
20999 (outs IntRegs:$Rx32),
21000 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
21001 "memh($Rx32++#$Ii) = $Rt32",
21002 tc_f86c328a, TypeST>, Enc_052c7d, AddrModeRel, PostInc_BaseImm {
21003 let Inst{2-0} = 0b000;
21004 let Inst{7-7} = 0b0;
21005 let Inst{13-13} = 0b0;
21006 let Inst{31-21} = 0b10101011010;
21007 let addrMode = PostInc;
21008 let accessSize = HalfWordAccess;
21009 let mayStore = 1;
21010 let CextOpcode = "S2_storerh";
21011 let BaseOpcode = "S2_storerh_pi";
21012 let isPredicable = 1;
21013 let isNVStorable = 1;
21014 let Constraints = "$Rx32 = $Rx32in";
21015 }
21016 def S2_storerh_pr : HInst<
21017 (outs IntRegs:$Rx32),
21018 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
21019 "memh($Rx32++$Mu2) = $Rt32",
21020 tc_f86c328a, TypeST>, Enc_d5c73f {
21021 let Inst{7-0} = 0b00000000;
21022 let Inst{31-21} = 0b10101101010;
21023 let addrMode = PostInc;
21024 let accessSize = HalfWordAccess;
21025 let mayStore = 1;
21026 let isNVStorable = 1;
21027 let Constraints = "$Rx32 = $Rx32in";
21028 }
21029 def S2_storerh_zomap : HInst<
21030 (outs),
21031 (ins IntRegs:$Rs32, IntRegs:$Rt32),
21032 "memh($Rs32) = $Rt32",
21033 tc_05b6c987, TypeMAPPING> {
21034 let isPseudo = 1;
21035 let isCodeGenOnly = 1;
21036 }
21037 def S2_storerhgp : HInst<
21038 (outs),
21039 (ins u31_1Imm:$Ii, IntRegs:$Rt32),
21040 "memh(gp+#$Ii) = $Rt32",
21041 tc_a788683e, TypeV2LDST>, Enc_fda92c, AddrModeRel {
21042 let Inst{24-21} = 0b0010;
21043 let Inst{31-27} = 0b01001;
21044 let accessSize = HalfWordAccess;
21045 let mayStore = 1;
21046 let Uses = [GP];
21047 let BaseOpcode = "S2_storerhabs";
21048 let isPredicable = 1;
21049 let isNVStorable = 1;
21050 let opExtendable = 0;
21051 let isExtentSigned = 0;
21052 let opExtentBits = 17;
21053 let opExtentAlign = 1;
21054 }
21055 def S2_storerhnew_io : HInst<
21056 (outs),
21057 (ins IntRegs:$Rs32, s31_1Imm:$Ii, IntRegs:$Nt8),
21058 "memh($Rs32+#$Ii) = $Nt8.new",
21059 tc_f7dd9c9f, TypeST>, Enc_0d8870, AddrModeRel {
21060 let Inst{12-11} = 0b01;
21061 let Inst{24-21} = 0b1101;
21062 let Inst{31-27} = 0b10100;
21063 let addrMode = BaseImmOffset;
21064 let accessSize = HalfWordAccess;
21065 let isNVStore = 1;
21066 let isNewValue = 1;
21067 let isRestrictNoSlot1Store = 1;
21068 let mayStore = 1;
21069 let CextOpcode = "S2_storerh";
21070 let InputType = "imm";
21071 let BaseOpcode = "S2_storerh_io";
21072 let isPredicable = 1;
21073 let isExtendable = 1;
21074 let opExtendable = 1;
21075 let isExtentSigned = 1;
21076 let opExtentBits = 12;
21077 let opExtentAlign = 1;
21078 let opNewValue = 2;
21079 }
21080 def S2_storerhnew_pbr : HInst<
21081 (outs IntRegs:$Rx32),
21082 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
21083 "memh($Rx32++$Mu2:brev) = $Nt8.new",
21084 tc_e7d02c66, TypeST>, Enc_8dbe85, AddrModeRel {
21085 let Inst{7-0} = 0b00000000;
21086 let Inst{12-11} = 0b01;
21087 let Inst{31-21} = 0b10101111101;
21088 let accessSize = HalfWordAccess;
21089 let isNVStore = 1;
21090 let isNewValue = 1;
21091 let isRestrictNoSlot1Store = 1;
21092 let mayStore = 1;
21093 let BaseOpcode = "S2_storerh_pbr";
21094 let opNewValue = 3;
21095 let Constraints = "$Rx32 = $Rx32in";
21096 }
21097 def S2_storerhnew_pci : HInst<
21098 (outs IntRegs:$Rx32),
21099 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, ModRegs:$Mu2, IntRegs:$Nt8),
21100 "memh($Rx32++#$Ii:circ($Mu2)) = $Nt8.new",
21101 tc_9d5941c7, TypeST>, Enc_91b9fe, AddrModeRel {
21102 let Inst{2-0} = 0b000;
21103 let Inst{7-7} = 0b0;
21104 let Inst{12-11} = 0b01;
21105 let Inst{31-21} = 0b10101001101;
21106 let addrMode = PostInc;
21107 let accessSize = HalfWordAccess;
21108 let isNVStore = 1;
21109 let isNewValue = 1;
21110 let isRestrictNoSlot1Store = 1;
21111 let mayStore = 1;
21112 let Uses = [CS];
21113 let BaseOpcode = "S2_storerh_pci";
21114 let opNewValue = 4;
21115 let Constraints = "$Rx32 = $Rx32in";
21116 }
21117 def S2_storerhnew_pcr : HInst<
21118 (outs IntRegs:$Rx32),
21119 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
21120 "memh($Rx32++I:circ($Mu2)) = $Nt8.new",
21121 tc_e7d02c66, TypeST>, Enc_8dbe85, AddrModeRel {
21122 let Inst{7-0} = 0b00000010;
21123 let Inst{12-11} = 0b01;
21124 let Inst{31-21} = 0b10101001101;
21125 let addrMode = PostInc;
21126 let accessSize = HalfWordAccess;
21127 let isNVStore = 1;
21128 let isNewValue = 1;
21129 let isRestrictNoSlot1Store = 1;
21130 let mayStore = 1;
21131 let Uses = [CS];
21132 let BaseOpcode = "S2_storerh_pcr";
21133 let opNewValue = 3;
21134 let Constraints = "$Rx32 = $Rx32in";
21135 }
21136 def S2_storerhnew_pi : HInst<
21137 (outs IntRegs:$Rx32),
21138 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Nt8),
21139 "memh($Rx32++#$Ii) = $Nt8.new",
21140 tc_e7d02c66, TypeST>, Enc_e26546, AddrModeRel {
21141 let Inst{2-0} = 0b000;
21142 let Inst{7-7} = 0b0;
21143 let Inst{13-11} = 0b001;
21144 let Inst{31-21} = 0b10101011101;
21145 let addrMode = PostInc;
21146 let accessSize = HalfWordAccess;
21147 let isNVStore = 1;
21148 let isNewValue = 1;
21149 let isRestrictNoSlot1Store = 1;
21150 let mayStore = 1;
21151 let BaseOpcode = "S2_storerh_pi";
21152 let isNVStorable = 1;
21153 let isPredicable = 1;
21154 let opNewValue = 3;
21155 let Constraints = "$Rx32 = $Rx32in";
21156 }
21157 def S2_storerhnew_pr : HInst<
21158 (outs IntRegs:$Rx32),
21159 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
21160 "memh($Rx32++$Mu2) = $Nt8.new",
21161 tc_e7d02c66, TypeST>, Enc_8dbe85 {
21162 let Inst{7-0} = 0b00000000;
21163 let Inst{12-11} = 0b01;
21164 let Inst{31-21} = 0b10101101101;
21165 let addrMode = PostInc;
21166 let accessSize = HalfWordAccess;
21167 let isNVStore = 1;
21168 let isNewValue = 1;
21169 let isRestrictNoSlot1Store = 1;
21170 let mayStore = 1;
21171 let opNewValue = 3;
21172 let Constraints = "$Rx32 = $Rx32in";
21173 }
21174 def S2_storerhnew_zomap : HInst<
21175 (outs),
21176 (ins IntRegs:$Rs32, IntRegs:$Nt8),
21177 "memh($Rs32) = $Nt8.new",
21178 tc_f7dd9c9f, TypeMAPPING> {
21179 let isPseudo = 1;
21180 let isCodeGenOnly = 1;
21181 let opNewValue = 1;
21182 }
21183 def S2_storerhnewgp : HInst<
21184 (outs),
21185 (ins u31_1Imm:$Ii, IntRegs:$Nt8),
21186 "memh(gp+#$Ii) = $Nt8.new",
21187 tc_ff9ee76e, TypeV2LDST>, Enc_bc03e5, AddrModeRel {
21188 let Inst{12-11} = 0b01;
21189 let Inst{24-21} = 0b0101;
21190 let Inst{31-27} = 0b01001;
21191 let accessSize = HalfWordAccess;
21192 let isNVStore = 1;
21193 let isNewValue = 1;
21194 let isRestrictNoSlot1Store = 1;
21195 let mayStore = 1;
21196 let Uses = [GP];
21197 let BaseOpcode = "S2_storerhabs";
21198 let isPredicable = 1;
21199 let opExtendable = 0;
21200 let isExtentSigned = 0;
21201 let opExtentBits = 17;
21202 let opExtentAlign = 1;
21203 let opNewValue = 1;
21204 }
21205 def S2_storeri_io : HInst<
21206 (outs),
21207 (ins IntRegs:$Rs32, s30_2Imm:$Ii, IntRegs:$Rt32),
21208 "memw($Rs32+#$Ii) = $Rt32",
21209 tc_05b6c987, TypeST>, Enc_143445, AddrModeRel, PostInc_BaseImm {
21210 let Inst{24-21} = 0b1100;
21211 let Inst{31-27} = 0b10100;
21212 let addrMode = BaseImmOffset;
21213 let accessSize = WordAccess;
21214 let mayStore = 1;
21215 let CextOpcode = "S2_storeri";
21216 let InputType = "imm";
21217 let BaseOpcode = "S2_storeri_io";
21218 let isPredicable = 1;
21219 let isNVStorable = 1;
21220 let isExtendable = 1;
21221 let opExtendable = 1;
21222 let isExtentSigned = 1;
21223 let opExtentBits = 13;
21224 let opExtentAlign = 2;
21225 }
21226 def S2_storeri_pbr : HInst<
21227 (outs IntRegs:$Rx32),
21228 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
21229 "memw($Rx32++$Mu2:brev) = $Rt32",
21230 tc_f86c328a, TypeST>, Enc_d5c73f, AddrModeRel {
21231 let Inst{7-0} = 0b00000000;
21232 let Inst{31-21} = 0b10101111100;
21233 let accessSize = WordAccess;
21234 let mayStore = 1;
21235 let BaseOpcode = "S2_storeri_pbr";
21236 let isNVStorable = 1;
21237 let Constraints = "$Rx32 = $Rx32in";
21238 }
21239 def S2_storeri_pci : HInst<
21240 (outs IntRegs:$Rx32),
21241 (ins IntRegs:$Rx32in, s4_2Imm:$Ii, ModRegs:$Mu2, IntRegs:$Rt32),
21242 "memw($Rx32++#$Ii:circ($Mu2)) = $Rt32",
21243 tc_9fdb5406, TypeST>, Enc_79b8c8, AddrModeRel {
21244 let Inst{2-0} = 0b000;
21245 let Inst{7-7} = 0b0;
21246 let Inst{31-21} = 0b10101001100;
21247 let addrMode = PostInc;
21248 let accessSize = WordAccess;
21249 let mayStore = 1;
21250 let Uses = [CS];
21251 let BaseOpcode = "S2_storeri_pci";
21252 let isNVStorable = 1;
21253 let Constraints = "$Rx32 = $Rx32in";
21254 }
21255 def S2_storeri_pcr : HInst<
21256 (outs IntRegs:$Rx32),
21257 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
21258 "memw($Rx32++I:circ($Mu2)) = $Rt32",
21259 tc_f86c328a, TypeST>, Enc_d5c73f, AddrModeRel {
21260 let Inst{7-0} = 0b00000010;
21261 let Inst{31-21} = 0b10101001100;
21262 let addrMode = PostInc;
21263 let accessSize = WordAccess;
21264 let mayStore = 1;
21265 let Uses = [CS];
21266 let BaseOpcode = "S2_storeri_pcr";
21267 let isNVStorable = 1;
21268 let Constraints = "$Rx32 = $Rx32in";
21269 }
21270 def S2_storeri_pi : HInst<
21271 (outs IntRegs:$Rx32),
21272 (ins IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Rt32),
21273 "memw($Rx32++#$Ii) = $Rt32",
21274 tc_f86c328a, TypeST>, Enc_db40cd, AddrModeRel, PostInc_BaseImm {
21275 let Inst{2-0} = 0b000;
21276 let Inst{7-7} = 0b0;
21277 let Inst{13-13} = 0b0;
21278 let Inst{31-21} = 0b10101011100;
21279 let addrMode = PostInc;
21280 let accessSize = WordAccess;
21281 let mayStore = 1;
21282 let CextOpcode = "S2_storeri";
21283 let BaseOpcode = "S2_storeri_pi";
21284 let isPredicable = 1;
21285 let isNVStorable = 1;
21286 let Constraints = "$Rx32 = $Rx32in";
21287 }
21288 def S2_storeri_pr : HInst<
21289 (outs IntRegs:$Rx32),
21290 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
21291 "memw($Rx32++$Mu2) = $Rt32",
21292 tc_f86c328a, TypeST>, Enc_d5c73f {
21293 let Inst{7-0} = 0b00000000;
21294 let Inst{31-21} = 0b10101101100;
21295 let addrMode = PostInc;
21296 let accessSize = WordAccess;
21297 let mayStore = 1;
21298 let isNVStorable = 1;
21299 let Constraints = "$Rx32 = $Rx32in";
21300 }
21301 def S2_storeri_zomap : HInst<
21302 (outs),
21303 (ins IntRegs:$Rs32, IntRegs:$Rt32),
21304 "memw($Rs32) = $Rt32",
21305 tc_05b6c987, TypeMAPPING> {
21306 let isPseudo = 1;
21307 let isCodeGenOnly = 1;
21308 }
21309 def S2_storerigp : HInst<
21310 (outs),
21311 (ins u30_2Imm:$Ii, IntRegs:$Rt32),
21312 "memw(gp+#$Ii) = $Rt32",
21313 tc_a788683e, TypeV2LDST>, Enc_541f26, AddrModeRel {
21314 let Inst{24-21} = 0b0100;
21315 let Inst{31-27} = 0b01001;
21316 let accessSize = WordAccess;
21317 let mayStore = 1;
21318 let Uses = [GP];
21319 let BaseOpcode = "S2_storeriabs";
21320 let isPredicable = 1;
21321 let isNVStorable = 1;
21322 let opExtendable = 0;
21323 let isExtentSigned = 0;
21324 let opExtentBits = 18;
21325 let opExtentAlign = 2;
21326 }
21327 def S2_storerinew_io : HInst<
21328 (outs),
21329 (ins IntRegs:$Rs32, s30_2Imm:$Ii, IntRegs:$Nt8),
21330 "memw($Rs32+#$Ii) = $Nt8.new",
21331 tc_f7dd9c9f, TypeST>, Enc_690862, AddrModeRel {
21332 let Inst{12-11} = 0b10;
21333 let Inst{24-21} = 0b1101;
21334 let Inst{31-27} = 0b10100;
21335 let addrMode = BaseImmOffset;
21336 let accessSize = WordAccess;
21337 let isNVStore = 1;
21338 let isNewValue = 1;
21339 let isRestrictNoSlot1Store = 1;
21340 let mayStore = 1;
21341 let CextOpcode = "S2_storeri";
21342 let InputType = "imm";
21343 let BaseOpcode = "S2_storeri_io";
21344 let isPredicable = 1;
21345 let isExtendable = 1;
21346 let opExtendable = 1;
21347 let isExtentSigned = 1;
21348 let opExtentBits = 13;
21349 let opExtentAlign = 2;
21350 let opNewValue = 2;
21351 }
21352 def S2_storerinew_pbr : HInst<
21353 (outs IntRegs:$Rx32),
21354 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
21355 "memw($Rx32++$Mu2:brev) = $Nt8.new",
21356 tc_e7d02c66, TypeST>, Enc_8dbe85, AddrModeRel {
21357 let Inst{7-0} = 0b00000000;
21358 let Inst{12-11} = 0b10;
21359 let Inst{31-21} = 0b10101111101;
21360 let accessSize = WordAccess;
21361 let isNVStore = 1;
21362 let isNewValue = 1;
21363 let isRestrictNoSlot1Store = 1;
21364 let mayStore = 1;
21365 let BaseOpcode = "S2_storeri_pbr";
21366 let opNewValue = 3;
21367 let Constraints = "$Rx32 = $Rx32in";
21368 }
21369 def S2_storerinew_pci : HInst<
21370 (outs IntRegs:$Rx32),
21371 (ins IntRegs:$Rx32in, s4_2Imm:$Ii, ModRegs:$Mu2, IntRegs:$Nt8),
21372 "memw($Rx32++#$Ii:circ($Mu2)) = $Nt8.new",
21373 tc_9d5941c7, TypeST>, Enc_3f97c8, AddrModeRel {
21374 let Inst{2-0} = 0b000;
21375 let Inst{7-7} = 0b0;
21376 let Inst{12-11} = 0b10;
21377 let Inst{31-21} = 0b10101001101;
21378 let addrMode = PostInc;
21379 let accessSize = WordAccess;
21380 let isNVStore = 1;
21381 let isNewValue = 1;
21382 let isRestrictNoSlot1Store = 1;
21383 let mayStore = 1;
21384 let Uses = [CS];
21385 let BaseOpcode = "S2_storeri_pci";
21386 let opNewValue = 4;
21387 let Constraints = "$Rx32 = $Rx32in";
21388 }
21389 def S2_storerinew_pcr : HInst<
21390 (outs IntRegs:$Rx32),
21391 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
21392 "memw($Rx32++I:circ($Mu2)) = $Nt8.new",
21393 tc_e7d02c66, TypeST>, Enc_8dbe85, AddrModeRel {
21394 let Inst{7-0} = 0b00000010;
21395 let Inst{12-11} = 0b10;
21396 let Inst{31-21} = 0b10101001101;
21397 let addrMode = PostInc;
21398 let accessSize = WordAccess;
21399 let isNVStore = 1;
21400 let isNewValue = 1;
21401 let isRestrictNoSlot1Store = 1;
21402 let mayStore = 1;
21403 let Uses = [CS];
21404 let BaseOpcode = "S2_storeri_pcr";
21405 let opNewValue = 3;
21406 let Constraints = "$Rx32 = $Rx32in";
21407 }
21408 def S2_storerinew_pi : HInst<
21409 (outs IntRegs:$Rx32),
21410 (ins IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Nt8),
21411 "memw($Rx32++#$Ii) = $Nt8.new",
21412 tc_e7d02c66, TypeST>, Enc_223005, AddrModeRel {
21413 let Inst{2-0} = 0b000;
21414 let Inst{7-7} = 0b0;
21415 let Inst{13-11} = 0b010;
21416 let Inst{31-21} = 0b10101011101;
21417 let addrMode = PostInc;
21418 let accessSize = WordAccess;
21419 let isNVStore = 1;
21420 let isNewValue = 1;
21421 let isRestrictNoSlot1Store = 1;
21422 let mayStore = 1;
21423 let BaseOpcode = "S2_storeri_pi";
21424 let isPredicable = 1;
21425 let opNewValue = 3;
21426 let Constraints = "$Rx32 = $Rx32in";
21427 }
21428 def S2_storerinew_pr : HInst<
21429 (outs IntRegs:$Rx32),
21430 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
21431 "memw($Rx32++$Mu2) = $Nt8.new",
21432 tc_e7d02c66, TypeST>, Enc_8dbe85 {
21433 let Inst{7-0} = 0b00000000;
21434 let Inst{12-11} = 0b10;
21435 let Inst{31-21} = 0b10101101101;
21436 let addrMode = PostInc;
21437 let accessSize = WordAccess;
21438 let isNVStore = 1;
21439 let isNewValue = 1;
21440 let isRestrictNoSlot1Store = 1;
21441 let mayStore = 1;
21442 let opNewValue = 3;
21443 let Constraints = "$Rx32 = $Rx32in";
21444 }
21445 def S2_storerinew_zomap : HInst<
21446 (outs),
21447 (ins IntRegs:$Rs32, IntRegs:$Nt8),
21448 "memw($Rs32) = $Nt8.new",
21449 tc_f7dd9c9f, TypeMAPPING> {
21450 let isPseudo = 1;
21451 let isCodeGenOnly = 1;
21452 let opNewValue = 1;
21453 }
21454 def S2_storerinewgp : HInst<
21455 (outs),
21456 (ins u30_2Imm:$Ii, IntRegs:$Nt8),
21457 "memw(gp+#$Ii) = $Nt8.new",
21458 tc_ff9ee76e, TypeV2LDST>, Enc_78cbf0, AddrModeRel {
21459 let Inst{12-11} = 0b10;
21460 let Inst{24-21} = 0b0101;
21461 let Inst{31-27} = 0b01001;
21462 let accessSize = WordAccess;
21463 let isNVStore = 1;
21464 let isNewValue = 1;
21465 let isRestrictNoSlot1Store = 1;
21466 let mayStore = 1;
21467 let Uses = [GP];
21468 let BaseOpcode = "S2_storeriabs";
21469 let isPredicable = 1;
21470 let opExtendable = 0;
21471 let isExtentSigned = 0;
21472 let opExtentBits = 18;
21473 let opExtentAlign = 2;
21474 let opNewValue = 1;
21475 }
21476 def S2_storew_locked : HInst<
21477 (outs PredRegs:$Pd4),
21478 (ins IntRegs:$Rs32, IntRegs:$Rt32),
21479 "memw_locked($Rs32,$Pd4) = $Rt32",
21480 tc_1372bca1, TypeST>, Enc_c2b48e {
21481 let Inst{7-2} = 0b000000;
21482 let Inst{13-13} = 0b0;
21483 let Inst{31-21} = 0b10100000101;
21484 let accessSize = WordAccess;
21485 let isPredicateLate = 1;
21486 let isSoloAX = 1;
21487 let mayStore = 1;
21488 }
21489 def S2_svsathb : HInst<
21490 (outs IntRegs:$Rd32),
21491 (ins IntRegs:$Rs32),
21492 "$Rd32 = vsathb($Rs32)",
21493 tc_cde8b071, TypeS_2op>, Enc_5e2823 {
21494 let Inst{13-5} = 0b000000000;
21495 let Inst{31-21} = 0b10001100100;
21496 let hasNewValue = 1;
21497 let opNewValue = 0;
21498 let Defs = [USR_OVF];
21499 }
21500 def S2_svsathub : HInst<
21501 (outs IntRegs:$Rd32),
21502 (ins IntRegs:$Rs32),
21503 "$Rd32 = vsathub($Rs32)",
21504 tc_cde8b071, TypeS_2op>, Enc_5e2823 {
21505 let Inst{13-5} = 0b000000010;
21506 let Inst{31-21} = 0b10001100100;
21507 let hasNewValue = 1;
21508 let opNewValue = 0;
21509 let Defs = [USR_OVF];
21510 }
21511 def S2_tableidxb : HInst<
21512 (outs IntRegs:$Rx32),
21513 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u4_0Imm:$Ii, s6_0Imm:$II),
21514 "$Rx32 = tableidxb($Rs32,#$Ii,#$II):raw",
21515 tc_87735c3b, TypeS_2op>, Enc_cd82bc {
21516 let Inst{31-22} = 0b1000011100;
21517 let hasNewValue = 1;
21518 let opNewValue = 0;
21519 let prefersSlot3 = 1;
21520 let Constraints = "$Rx32 = $Rx32in";
21521 }
21522 def S2_tableidxb_goodsyntax : HInst<
21523 (outs IntRegs:$Rx32),
21524 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u4_0Imm:$Ii, u5_0Imm:$II),
21525 "$Rx32 = tableidxb($Rs32,#$Ii,#$II)",
21526 tc_87735c3b, TypeS_2op> {
21527 let hasNewValue = 1;
21528 let opNewValue = 0;
21529 let isPseudo = 1;
21530 let isCodeGenOnly = 1;
21531 let Constraints = "$Rx32 = $Rx32in";
21532 }
21533 def S2_tableidxd : HInst<
21534 (outs IntRegs:$Rx32),
21535 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u4_0Imm:$Ii, s6_0Imm:$II),
21536 "$Rx32 = tableidxd($Rs32,#$Ii,#$II):raw",
21537 tc_87735c3b, TypeS_2op>, Enc_cd82bc {
21538 let Inst{31-22} = 0b1000011111;
21539 let hasNewValue = 1;
21540 let opNewValue = 0;
21541 let prefersSlot3 = 1;
21542 let Constraints = "$Rx32 = $Rx32in";
21543 }
21544 def S2_tableidxd_goodsyntax : HInst<
21545 (outs IntRegs:$Rx32),
21546 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u4_0Imm:$Ii, u5_0Imm:$II),
21547 "$Rx32 = tableidxd($Rs32,#$Ii,#$II)",
21548 tc_87735c3b, TypeS_2op> {
21549 let hasNewValue = 1;
21550 let opNewValue = 0;
21551 let isPseudo = 1;
21552 let Constraints = "$Rx32 = $Rx32in";
21553 }
21554 def S2_tableidxh : HInst<
21555 (outs IntRegs:$Rx32),
21556 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u4_0Imm:$Ii, s6_0Imm:$II),
21557 "$Rx32 = tableidxh($Rs32,#$Ii,#$II):raw",
21558 tc_87735c3b, TypeS_2op>, Enc_cd82bc {
21559 let Inst{31-22} = 0b1000011101;
21560 let hasNewValue = 1;
21561 let opNewValue = 0;
21562 let prefersSlot3 = 1;
21563 let Constraints = "$Rx32 = $Rx32in";
21564 }
21565 def S2_tableidxh_goodsyntax : HInst<
21566 (outs IntRegs:$Rx32),
21567 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u4_0Imm:$Ii, u5_0Imm:$II),
21568 "$Rx32 = tableidxh($Rs32,#$Ii,#$II)",
21569 tc_87735c3b, TypeS_2op> {
21570 let hasNewValue = 1;
21571 let opNewValue = 0;
21572 let isPseudo = 1;
21573 let Constraints = "$Rx32 = $Rx32in";
21574 }
21575 def S2_tableidxw : HInst<
21576 (outs IntRegs:$Rx32),
21577 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u4_0Imm:$Ii, s6_0Imm:$II),
21578 "$Rx32 = tableidxw($Rs32,#$Ii,#$II):raw",
21579 tc_87735c3b, TypeS_2op>, Enc_cd82bc {
21580 let Inst{31-22} = 0b1000011110;
21581 let hasNewValue = 1;
21582 let opNewValue = 0;
21583 let prefersSlot3 = 1;
21584 let Constraints = "$Rx32 = $Rx32in";
21585 }
21586 def S2_tableidxw_goodsyntax : HInst<
21587 (outs IntRegs:$Rx32),
21588 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u4_0Imm:$Ii, u5_0Imm:$II),
21589 "$Rx32 = tableidxw($Rs32,#$Ii,#$II)",
21590 tc_87735c3b, TypeS_2op> {
21591 let hasNewValue = 1;
21592 let opNewValue = 0;
21593 let isPseudo = 1;
21594 let Constraints = "$Rx32 = $Rx32in";
21595 }
21596 def S2_togglebit_i : HInst<
21597 (outs IntRegs:$Rd32),
21598 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
21599 "$Rd32 = togglebit($Rs32,#$Ii)",
21600 tc_540fdfbc, TypeS_2op>, Enc_a05677 {
21601 let Inst{7-5} = 0b010;
21602 let Inst{13-13} = 0b0;
21603 let Inst{31-21} = 0b10001100110;
21604 let hasNewValue = 1;
21605 let opNewValue = 0;
21606 }
21607 def S2_togglebit_r : HInst<
21608 (outs IntRegs:$Rd32),
21609 (ins IntRegs:$Rs32, IntRegs:$Rt32),
21610 "$Rd32 = togglebit($Rs32,$Rt32)",
21611 tc_540fdfbc, TypeS_3op>, Enc_5ab2be {
21612 let Inst{7-5} = 0b100;
21613 let Inst{13-13} = 0b0;
21614 let Inst{31-21} = 0b11000110100;
21615 let hasNewValue = 1;
21616 let opNewValue = 0;
21617 }
21618 def S2_tstbit_i : HInst<
21619 (outs PredRegs:$Pd4),
21620 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
21621 "$Pd4 = tstbit($Rs32,#$Ii)",
21622 tc_7a830544, TypeS_2op>, Enc_83ee64 {
21623 let Inst{7-2} = 0b000000;
21624 let Inst{13-13} = 0b0;
21625 let Inst{31-21} = 0b10000101000;
21626 }
21627 def S2_tstbit_r : HInst<
21628 (outs PredRegs:$Pd4),
21629 (ins IntRegs:$Rs32, IntRegs:$Rt32),
21630 "$Pd4 = tstbit($Rs32,$Rt32)",
21631 tc_1e856f58, TypeS_3op>, Enc_c2b48e {
21632 let Inst{7-2} = 0b000000;
21633 let Inst{13-13} = 0b0;
21634 let Inst{31-21} = 0b11000111000;
21635 }
21636 def S2_valignib : HInst<
21637 (outs DoubleRegs:$Rdd32),
21638 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32, u3_0Imm:$Ii),
21639 "$Rdd32 = valignb($Rtt32,$Rss32,#$Ii)",
21640 tc_f8eeed7a, TypeS_3op>, Enc_729ff7 {
21641 let Inst{13-13} = 0b0;
21642 let Inst{31-21} = 0b11000000000;
21643 }
21644 def S2_valignrb : HInst<
21645 (outs DoubleRegs:$Rdd32),
21646 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32, PredRegs:$Pu4),
21647 "$Rdd32 = valignb($Rtt32,$Rss32,$Pu4)",
21648 tc_f8eeed7a, TypeS_3op>, Enc_8c6530 {
21649 let Inst{7-7} = 0b0;
21650 let Inst{13-13} = 0b0;
21651 let Inst{31-21} = 0b11000010000;
21652 }
21653 def S2_vcnegh : HInst<
21654 (outs DoubleRegs:$Rdd32),
21655 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
21656 "$Rdd32 = vcnegh($Rss32,$Rt32)",
21657 tc_b44c6e2a, TypeS_3op>, Enc_927852 {
21658 let Inst{7-5} = 0b010;
21659 let Inst{13-13} = 0b0;
21660 let Inst{31-21} = 0b11000011110;
21661 let prefersSlot3 = 1;
21662 let Defs = [USR_OVF];
21663 }
21664 def S2_vcrotate : HInst<
21665 (outs DoubleRegs:$Rdd32),
21666 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
21667 "$Rdd32 = vcrotate($Rss32,$Rt32)",
21668 tc_2b6f77c6, TypeS_3op>, Enc_927852 {
21669 let Inst{7-5} = 0b000;
21670 let Inst{13-13} = 0b0;
21671 let Inst{31-21} = 0b11000011110;
21672 let prefersSlot3 = 1;
21673 let Defs = [USR_OVF];
21674 }
21675 def S2_vrcnegh : HInst<
21676 (outs DoubleRegs:$Rxx32),
21677 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
21678 "$Rxx32 += vrcnegh($Rss32,$Rt32)",
21679 tc_e913dc32, TypeS_3op>, Enc_1aa186 {
21680 let Inst{7-5} = 0b111;
21681 let Inst{13-13} = 0b1;
21682 let Inst{31-21} = 0b11001011001;
21683 let prefersSlot3 = 1;
21684 let Constraints = "$Rxx32 = $Rxx32in";
21685 }
21686 def S2_vrndpackwh : HInst<
21687 (outs IntRegs:$Rd32),
21688 (ins DoubleRegs:$Rss32),
21689 "$Rd32 = vrndwh($Rss32)",
21690 tc_d088982c, TypeS_2op>, Enc_90cd8b {
21691 let Inst{13-5} = 0b000000100;
21692 let Inst{31-21} = 0b10001000100;
21693 let hasNewValue = 1;
21694 let opNewValue = 0;
21695 let prefersSlot3 = 1;
21696 }
21697 def S2_vrndpackwhs : HInst<
21698 (outs IntRegs:$Rd32),
21699 (ins DoubleRegs:$Rss32),
21700 "$Rd32 = vrndwh($Rss32):sat",
21701 tc_c2f7d806, TypeS_2op>, Enc_90cd8b {
21702 let Inst{13-5} = 0b000000110;
21703 let Inst{31-21} = 0b10001000100;
21704 let hasNewValue = 1;
21705 let opNewValue = 0;
21706 let prefersSlot3 = 1;
21707 let Defs = [USR_OVF];
21708 }
21709 def S2_vsathb : HInst<
21710 (outs IntRegs:$Rd32),
21711 (ins DoubleRegs:$Rss32),
21712 "$Rd32 = vsathb($Rss32)",
21713 tc_cde8b071, TypeS_2op>, Enc_90cd8b {
21714 let Inst{13-5} = 0b000000110;
21715 let Inst{31-21} = 0b10001000000;
21716 let hasNewValue = 1;
21717 let opNewValue = 0;
21718 let Defs = [USR_OVF];
21719 }
21720 def S2_vsathb_nopack : HInst<
21721 (outs DoubleRegs:$Rdd32),
21722 (ins DoubleRegs:$Rss32),
21723 "$Rdd32 = vsathb($Rss32)",
21724 tc_cde8b071, TypeS_2op>, Enc_b9c5fb {
21725 let Inst{13-5} = 0b000000111;
21726 let Inst{31-21} = 0b10000000000;
21727 let Defs = [USR_OVF];
21728 }
21729 def S2_vsathub : HInst<
21730 (outs IntRegs:$Rd32),
21731 (ins DoubleRegs:$Rss32),
21732 "$Rd32 = vsathub($Rss32)",
21733 tc_cde8b071, TypeS_2op>, Enc_90cd8b {
21734 let Inst{13-5} = 0b000000000;
21735 let Inst{31-21} = 0b10001000000;
21736 let hasNewValue = 1;
21737 let opNewValue = 0;
21738 let Defs = [USR_OVF];
21739 }
21740 def S2_vsathub_nopack : HInst<
21741 (outs DoubleRegs:$Rdd32),
21742 (ins DoubleRegs:$Rss32),
21743 "$Rdd32 = vsathub($Rss32)",
21744 tc_cde8b071, TypeS_2op>, Enc_b9c5fb {
21745 let Inst{13-5} = 0b000000100;
21746 let Inst{31-21} = 0b10000000000;
21747 let Defs = [USR_OVF];
21748 }
21749 def S2_vsatwh : HInst<
21750 (outs IntRegs:$Rd32),
21751 (ins DoubleRegs:$Rss32),
21752 "$Rd32 = vsatwh($Rss32)",
21753 tc_cde8b071, TypeS_2op>, Enc_90cd8b {
21754 let Inst{13-5} = 0b000000010;
21755 let Inst{31-21} = 0b10001000000;
21756 let hasNewValue = 1;
21757 let opNewValue = 0;
21758 let Defs = [USR_OVF];
21759 }
21760 def S2_vsatwh_nopack : HInst<
21761 (outs DoubleRegs:$Rdd32),
21762 (ins DoubleRegs:$Rss32),
21763 "$Rdd32 = vsatwh($Rss32)",
21764 tc_cde8b071, TypeS_2op>, Enc_b9c5fb {
21765 let Inst{13-5} = 0b000000110;
21766 let Inst{31-21} = 0b10000000000;
21767 let Defs = [USR_OVF];
21768 }
21769 def S2_vsatwuh : HInst<
21770 (outs IntRegs:$Rd32),
21771 (ins DoubleRegs:$Rss32),
21772 "$Rd32 = vsatwuh($Rss32)",
21773 tc_cde8b071, TypeS_2op>, Enc_90cd8b {
21774 let Inst{13-5} = 0b000000100;
21775 let Inst{31-21} = 0b10001000000;
21776 let hasNewValue = 1;
21777 let opNewValue = 0;
21778 let Defs = [USR_OVF];
21779 }
21780 def S2_vsatwuh_nopack : HInst<
21781 (outs DoubleRegs:$Rdd32),
21782 (ins DoubleRegs:$Rss32),
21783 "$Rdd32 = vsatwuh($Rss32)",
21784 tc_cde8b071, TypeS_2op>, Enc_b9c5fb {
21785 let Inst{13-5} = 0b000000101;
21786 let Inst{31-21} = 0b10000000000;
21787 let Defs = [USR_OVF];
21788 }
21789 def S2_vsplatrb : HInst<
21790 (outs IntRegs:$Rd32),
21791 (ins IntRegs:$Rs32),
21792 "$Rd32 = vsplatb($Rs32)",
21793 tc_cde8b071, TypeS_2op>, Enc_5e2823 {
21794 let Inst{13-5} = 0b000000111;
21795 let Inst{31-21} = 0b10001100010;
21796 let hasNewValue = 1;
21797 let opNewValue = 0;
21798 let isReMaterializable = 1;
21799 let isAsCheapAsAMove = 1;
21800 }
21801 def S2_vsplatrh : HInst<
21802 (outs DoubleRegs:$Rdd32),
21803 (ins IntRegs:$Rs32),
21804 "$Rdd32 = vsplath($Rs32)",
21805 tc_cde8b071, TypeS_2op>, Enc_3a3d62 {
21806 let Inst{13-5} = 0b000000010;
21807 let Inst{31-21} = 0b10000100010;
21808 let isReMaterializable = 1;
21809 let isAsCheapAsAMove = 1;
21810 }
21811 def S2_vspliceib : HInst<
21812 (outs DoubleRegs:$Rdd32),
21813 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32, u3_0Imm:$Ii),
21814 "$Rdd32 = vspliceb($Rss32,$Rtt32,#$Ii)",
21815 tc_f8eeed7a, TypeS_3op>, Enc_d50cd3 {
21816 let Inst{13-13} = 0b0;
21817 let Inst{31-21} = 0b11000000100;
21818 }
21819 def S2_vsplicerb : HInst<
21820 (outs DoubleRegs:$Rdd32),
21821 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32, PredRegs:$Pu4),
21822 "$Rdd32 = vspliceb($Rss32,$Rtt32,$Pu4)",
21823 tc_f8eeed7a, TypeS_3op>, Enc_dbd70c {
21824 let Inst{7-7} = 0b0;
21825 let Inst{13-13} = 0b0;
21826 let Inst{31-21} = 0b11000010100;
21827 }
21828 def S2_vsxtbh : HInst<
21829 (outs DoubleRegs:$Rdd32),
21830 (ins IntRegs:$Rs32),
21831 "$Rdd32 = vsxtbh($Rs32)",
21832 tc_cde8b071, TypeS_2op>, Enc_3a3d62 {
21833 let Inst{13-5} = 0b000000000;
21834 let Inst{31-21} = 0b10000100000;
21835 let isReMaterializable = 1;
21836 let isAsCheapAsAMove = 1;
21837 }
21838 def S2_vsxthw : HInst<
21839 (outs DoubleRegs:$Rdd32),
21840 (ins IntRegs:$Rs32),
21841 "$Rdd32 = vsxthw($Rs32)",
21842 tc_cde8b071, TypeS_2op>, Enc_3a3d62 {
21843 let Inst{13-5} = 0b000000100;
21844 let Inst{31-21} = 0b10000100000;
21845 let isReMaterializable = 1;
21846 let isAsCheapAsAMove = 1;
21847 }
21848 def S2_vtrunehb : HInst<
21849 (outs IntRegs:$Rd32),
21850 (ins DoubleRegs:$Rss32),
21851 "$Rd32 = vtrunehb($Rss32)",
21852 tc_cde8b071, TypeS_2op>, Enc_90cd8b {
21853 let Inst{13-5} = 0b000000010;
21854 let Inst{31-21} = 0b10001000100;
21855 let hasNewValue = 1;
21856 let opNewValue = 0;
21857 }
21858 def S2_vtrunewh : HInst<
21859 (outs DoubleRegs:$Rdd32),
21860 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
21861 "$Rdd32 = vtrunewh($Rss32,$Rtt32)",
21862 tc_540fdfbc, TypeS_3op>, Enc_a56825 {
21863 let Inst{7-5} = 0b010;
21864 let Inst{13-13} = 0b0;
21865 let Inst{31-21} = 0b11000001100;
21866 }
21867 def S2_vtrunohb : HInst<
21868 (outs IntRegs:$Rd32),
21869 (ins DoubleRegs:$Rss32),
21870 "$Rd32 = vtrunohb($Rss32)",
21871 tc_cde8b071, TypeS_2op>, Enc_90cd8b {
21872 let Inst{13-5} = 0b000000000;
21873 let Inst{31-21} = 0b10001000100;
21874 let hasNewValue = 1;
21875 let opNewValue = 0;
21876 }
21877 def S2_vtrunowh : HInst<
21878 (outs DoubleRegs:$Rdd32),
21879 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
21880 "$Rdd32 = vtrunowh($Rss32,$Rtt32)",
21881 tc_540fdfbc, TypeS_3op>, Enc_a56825 {
21882 let Inst{7-5} = 0b100;
21883 let Inst{13-13} = 0b0;
21884 let Inst{31-21} = 0b11000001100;
21885 }
21886 def S2_vzxtbh : HInst<
21887 (outs DoubleRegs:$Rdd32),
21888 (ins IntRegs:$Rs32),
21889 "$Rdd32 = vzxtbh($Rs32)",
21890 tc_cde8b071, TypeS_2op>, Enc_3a3d62 {
21891 let Inst{13-5} = 0b000000010;
21892 let Inst{31-21} = 0b10000100000;
21893 let isReMaterializable = 1;
21894 let isAsCheapAsAMove = 1;
21895 }
21896 def S2_vzxthw : HInst<
21897 (outs DoubleRegs:$Rdd32),
21898 (ins IntRegs:$Rs32),
21899 "$Rdd32 = vzxthw($Rs32)",
21900 tc_cde8b071, TypeS_2op>, Enc_3a3d62 {
21901 let Inst{13-5} = 0b000000110;
21902 let Inst{31-21} = 0b10000100000;
21903 let isReMaterializable = 1;
21904 let isAsCheapAsAMove = 1;
21905 }
21906 def S4_addaddi : HInst<
21907 (outs IntRegs:$Rd32),
21908 (ins IntRegs:$Rs32, IntRegs:$Ru32, s32_0Imm:$Ii),
21909 "$Rd32 = add($Rs32,add($Ru32,#$Ii))",
21910 tc_c74f796f, TypeALU64>, Enc_8b8d61 {
21911 let Inst{31-23} = 0b110110110;
21912 let hasNewValue = 1;
21913 let opNewValue = 0;
21914 let prefersSlot3 = 1;
21915 let isExtendable = 1;
21916 let opExtendable = 3;
21917 let isExtentSigned = 1;
21918 let opExtentBits = 6;
21919 let opExtentAlign = 0;
21920 }
21921 def S4_addi_asl_ri : HInst<
21922 (outs IntRegs:$Rx32),
21923 (ins u32_0Imm:$Ii, IntRegs:$Rx32in, u5_0Imm:$II),
21924 "$Rx32 = add(#$Ii,asl($Rx32in,#$II))",
21925 tc_c74f796f, TypeALU64>, Enc_c31910 {
21926 let Inst{2-0} = 0b100;
21927 let Inst{4-4} = 0b0;
21928 let Inst{31-24} = 0b11011110;
21929 let hasNewValue = 1;
21930 let opNewValue = 0;
21931 let prefersSlot3 = 1;
21932 let isExtendable = 1;
21933 let opExtendable = 1;
21934 let isExtentSigned = 0;
21935 let opExtentBits = 8;
21936 let opExtentAlign = 0;
21937 let Constraints = "$Rx32 = $Rx32in";
21938 }
21939 def S4_addi_lsr_ri : HInst<
21940 (outs IntRegs:$Rx32),
21941 (ins u32_0Imm:$Ii, IntRegs:$Rx32in, u5_0Imm:$II),
21942 "$Rx32 = add(#$Ii,lsr($Rx32in,#$II))",
21943 tc_c74f796f, TypeALU64>, Enc_c31910 {
21944 let Inst{2-0} = 0b100;
21945 let Inst{4-4} = 0b1;
21946 let Inst{31-24} = 0b11011110;
21947 let hasNewValue = 1;
21948 let opNewValue = 0;
21949 let prefersSlot3 = 1;
21950 let isExtendable = 1;
21951 let opExtendable = 1;
21952 let isExtentSigned = 0;
21953 let opExtentBits = 8;
21954 let opExtentAlign = 0;
21955 let Constraints = "$Rx32 = $Rx32in";
21956 }
21957 def S4_andi_asl_ri : HInst<
21958 (outs IntRegs:$Rx32),
21959 (ins u32_0Imm:$Ii, IntRegs:$Rx32in, u5_0Imm:$II),
21960 "$Rx32 = and(#$Ii,asl($Rx32in,#$II))",
21961 tc_84df2cd3, TypeALU64>, Enc_c31910 {
21962 let Inst{2-0} = 0b000;
21963 let Inst{4-4} = 0b0;
21964 let Inst{31-24} = 0b11011110;
21965 let hasNewValue = 1;
21966 let opNewValue = 0;
21967 let prefersSlot3 = 1;
21968 let isExtendable = 1;
21969 let opExtendable = 1;
21970 let isExtentSigned = 0;
21971 let opExtentBits = 8;
21972 let opExtentAlign = 0;
21973 let Constraints = "$Rx32 = $Rx32in";
21974 }
21975 def S4_andi_lsr_ri : HInst<
21976 (outs IntRegs:$Rx32),
21977 (ins u32_0Imm:$Ii, IntRegs:$Rx32in, u5_0Imm:$II),
21978 "$Rx32 = and(#$Ii,lsr($Rx32in,#$II))",
21979 tc_84df2cd3, TypeALU64>, Enc_c31910 {
21980 let Inst{2-0} = 0b000;
21981 let Inst{4-4} = 0b1;
21982 let Inst{31-24} = 0b11011110;
21983 let hasNewValue = 1;
21984 let opNewValue = 0;
21985 let prefersSlot3 = 1;
21986 let isExtendable = 1;
21987 let opExtendable = 1;
21988 let isExtentSigned = 0;
21989 let opExtentBits = 8;
21990 let opExtentAlign = 0;
21991 let Constraints = "$Rx32 = $Rx32in";
21992 }
21993 def S4_clbaddi : HInst<
21994 (outs IntRegs:$Rd32),
21995 (ins IntRegs:$Rs32, s6_0Imm:$Ii),
21996 "$Rd32 = add(clb($Rs32),#$Ii)",
21997 tc_2b6f77c6, TypeS_2op>, Enc_9fae8a {
21998 let Inst{7-5} = 0b000;
21999 let Inst{31-21} = 0b10001100001;
22000 let hasNewValue = 1;
22001 let opNewValue = 0;
22002 let prefersSlot3 = 1;
22003 }
22004 def S4_clbpaddi : HInst<
22005 (outs IntRegs:$Rd32),
22006 (ins DoubleRegs:$Rss32, s6_0Imm:$Ii),
22007 "$Rd32 = add(clb($Rss32),#$Ii)",
22008 tc_2b6f77c6, TypeS_2op>, Enc_a1640c {
22009 let Inst{7-5} = 0b010;
22010 let Inst{31-21} = 0b10001000011;
22011 let hasNewValue = 1;
22012 let opNewValue = 0;
22013 let prefersSlot3 = 1;
22014 }
22015 def S4_clbpnorm : HInst<
22016 (outs IntRegs:$Rd32),
22017 (ins DoubleRegs:$Rss32),
22018 "$Rd32 = normamt($Rss32)",
22019 tc_d088982c, TypeS_2op>, Enc_90cd8b {
22020 let Inst{13-5} = 0b000000000;
22021 let Inst{31-21} = 0b10001000011;
22022 let hasNewValue = 1;
22023 let opNewValue = 0;
22024 let prefersSlot3 = 1;
22025 }
22026 def S4_extract : HInst<
22027 (outs IntRegs:$Rd32),
22028 (ins IntRegs:$Rs32, u5_0Imm:$Ii, u5_0Imm:$II),
22029 "$Rd32 = extract($Rs32,#$Ii,#$II)",
22030 tc_c74f796f, TypeS_2op>, Enc_b388cf {
22031 let Inst{13-13} = 0b0;
22032 let Inst{31-23} = 0b100011011;
22033 let hasNewValue = 1;
22034 let opNewValue = 0;
22035 let prefersSlot3 = 1;
22036 }
22037 def S4_extract_rp : HInst<
22038 (outs IntRegs:$Rd32),
22039 (ins IntRegs:$Rs32, DoubleRegs:$Rtt32),
22040 "$Rd32 = extract($Rs32,$Rtt32)",
22041 tc_2b6f77c6, TypeS_3op>, Enc_e07374 {
22042 let Inst{7-5} = 0b010;
22043 let Inst{13-13} = 0b0;
22044 let Inst{31-21} = 0b11001001000;
22045 let hasNewValue = 1;
22046 let opNewValue = 0;
22047 let prefersSlot3 = 1;
22048 }
22049 def S4_extractp : HInst<
22050 (outs DoubleRegs:$Rdd32),
22051 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii, u6_0Imm:$II),
22052 "$Rdd32 = extract($Rss32,#$Ii,#$II)",
22053 tc_c74f796f, TypeS_2op>, Enc_b84c4c {
22054 let Inst{31-24} = 0b10001010;
22055 let prefersSlot3 = 1;
22056 }
22057 def S4_extractp_rp : HInst<
22058 (outs DoubleRegs:$Rdd32),
22059 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
22060 "$Rdd32 = extract($Rss32,$Rtt32)",
22061 tc_2b6f77c6, TypeS_3op>, Enc_a56825 {
22062 let Inst{7-5} = 0b100;
22063 let Inst{13-13} = 0b0;
22064 let Inst{31-21} = 0b11000001110;
22065 let prefersSlot3 = 1;
22066 }
22067 def S4_lsli : HInst<
22068 (outs IntRegs:$Rd32),
22069 (ins s6_0Imm:$Ii, IntRegs:$Rt32),
22070 "$Rd32 = lsl(#$Ii,$Rt32)",
22071 tc_540fdfbc, TypeS_3op>, Enc_fef969 {
22072 let Inst{7-6} = 0b11;
22073 let Inst{13-13} = 0b0;
22074 let Inst{31-21} = 0b11000110100;
22075 let hasNewValue = 1;
22076 let opNewValue = 0;
22077 }
22078 def S4_ntstbit_i : HInst<
22079 (outs PredRegs:$Pd4),
22080 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
22081 "$Pd4 = !tstbit($Rs32,#$Ii)",
22082 tc_7a830544, TypeS_2op>, Enc_83ee64 {
22083 let Inst{7-2} = 0b000000;
22084 let Inst{13-13} = 0b0;
22085 let Inst{31-21} = 0b10000101001;
22086 }
22087 def S4_ntstbit_r : HInst<
22088 (outs PredRegs:$Pd4),
22089 (ins IntRegs:$Rs32, IntRegs:$Rt32),
22090 "$Pd4 = !tstbit($Rs32,$Rt32)",
22091 tc_1e856f58, TypeS_3op>, Enc_c2b48e {
22092 let Inst{7-2} = 0b000000;
22093 let Inst{13-13} = 0b0;
22094 let Inst{31-21} = 0b11000111001;
22095 }
22096 def S4_or_andi : HInst<
22097 (outs IntRegs:$Rx32),
22098 (ins IntRegs:$Rx32in, IntRegs:$Rs32, s32_0Imm:$Ii),
22099 "$Rx32 |= and($Rs32,#$Ii)",
22100 tc_84df2cd3, TypeALU64>, Enc_b0e9d8 {
22101 let Inst{31-22} = 0b1101101000;
22102 let hasNewValue = 1;
22103 let opNewValue = 0;
22104 let prefersSlot3 = 1;
22105 let InputType = "imm";
22106 let isExtendable = 1;
22107 let opExtendable = 3;
22108 let isExtentSigned = 1;
22109 let opExtentBits = 10;
22110 let opExtentAlign = 0;
22111 let Constraints = "$Rx32 = $Rx32in";
22112 }
22113 def S4_or_andix : HInst<
22114 (outs IntRegs:$Rx32),
22115 (ins IntRegs:$Ru32, IntRegs:$Rx32in, s32_0Imm:$Ii),
22116 "$Rx32 = or($Ru32,and($Rx32in,#$Ii))",
22117 tc_84df2cd3, TypeALU64>, Enc_b4e6cf {
22118 let Inst{31-22} = 0b1101101001;
22119 let hasNewValue = 1;
22120 let opNewValue = 0;
22121 let prefersSlot3 = 1;
22122 let isExtendable = 1;
22123 let opExtendable = 3;
22124 let isExtentSigned = 1;
22125 let opExtentBits = 10;
22126 let opExtentAlign = 0;
22127 let Constraints = "$Rx32 = $Rx32in";
22128 }
22129 def S4_or_ori : HInst<
22130 (outs IntRegs:$Rx32),
22131 (ins IntRegs:$Rx32in, IntRegs:$Rs32, s32_0Imm:$Ii),
22132 "$Rx32 |= or($Rs32,#$Ii)",
22133 tc_84df2cd3, TypeALU64>, Enc_b0e9d8 {
22134 let Inst{31-22} = 0b1101101010;
22135 let hasNewValue = 1;
22136 let opNewValue = 0;
22137 let prefersSlot3 = 1;
22138 let InputType = "imm";
22139 let isExtendable = 1;
22140 let opExtendable = 3;
22141 let isExtentSigned = 1;
22142 let opExtentBits = 10;
22143 let opExtentAlign = 0;
22144 let Constraints = "$Rx32 = $Rx32in";
22145 }
22146 def S4_ori_asl_ri : HInst<
22147 (outs IntRegs:$Rx32),
22148 (ins u32_0Imm:$Ii, IntRegs:$Rx32in, u5_0Imm:$II),
22149 "$Rx32 = or(#$Ii,asl($Rx32in,#$II))",
22150 tc_84df2cd3, TypeALU64>, Enc_c31910 {
22151 let Inst{2-0} = 0b010;
22152 let Inst{4-4} = 0b0;
22153 let Inst{31-24} = 0b11011110;
22154 let hasNewValue = 1;
22155 let opNewValue = 0;
22156 let prefersSlot3 = 1;
22157 let isExtendable = 1;
22158 let opExtendable = 1;
22159 let isExtentSigned = 0;
22160 let opExtentBits = 8;
22161 let opExtentAlign = 0;
22162 let Constraints = "$Rx32 = $Rx32in";
22163 }
22164 def S4_ori_lsr_ri : HInst<
22165 (outs IntRegs:$Rx32),
22166 (ins u32_0Imm:$Ii, IntRegs:$Rx32in, u5_0Imm:$II),
22167 "$Rx32 = or(#$Ii,lsr($Rx32in,#$II))",
22168 tc_84df2cd3, TypeALU64>, Enc_c31910 {
22169 let Inst{2-0} = 0b010;
22170 let Inst{4-4} = 0b1;
22171 let Inst{31-24} = 0b11011110;
22172 let hasNewValue = 1;
22173 let opNewValue = 0;
22174 let prefersSlot3 = 1;
22175 let isExtendable = 1;
22176 let opExtendable = 1;
22177 let isExtentSigned = 0;
22178 let opExtentBits = 8;
22179 let opExtentAlign = 0;
22180 let Constraints = "$Rx32 = $Rx32in";
22181 }
22182 def S4_parity : HInst<
22183 (outs IntRegs:$Rd32),
22184 (ins IntRegs:$Rs32, IntRegs:$Rt32),
22185 "$Rd32 = parity($Rs32,$Rt32)",
22186 tc_2b6f77c6, TypeALU64>, Enc_5ab2be {
22187 let Inst{7-5} = 0b000;
22188 let Inst{13-13} = 0b0;
22189 let Inst{31-21} = 0b11010101111;
22190 let hasNewValue = 1;
22191 let opNewValue = 0;
22192 let prefersSlot3 = 1;
22193 }
22194 def S4_pstorerbf_abs : HInst<
22195 (outs),
22196 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
22197 "if (!$Pv4) memb(#$Ii) = $Rt32",
22198 tc_238d91d2, TypeST>, Enc_1cf4ca, AddrModeRel {
22199 let Inst{2-2} = 0b1;
22200 let Inst{7-7} = 0b1;
22201 let Inst{13-13} = 0b0;
22202 let Inst{31-18} = 0b10101111000000;
22203 let isPredicated = 1;
22204 let isPredicatedFalse = 1;
22205 let addrMode = Absolute;
22206 let accessSize = ByteAccess;
22207 let isExtended = 1;
22208 let mayStore = 1;
22209 let CextOpcode = "S2_storerb";
22210 let BaseOpcode = "S2_storerbabs";
22211 let isNVStorable = 1;
22212 let DecoderNamespace = "MustExtend";
22213 let isExtendable = 1;
22214 let opExtendable = 1;
22215 let isExtentSigned = 0;
22216 let opExtentBits = 6;
22217 let opExtentAlign = 0;
22218 }
22219 def S4_pstorerbf_rr : HInst<
22220 (outs),
22221 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
22222 "if (!$Pv4) memb($Rs32+$Ru32<<#$Ii) = $Rt32",
22223 tc_5274e61a, TypeST>, Enc_6339d5, AddrModeRel {
22224 let Inst{31-21} = 0b00110101000;
22225 let isPredicated = 1;
22226 let isPredicatedFalse = 1;
22227 let addrMode = BaseRegOffset;
22228 let accessSize = ByteAccess;
22229 let mayStore = 1;
22230 let CextOpcode = "S2_storerb";
22231 let InputType = "reg";
22232 let BaseOpcode = "S4_storerb_rr";
22233 let isNVStorable = 1;
22234 }
22235 def S4_pstorerbfnew_abs : HInst<
22236 (outs),
22237 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
22238 "if (!$Pv4.new) memb(#$Ii) = $Rt32",
22239 tc_66888ded, TypeST>, Enc_1cf4ca, AddrModeRel {
22240 let Inst{2-2} = 0b1;
22241 let Inst{7-7} = 0b1;
22242 let Inst{13-13} = 0b1;
22243 let Inst{31-18} = 0b10101111000000;
22244 let isPredicated = 1;
22245 let isPredicatedFalse = 1;
22246 let addrMode = Absolute;
22247 let accessSize = ByteAccess;
22248 let isPredicatedNew = 1;
22249 let isExtended = 1;
22250 let mayStore = 1;
22251 let CextOpcode = "S2_storerb";
22252 let BaseOpcode = "S2_storerbabs";
22253 let isNVStorable = 1;
22254 let DecoderNamespace = "MustExtend";
22255 let isExtendable = 1;
22256 let opExtendable = 1;
22257 let isExtentSigned = 0;
22258 let opExtentBits = 6;
22259 let opExtentAlign = 0;
22260 }
22261 def S4_pstorerbfnew_io : HInst<
22262 (outs),
22263 (ins PredRegs:$Pv4, IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
22264 "if (!$Pv4.new) memb($Rs32+#$Ii) = $Rt32",
22265 tc_f86c328a, TypeV2LDST>, Enc_da8d43, AddrModeRel {
22266 let Inst{2-2} = 0b0;
22267 let Inst{31-21} = 0b01000110000;
22268 let isPredicated = 1;
22269 let isPredicatedFalse = 1;
22270 let addrMode = BaseImmOffset;
22271 let accessSize = ByteAccess;
22272 let isPredicatedNew = 1;
22273 let mayStore = 1;
22274 let CextOpcode = "S2_storerb";
22275 let InputType = "imm";
22276 let BaseOpcode = "S2_storerb_io";
22277 let isNVStorable = 1;
22278 let isExtendable = 1;
22279 let opExtendable = 2;
22280 let isExtentSigned = 0;
22281 let opExtentBits = 6;
22282 let opExtentAlign = 0;
22283 }
22284 def S4_pstorerbfnew_rr : HInst<
22285 (outs),
22286 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
22287 "if (!$Pv4.new) memb($Rs32+$Ru32<<#$Ii) = $Rt32",
22288 tc_3e07fb90, TypeST>, Enc_6339d5, AddrModeRel {
22289 let Inst{31-21} = 0b00110111000;
22290 let isPredicated = 1;
22291 let isPredicatedFalse = 1;
22292 let addrMode = BaseRegOffset;
22293 let accessSize = ByteAccess;
22294 let isPredicatedNew = 1;
22295 let mayStore = 1;
22296 let CextOpcode = "S2_storerb";
22297 let InputType = "reg";
22298 let BaseOpcode = "S4_storerb_rr";
22299 let isNVStorable = 1;
22300 }
22301 def S4_pstorerbfnew_zomap : HInst<
22302 (outs),
22303 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
22304 "if (!$Pv4.new) memb($Rs32) = $Rt32",
22305 tc_f86c328a, TypeMAPPING> {
22306 let isPseudo = 1;
22307 let isCodeGenOnly = 1;
22308 }
22309 def S4_pstorerbnewf_abs : HInst<
22310 (outs),
22311 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
22312 "if (!$Pv4) memb(#$Ii) = $Nt8.new",
22313 tc_6ac37025, TypeST>, Enc_44215c, AddrModeRel {
22314 let Inst{2-2} = 0b1;
22315 let Inst{7-7} = 0b1;
22316 let Inst{13-11} = 0b000;
22317 let Inst{31-18} = 0b10101111101000;
22318 let isPredicated = 1;
22319 let isPredicatedFalse = 1;
22320 let addrMode = Absolute;
22321 let accessSize = ByteAccess;
22322 let isNVStore = 1;
22323 let isNewValue = 1;
22324 let isExtended = 1;
22325 let isRestrictNoSlot1Store = 1;
22326 let mayStore = 1;
22327 let CextOpcode = "S2_storerb";
22328 let BaseOpcode = "S2_storerbabs";
22329 let DecoderNamespace = "MustExtend";
22330 let isExtendable = 1;
22331 let opExtendable = 1;
22332 let isExtentSigned = 0;
22333 let opExtentBits = 6;
22334 let opExtentAlign = 0;
22335 let opNewValue = 2;
22336 }
22337 def S4_pstorerbnewf_rr : HInst<
22338 (outs),
22339 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
22340 "if (!$Pv4) memb($Rs32+$Ru32<<#$Ii) = $Nt8.new",
22341 tc_adb14c66, TypeST>, Enc_47ee5e, AddrModeRel {
22342 let Inst{4-3} = 0b00;
22343 let Inst{31-21} = 0b00110101101;
22344 let isPredicated = 1;
22345 let isPredicatedFalse = 1;
22346 let addrMode = BaseRegOffset;
22347 let accessSize = ByteAccess;
22348 let isNVStore = 1;
22349 let isNewValue = 1;
22350 let isRestrictNoSlot1Store = 1;
22351 let mayStore = 1;
22352 let CextOpcode = "S2_storerb";
22353 let InputType = "reg";
22354 let BaseOpcode = "S4_storerb_rr";
22355 let opNewValue = 4;
22356 }
22357 def S4_pstorerbnewfnew_abs : HInst<
22358 (outs),
22359 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
22360 "if (!$Pv4.new) memb(#$Ii) = $Nt8.new",
22361 tc_53bdb2f6, TypeST>, Enc_44215c, AddrModeRel {
22362 let Inst{2-2} = 0b1;
22363 let Inst{7-7} = 0b1;
22364 let Inst{13-11} = 0b100;
22365 let Inst{31-18} = 0b10101111101000;
22366 let isPredicated = 1;
22367 let isPredicatedFalse = 1;
22368 let addrMode = Absolute;
22369 let accessSize = ByteAccess;
22370 let isNVStore = 1;
22371 let isPredicatedNew = 1;
22372 let isNewValue = 1;
22373 let isExtended = 1;
22374 let isRestrictNoSlot1Store = 1;
22375 let mayStore = 1;
22376 let CextOpcode = "S2_storerb";
22377 let BaseOpcode = "S2_storerbabs";
22378 let DecoderNamespace = "MustExtend";
22379 let isExtendable = 1;
22380 let opExtendable = 1;
22381 let isExtentSigned = 0;
22382 let opExtentBits = 6;
22383 let opExtentAlign = 0;
22384 let opNewValue = 2;
22385 }
22386 def S4_pstorerbnewfnew_io : HInst<
22387 (outs),
22388 (ins PredRegs:$Pv4, IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Nt8),
22389 "if (!$Pv4.new) memb($Rs32+#$Ii) = $Nt8.new",
22390 tc_e7d02c66, TypeV2LDST>, Enc_585242, AddrModeRel {
22391 let Inst{2-2} = 0b0;
22392 let Inst{12-11} = 0b00;
22393 let Inst{31-21} = 0b01000110101;
22394 let isPredicated = 1;
22395 let isPredicatedFalse = 1;
22396 let addrMode = BaseImmOffset;
22397 let accessSize = ByteAccess;
22398 let isNVStore = 1;
22399 let isPredicatedNew = 1;
22400 let isNewValue = 1;
22401 let isRestrictNoSlot1Store = 1;
22402 let mayStore = 1;
22403 let CextOpcode = "S2_storerb";
22404 let InputType = "imm";
22405 let BaseOpcode = "S2_storerb_io";
22406 let isExtendable = 1;
22407 let opExtendable = 2;
22408 let isExtentSigned = 0;
22409 let opExtentBits = 6;
22410 let opExtentAlign = 0;
22411 let opNewValue = 3;
22412 }
22413 def S4_pstorerbnewfnew_rr : HInst<
22414 (outs),
22415 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
22416 "if (!$Pv4.new) memb($Rs32+$Ru32<<#$Ii) = $Nt8.new",
22417 tc_e421e012, TypeST>, Enc_47ee5e, AddrModeRel {
22418 let Inst{4-3} = 0b00;
22419 let Inst{31-21} = 0b00110111101;
22420 let isPredicated = 1;
22421 let isPredicatedFalse = 1;
22422 let addrMode = BaseRegOffset;
22423 let accessSize = ByteAccess;
22424 let isNVStore = 1;
22425 let isPredicatedNew = 1;
22426 let isNewValue = 1;
22427 let isRestrictNoSlot1Store = 1;
22428 let mayStore = 1;
22429 let CextOpcode = "S2_storerb";
22430 let InputType = "reg";
22431 let BaseOpcode = "S4_storerb_rr";
22432 let opNewValue = 4;
22433 }
22434 def S4_pstorerbnewfnew_zomap : HInst<
22435 (outs),
22436 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
22437 "if (!$Pv4.new) memb($Rs32) = $Nt8.new",
22438 tc_e7d02c66, TypeMAPPING> {
22439 let isPseudo = 1;
22440 let isCodeGenOnly = 1;
22441 let opNewValue = 2;
22442 }
22443 def S4_pstorerbnewt_abs : HInst<
22444 (outs),
22445 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
22446 "if ($Pv4) memb(#$Ii) = $Nt8.new",
22447 tc_6ac37025, TypeST>, Enc_44215c, AddrModeRel {
22448 let Inst{2-2} = 0b0;
22449 let Inst{7-7} = 0b1;
22450 let Inst{13-11} = 0b000;
22451 let Inst{31-18} = 0b10101111101000;
22452 let isPredicated = 1;
22453 let addrMode = Absolute;
22454 let accessSize = ByteAccess;
22455 let isNVStore = 1;
22456 let isNewValue = 1;
22457 let isExtended = 1;
22458 let isRestrictNoSlot1Store = 1;
22459 let mayStore = 1;
22460 let CextOpcode = "S2_storerb";
22461 let BaseOpcode = "S2_storerbabs";
22462 let DecoderNamespace = "MustExtend";
22463 let isExtendable = 1;
22464 let opExtendable = 1;
22465 let isExtentSigned = 0;
22466 let opExtentBits = 6;
22467 let opExtentAlign = 0;
22468 let opNewValue = 2;
22469 }
22470 def S4_pstorerbnewt_rr : HInst<
22471 (outs),
22472 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
22473 "if ($Pv4) memb($Rs32+$Ru32<<#$Ii) = $Nt8.new",
22474 tc_adb14c66, TypeST>, Enc_47ee5e, AddrModeRel {
22475 let Inst{4-3} = 0b00;
22476 let Inst{31-21} = 0b00110100101;
22477 let isPredicated = 1;
22478 let addrMode = BaseRegOffset;
22479 let accessSize = ByteAccess;
22480 let isNVStore = 1;
22481 let isNewValue = 1;
22482 let isRestrictNoSlot1Store = 1;
22483 let mayStore = 1;
22484 let CextOpcode = "S2_storerb";
22485 let InputType = "reg";
22486 let BaseOpcode = "S4_storerb_rr";
22487 let opNewValue = 4;
22488 }
22489 def S4_pstorerbnewtnew_abs : HInst<
22490 (outs),
22491 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
22492 "if ($Pv4.new) memb(#$Ii) = $Nt8.new",
22493 tc_53bdb2f6, TypeST>, Enc_44215c, AddrModeRel {
22494 let Inst{2-2} = 0b0;
22495 let Inst{7-7} = 0b1;
22496 let Inst{13-11} = 0b100;
22497 let Inst{31-18} = 0b10101111101000;
22498 let isPredicated = 1;
22499 let addrMode = Absolute;
22500 let accessSize = ByteAccess;
22501 let isNVStore = 1;
22502 let isPredicatedNew = 1;
22503 let isNewValue = 1;
22504 let isExtended = 1;
22505 let isRestrictNoSlot1Store = 1;
22506 let mayStore = 1;
22507 let CextOpcode = "S2_storerb";
22508 let BaseOpcode = "S2_storerbabs";
22509 let DecoderNamespace = "MustExtend";
22510 let isExtendable = 1;
22511 let opExtendable = 1;
22512 let isExtentSigned = 0;
22513 let opExtentBits = 6;
22514 let opExtentAlign = 0;
22515 let opNewValue = 2;
22516 }
22517 def S4_pstorerbnewtnew_io : HInst<
22518 (outs),
22519 (ins PredRegs:$Pv4, IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Nt8),
22520 "if ($Pv4.new) memb($Rs32+#$Ii) = $Nt8.new",
22521 tc_e7d02c66, TypeV2LDST>, Enc_585242, AddrModeRel {
22522 let Inst{2-2} = 0b0;
22523 let Inst{12-11} = 0b00;
22524 let Inst{31-21} = 0b01000010101;
22525 let isPredicated = 1;
22526 let addrMode = BaseImmOffset;
22527 let accessSize = ByteAccess;
22528 let isNVStore = 1;
22529 let isPredicatedNew = 1;
22530 let isNewValue = 1;
22531 let isRestrictNoSlot1Store = 1;
22532 let mayStore = 1;
22533 let CextOpcode = "S2_storerb";
22534 let InputType = "imm";
22535 let BaseOpcode = "S2_storerb_io";
22536 let isExtendable = 1;
22537 let opExtendable = 2;
22538 let isExtentSigned = 0;
22539 let opExtentBits = 6;
22540 let opExtentAlign = 0;
22541 let opNewValue = 3;
22542 }
22543 def S4_pstorerbnewtnew_rr : HInst<
22544 (outs),
22545 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
22546 "if ($Pv4.new) memb($Rs32+$Ru32<<#$Ii) = $Nt8.new",
22547 tc_e421e012, TypeST>, Enc_47ee5e, AddrModeRel {
22548 let Inst{4-3} = 0b00;
22549 let Inst{31-21} = 0b00110110101;
22550 let isPredicated = 1;
22551 let addrMode = BaseRegOffset;
22552 let accessSize = ByteAccess;
22553 let isNVStore = 1;
22554 let isPredicatedNew = 1;
22555 let isNewValue = 1;
22556 let isRestrictNoSlot1Store = 1;
22557 let mayStore = 1;
22558 let CextOpcode = "S2_storerb";
22559 let InputType = "reg";
22560 let BaseOpcode = "S4_storerb_rr";
22561 let opNewValue = 4;
22562 }
22563 def S4_pstorerbnewtnew_zomap : HInst<
22564 (outs),
22565 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
22566 "if ($Pv4.new) memb($Rs32) = $Nt8.new",
22567 tc_e7d02c66, TypeMAPPING> {
22568 let isPseudo = 1;
22569 let isCodeGenOnly = 1;
22570 let opNewValue = 2;
22571 }
22572 def S4_pstorerbt_abs : HInst<
22573 (outs),
22574 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
22575 "if ($Pv4) memb(#$Ii) = $Rt32",
22576 tc_238d91d2, TypeST>, Enc_1cf4ca, AddrModeRel {
22577 let Inst{2-2} = 0b0;
22578 let Inst{7-7} = 0b1;
22579 let Inst{13-13} = 0b0;
22580 let Inst{31-18} = 0b10101111000000;
22581 let isPredicated = 1;
22582 let addrMode = Absolute;
22583 let accessSize = ByteAccess;
22584 let isExtended = 1;
22585 let mayStore = 1;
22586 let CextOpcode = "S2_storerb";
22587 let BaseOpcode = "S2_storerbabs";
22588 let isNVStorable = 1;
22589 let DecoderNamespace = "MustExtend";
22590 let isExtendable = 1;
22591 let opExtendable = 1;
22592 let isExtentSigned = 0;
22593 let opExtentBits = 6;
22594 let opExtentAlign = 0;
22595 }
22596 def S4_pstorerbt_rr : HInst<
22597 (outs),
22598 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
22599 "if ($Pv4) memb($Rs32+$Ru32<<#$Ii) = $Rt32",
22600 tc_5274e61a, TypeST>, Enc_6339d5, AddrModeRel {
22601 let Inst{31-21} = 0b00110100000;
22602 let isPredicated = 1;
22603 let addrMode = BaseRegOffset;
22604 let accessSize = ByteAccess;
22605 let mayStore = 1;
22606 let CextOpcode = "S2_storerb";
22607 let InputType = "reg";
22608 let BaseOpcode = "S4_storerb_rr";
22609 let isNVStorable = 1;
22610 }
22611 def S4_pstorerbtnew_abs : HInst<
22612 (outs),
22613 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
22614 "if ($Pv4.new) memb(#$Ii) = $Rt32",
22615 tc_66888ded, TypeST>, Enc_1cf4ca, AddrModeRel {
22616 let Inst{2-2} = 0b0;
22617 let Inst{7-7} = 0b1;
22618 let Inst{13-13} = 0b1;
22619 let Inst{31-18} = 0b10101111000000;
22620 let isPredicated = 1;
22621 let addrMode = Absolute;
22622 let accessSize = ByteAccess;
22623 let isPredicatedNew = 1;
22624 let isExtended = 1;
22625 let mayStore = 1;
22626 let CextOpcode = "S2_storerb";
22627 let BaseOpcode = "S2_storerbabs";
22628 let isNVStorable = 1;
22629 let DecoderNamespace = "MustExtend";
22630 let isExtendable = 1;
22631 let opExtendable = 1;
22632 let isExtentSigned = 0;
22633 let opExtentBits = 6;
22634 let opExtentAlign = 0;
22635 }
22636 def S4_pstorerbtnew_io : HInst<
22637 (outs),
22638 (ins PredRegs:$Pv4, IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
22639 "if ($Pv4.new) memb($Rs32+#$Ii) = $Rt32",
22640 tc_f86c328a, TypeV2LDST>, Enc_da8d43, AddrModeRel {
22641 let Inst{2-2} = 0b0;
22642 let Inst{31-21} = 0b01000010000;
22643 let isPredicated = 1;
22644 let addrMode = BaseImmOffset;
22645 let accessSize = ByteAccess;
22646 let isPredicatedNew = 1;
22647 let mayStore = 1;
22648 let CextOpcode = "S2_storerb";
22649 let InputType = "imm";
22650 let BaseOpcode = "S2_storerb_io";
22651 let isNVStorable = 1;
22652 let isExtendable = 1;
22653 let opExtendable = 2;
22654 let isExtentSigned = 0;
22655 let opExtentBits = 6;
22656 let opExtentAlign = 0;
22657 }
22658 def S4_pstorerbtnew_rr : HInst<
22659 (outs),
22660 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
22661 "if ($Pv4.new) memb($Rs32+$Ru32<<#$Ii) = $Rt32",
22662 tc_3e07fb90, TypeST>, Enc_6339d5, AddrModeRel {
22663 let Inst{31-21} = 0b00110110000;
22664 let isPredicated = 1;
22665 let addrMode = BaseRegOffset;
22666 let accessSize = ByteAccess;
22667 let isPredicatedNew = 1;
22668 let mayStore = 1;
22669 let CextOpcode = "S2_storerb";
22670 let InputType = "reg";
22671 let BaseOpcode = "S4_storerb_rr";
22672 let isNVStorable = 1;
22673 }
22674 def S4_pstorerbtnew_zomap : HInst<
22675 (outs),
22676 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
22677 "if ($Pv4.new) memb($Rs32) = $Rt32",
22678 tc_f86c328a, TypeMAPPING> {
22679 let isPseudo = 1;
22680 let isCodeGenOnly = 1;
22681 }
22682 def S4_pstorerdf_abs : HInst<
22683 (outs),
22684 (ins PredRegs:$Pv4, u32_0Imm:$Ii, DoubleRegs:$Rtt32),
22685 "if (!$Pv4) memd(#$Ii) = $Rtt32",
22686 tc_238d91d2, TypeST>, Enc_50b5ac, AddrModeRel {
22687 let Inst{2-2} = 0b1;
22688 let Inst{7-7} = 0b1;
22689 let Inst{13-13} = 0b0;
22690 let Inst{31-18} = 0b10101111110000;
22691 let isPredicated = 1;
22692 let isPredicatedFalse = 1;
22693 let addrMode = Absolute;
22694 let accessSize = DoubleWordAccess;
22695 let isExtended = 1;
22696 let mayStore = 1;
22697 let CextOpcode = "S2_storerd";
22698 let BaseOpcode = "S2_storerdabs";
22699 let DecoderNamespace = "MustExtend";
22700 let isExtendable = 1;
22701 let opExtendable = 1;
22702 let isExtentSigned = 0;
22703 let opExtentBits = 6;
22704 let opExtentAlign = 0;
22705 }
22706 def S4_pstorerdf_rr : HInst<
22707 (outs),
22708 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, DoubleRegs:$Rtt32),
22709 "if (!$Pv4) memd($Rs32+$Ru32<<#$Ii) = $Rtt32",
22710 tc_5274e61a, TypeST>, Enc_1a9974, AddrModeRel {
22711 let Inst{31-21} = 0b00110101110;
22712 let isPredicated = 1;
22713 let isPredicatedFalse = 1;
22714 let addrMode = BaseRegOffset;
22715 let accessSize = DoubleWordAccess;
22716 let mayStore = 1;
22717 let CextOpcode = "S2_storerd";
22718 let InputType = "reg";
22719 let BaseOpcode = "S2_storerd_rr";
22720 }
22721 def S4_pstorerdfnew_abs : HInst<
22722 (outs),
22723 (ins PredRegs:$Pv4, u32_0Imm:$Ii, DoubleRegs:$Rtt32),
22724 "if (!$Pv4.new) memd(#$Ii) = $Rtt32",
22725 tc_66888ded, TypeST>, Enc_50b5ac, AddrModeRel {
22726 let Inst{2-2} = 0b1;
22727 let Inst{7-7} = 0b1;
22728 let Inst{13-13} = 0b1;
22729 let Inst{31-18} = 0b10101111110000;
22730 let isPredicated = 1;
22731 let isPredicatedFalse = 1;
22732 let addrMode = Absolute;
22733 let accessSize = DoubleWordAccess;
22734 let isPredicatedNew = 1;
22735 let isExtended = 1;
22736 let mayStore = 1;
22737 let CextOpcode = "S2_storerd";
22738 let BaseOpcode = "S2_storerdabs";
22739 let DecoderNamespace = "MustExtend";
22740 let isExtendable = 1;
22741 let opExtendable = 1;
22742 let isExtentSigned = 0;
22743 let opExtentBits = 6;
22744 let opExtentAlign = 0;
22745 }
22746 def S4_pstorerdfnew_io : HInst<
22747 (outs),
22748 (ins PredRegs:$Pv4, IntRegs:$Rs32, u29_3Imm:$Ii, DoubleRegs:$Rtt32),
22749 "if (!$Pv4.new) memd($Rs32+#$Ii) = $Rtt32",
22750 tc_f86c328a, TypeV2LDST>, Enc_57a33e, AddrModeRel {
22751 let Inst{2-2} = 0b0;
22752 let Inst{31-21} = 0b01000110110;
22753 let isPredicated = 1;
22754 let isPredicatedFalse = 1;
22755 let addrMode = BaseImmOffset;
22756 let accessSize = DoubleWordAccess;
22757 let isPredicatedNew = 1;
22758 let mayStore = 1;
22759 let CextOpcode = "S2_storerd";
22760 let InputType = "imm";
22761 let BaseOpcode = "S2_storerd_io";
22762 let isExtendable = 1;
22763 let opExtendable = 2;
22764 let isExtentSigned = 0;
22765 let opExtentBits = 9;
22766 let opExtentAlign = 3;
22767 }
22768 def S4_pstorerdfnew_rr : HInst<
22769 (outs),
22770 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, DoubleRegs:$Rtt32),
22771 "if (!$Pv4.new) memd($Rs32+$Ru32<<#$Ii) = $Rtt32",
22772 tc_3e07fb90, TypeST>, Enc_1a9974, AddrModeRel {
22773 let Inst{31-21} = 0b00110111110;
22774 let isPredicated = 1;
22775 let isPredicatedFalse = 1;
22776 let addrMode = BaseRegOffset;
22777 let accessSize = DoubleWordAccess;
22778 let isPredicatedNew = 1;
22779 let mayStore = 1;
22780 let CextOpcode = "S2_storerd";
22781 let InputType = "reg";
22782 let BaseOpcode = "S2_storerd_rr";
22783 }
22784 def S4_pstorerdfnew_zomap : HInst<
22785 (outs),
22786 (ins PredRegs:$Pv4, IntRegs:$Rs32, DoubleRegs:$Rtt32),
22787 "if (!$Pv4.new) memd($Rs32) = $Rtt32",
22788 tc_f86c328a, TypeMAPPING> {
22789 let isPseudo = 1;
22790 let isCodeGenOnly = 1;
22791 }
22792 def S4_pstorerdt_abs : HInst<
22793 (outs),
22794 (ins PredRegs:$Pv4, u32_0Imm:$Ii, DoubleRegs:$Rtt32),
22795 "if ($Pv4) memd(#$Ii) = $Rtt32",
22796 tc_238d91d2, TypeST>, Enc_50b5ac, AddrModeRel {
22797 let Inst{2-2} = 0b0;
22798 let Inst{7-7} = 0b1;
22799 let Inst{13-13} = 0b0;
22800 let Inst{31-18} = 0b10101111110000;
22801 let isPredicated = 1;
22802 let addrMode = Absolute;
22803 let accessSize = DoubleWordAccess;
22804 let isExtended = 1;
22805 let mayStore = 1;
22806 let CextOpcode = "S2_storerd";
22807 let BaseOpcode = "S2_storerdabs";
22808 let DecoderNamespace = "MustExtend";
22809 let isExtendable = 1;
22810 let opExtendable = 1;
22811 let isExtentSigned = 0;
22812 let opExtentBits = 6;
22813 let opExtentAlign = 0;
22814 }
22815 def S4_pstorerdt_rr : HInst<
22816 (outs),
22817 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, DoubleRegs:$Rtt32),
22818 "if ($Pv4) memd($Rs32+$Ru32<<#$Ii) = $Rtt32",
22819 tc_5274e61a, TypeST>, Enc_1a9974, AddrModeRel {
22820 let Inst{31-21} = 0b00110100110;
22821 let isPredicated = 1;
22822 let addrMode = BaseRegOffset;
22823 let accessSize = DoubleWordAccess;
22824 let mayStore = 1;
22825 let CextOpcode = "S2_storerd";
22826 let InputType = "reg";
22827 let BaseOpcode = "S2_storerd_rr";
22828 }
22829 def S4_pstorerdtnew_abs : HInst<
22830 (outs),
22831 (ins PredRegs:$Pv4, u32_0Imm:$Ii, DoubleRegs:$Rtt32),
22832 "if ($Pv4.new) memd(#$Ii) = $Rtt32",
22833 tc_66888ded, TypeST>, Enc_50b5ac, AddrModeRel {
22834 let Inst{2-2} = 0b0;
22835 let Inst{7-7} = 0b1;
22836 let Inst{13-13} = 0b1;
22837 let Inst{31-18} = 0b10101111110000;
22838 let isPredicated = 1;
22839 let addrMode = Absolute;
22840 let accessSize = DoubleWordAccess;
22841 let isPredicatedNew = 1;
22842 let isExtended = 1;
22843 let mayStore = 1;
22844 let CextOpcode = "S2_storerd";
22845 let BaseOpcode = "S2_storerdabs";
22846 let DecoderNamespace = "MustExtend";
22847 let isExtendable = 1;
22848 let opExtendable = 1;
22849 let isExtentSigned = 0;
22850 let opExtentBits = 6;
22851 let opExtentAlign = 0;
22852 }
22853 def S4_pstorerdtnew_io : HInst<
22854 (outs),
22855 (ins PredRegs:$Pv4, IntRegs:$Rs32, u29_3Imm:$Ii, DoubleRegs:$Rtt32),
22856 "if ($Pv4.new) memd($Rs32+#$Ii) = $Rtt32",
22857 tc_f86c328a, TypeV2LDST>, Enc_57a33e, AddrModeRel {
22858 let Inst{2-2} = 0b0;
22859 let Inst{31-21} = 0b01000010110;
22860 let isPredicated = 1;
22861 let addrMode = BaseImmOffset;
22862 let accessSize = DoubleWordAccess;
22863 let isPredicatedNew = 1;
22864 let mayStore = 1;
22865 let CextOpcode = "S2_storerd";
22866 let InputType = "imm";
22867 let BaseOpcode = "S2_storerd_io";
22868 let isExtendable = 1;
22869 let opExtendable = 2;
22870 let isExtentSigned = 0;
22871 let opExtentBits = 9;
22872 let opExtentAlign = 3;
22873 }
22874 def S4_pstorerdtnew_rr : HInst<
22875 (outs),
22876 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, DoubleRegs:$Rtt32),
22877 "if ($Pv4.new) memd($Rs32+$Ru32<<#$Ii) = $Rtt32",
22878 tc_3e07fb90, TypeST>, Enc_1a9974, AddrModeRel {
22879 let Inst{31-21} = 0b00110110110;
22880 let isPredicated = 1;
22881 let addrMode = BaseRegOffset;
22882 let accessSize = DoubleWordAccess;
22883 let isPredicatedNew = 1;
22884 let mayStore = 1;
22885 let CextOpcode = "S2_storerd";
22886 let InputType = "reg";
22887 let BaseOpcode = "S2_storerd_rr";
22888 }
22889 def S4_pstorerdtnew_zomap : HInst<
22890 (outs),
22891 (ins PredRegs:$Pv4, IntRegs:$Rs32, DoubleRegs:$Rtt32),
22892 "if ($Pv4.new) memd($Rs32) = $Rtt32",
22893 tc_f86c328a, TypeMAPPING> {
22894 let isPseudo = 1;
22895 let isCodeGenOnly = 1;
22896 }
22897 def S4_pstorerff_abs : HInst<
22898 (outs),
22899 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
22900 "if (!$Pv4) memh(#$Ii) = $Rt32.h",
22901 tc_238d91d2, TypeST>, Enc_1cf4ca, AddrModeRel {
22902 let Inst{2-2} = 0b1;
22903 let Inst{7-7} = 0b1;
22904 let Inst{13-13} = 0b0;
22905 let Inst{31-18} = 0b10101111011000;
22906 let isPredicated = 1;
22907 let isPredicatedFalse = 1;
22908 let addrMode = Absolute;
22909 let accessSize = HalfWordAccess;
22910 let isExtended = 1;
22911 let mayStore = 1;
22912 let CextOpcode = "S2_storerf";
22913 let BaseOpcode = "S2_storerfabs";
22914 let DecoderNamespace = "MustExtend";
22915 let isExtendable = 1;
22916 let opExtendable = 1;
22917 let isExtentSigned = 0;
22918 let opExtentBits = 6;
22919 let opExtentAlign = 0;
22920 }
22921 def S4_pstorerff_rr : HInst<
22922 (outs),
22923 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
22924 "if (!$Pv4) memh($Rs32+$Ru32<<#$Ii) = $Rt32.h",
22925 tc_5274e61a, TypeST>, Enc_6339d5, AddrModeRel {
22926 let Inst{31-21} = 0b00110101011;
22927 let isPredicated = 1;
22928 let isPredicatedFalse = 1;
22929 let addrMode = BaseRegOffset;
22930 let accessSize = HalfWordAccess;
22931 let mayStore = 1;
22932 let CextOpcode = "S2_storerf";
22933 let InputType = "reg";
22934 let BaseOpcode = "S4_storerf_rr";
22935 }
22936 def S4_pstorerffnew_abs : HInst<
22937 (outs),
22938 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
22939 "if (!$Pv4.new) memh(#$Ii) = $Rt32.h",
22940 tc_66888ded, TypeST>, Enc_1cf4ca, AddrModeRel {
22941 let Inst{2-2} = 0b1;
22942 let Inst{7-7} = 0b1;
22943 let Inst{13-13} = 0b1;
22944 let Inst{31-18} = 0b10101111011000;
22945 let isPredicated = 1;
22946 let isPredicatedFalse = 1;
22947 let addrMode = Absolute;
22948 let accessSize = HalfWordAccess;
22949 let isPredicatedNew = 1;
22950 let isExtended = 1;
22951 let mayStore = 1;
22952 let CextOpcode = "S2_storerf";
22953 let BaseOpcode = "S2_storerfabs";
22954 let DecoderNamespace = "MustExtend";
22955 let isExtendable = 1;
22956 let opExtendable = 1;
22957 let isExtentSigned = 0;
22958 let opExtentBits = 6;
22959 let opExtentAlign = 0;
22960 }
22961 def S4_pstorerffnew_io : HInst<
22962 (outs),
22963 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
22964 "if (!$Pv4.new) memh($Rs32+#$Ii) = $Rt32.h",
22965 tc_f86c328a, TypeV2LDST>, Enc_e8c45e, AddrModeRel {
22966 let Inst{2-2} = 0b0;
22967 let Inst{31-21} = 0b01000110011;
22968 let isPredicated = 1;
22969 let isPredicatedFalse = 1;
22970 let addrMode = BaseImmOffset;
22971 let accessSize = HalfWordAccess;
22972 let isPredicatedNew = 1;
22973 let mayStore = 1;
22974 let CextOpcode = "S2_storerf";
22975 let InputType = "imm";
22976 let BaseOpcode = "S2_storerf_io";
22977 let isExtendable = 1;
22978 let opExtendable = 2;
22979 let isExtentSigned = 0;
22980 let opExtentBits = 7;
22981 let opExtentAlign = 1;
22982 }
22983 def S4_pstorerffnew_rr : HInst<
22984 (outs),
22985 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
22986 "if (!$Pv4.new) memh($Rs32+$Ru32<<#$Ii) = $Rt32.h",
22987 tc_3e07fb90, TypeST>, Enc_6339d5, AddrModeRel {
22988 let Inst{31-21} = 0b00110111011;
22989 let isPredicated = 1;
22990 let isPredicatedFalse = 1;
22991 let addrMode = BaseRegOffset;
22992 let accessSize = HalfWordAccess;
22993 let isPredicatedNew = 1;
22994 let mayStore = 1;
22995 let CextOpcode = "S2_storerf";
22996 let InputType = "reg";
22997 let BaseOpcode = "S4_storerf_rr";
22998 }
22999 def S4_pstorerffnew_zomap : HInst<
23000 (outs),
23001 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
23002 "if (!$Pv4.new) memh($Rs32) = $Rt32.h",
23003 tc_f86c328a, TypeMAPPING> {
23004 let isPseudo = 1;
23005 let isCodeGenOnly = 1;
23006 }
23007 def S4_pstorerft_abs : HInst<
23008 (outs),
23009 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23010 "if ($Pv4) memh(#$Ii) = $Rt32.h",
23011 tc_238d91d2, TypeST>, Enc_1cf4ca, AddrModeRel {
23012 let Inst{2-2} = 0b0;
23013 let Inst{7-7} = 0b1;
23014 let Inst{13-13} = 0b0;
23015 let Inst{31-18} = 0b10101111011000;
23016 let isPredicated = 1;
23017 let addrMode = Absolute;
23018 let accessSize = HalfWordAccess;
23019 let isExtended = 1;
23020 let mayStore = 1;
23021 let CextOpcode = "S2_storerf";
23022 let BaseOpcode = "S2_storerfabs";
23023 let DecoderNamespace = "MustExtend";
23024 let isExtendable = 1;
23025 let opExtendable = 1;
23026 let isExtentSigned = 0;
23027 let opExtentBits = 6;
23028 let opExtentAlign = 0;
23029 }
23030 def S4_pstorerft_rr : HInst<
23031 (outs),
23032 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23033 "if ($Pv4) memh($Rs32+$Ru32<<#$Ii) = $Rt32.h",
23034 tc_5274e61a, TypeST>, Enc_6339d5, AddrModeRel {
23035 let Inst{31-21} = 0b00110100011;
23036 let isPredicated = 1;
23037 let addrMode = BaseRegOffset;
23038 let accessSize = HalfWordAccess;
23039 let mayStore = 1;
23040 let CextOpcode = "S2_storerf";
23041 let InputType = "reg";
23042 let BaseOpcode = "S4_storerf_rr";
23043 }
23044 def S4_pstorerftnew_abs : HInst<
23045 (outs),
23046 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23047 "if ($Pv4.new) memh(#$Ii) = $Rt32.h",
23048 tc_66888ded, TypeST>, Enc_1cf4ca, AddrModeRel {
23049 let Inst{2-2} = 0b0;
23050 let Inst{7-7} = 0b1;
23051 let Inst{13-13} = 0b1;
23052 let Inst{31-18} = 0b10101111011000;
23053 let isPredicated = 1;
23054 let addrMode = Absolute;
23055 let accessSize = HalfWordAccess;
23056 let isPredicatedNew = 1;
23057 let isExtended = 1;
23058 let mayStore = 1;
23059 let CextOpcode = "S2_storerf";
23060 let BaseOpcode = "S2_storerfabs";
23061 let DecoderNamespace = "MustExtend";
23062 let isExtendable = 1;
23063 let opExtendable = 1;
23064 let isExtentSigned = 0;
23065 let opExtentBits = 6;
23066 let opExtentAlign = 0;
23067 }
23068 def S4_pstorerftnew_io : HInst<
23069 (outs),
23070 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
23071 "if ($Pv4.new) memh($Rs32+#$Ii) = $Rt32.h",
23072 tc_f86c328a, TypeV2LDST>, Enc_e8c45e, AddrModeRel {
23073 let Inst{2-2} = 0b0;
23074 let Inst{31-21} = 0b01000010011;
23075 let isPredicated = 1;
23076 let addrMode = BaseImmOffset;
23077 let accessSize = HalfWordAccess;
23078 let isPredicatedNew = 1;
23079 let mayStore = 1;
23080 let CextOpcode = "S2_storerf";
23081 let InputType = "imm";
23082 let BaseOpcode = "S2_storerf_io";
23083 let isExtendable = 1;
23084 let opExtendable = 2;
23085 let isExtentSigned = 0;
23086 let opExtentBits = 7;
23087 let opExtentAlign = 1;
23088 }
23089 def S4_pstorerftnew_rr : HInst<
23090 (outs),
23091 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23092 "if ($Pv4.new) memh($Rs32+$Ru32<<#$Ii) = $Rt32.h",
23093 tc_3e07fb90, TypeST>, Enc_6339d5, AddrModeRel {
23094 let Inst{31-21} = 0b00110110011;
23095 let isPredicated = 1;
23096 let addrMode = BaseRegOffset;
23097 let accessSize = HalfWordAccess;
23098 let isPredicatedNew = 1;
23099 let mayStore = 1;
23100 let CextOpcode = "S2_storerf";
23101 let InputType = "reg";
23102 let BaseOpcode = "S4_storerf_rr";
23103 }
23104 def S4_pstorerftnew_zomap : HInst<
23105 (outs),
23106 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
23107 "if ($Pv4.new) memh($Rs32) = $Rt32.h",
23108 tc_f86c328a, TypeMAPPING> {
23109 let isPseudo = 1;
23110 let isCodeGenOnly = 1;
23111 }
23112 def S4_pstorerhf_abs : HInst<
23113 (outs),
23114 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23115 "if (!$Pv4) memh(#$Ii) = $Rt32",
23116 tc_238d91d2, TypeST>, Enc_1cf4ca, AddrModeRel {
23117 let Inst{2-2} = 0b1;
23118 let Inst{7-7} = 0b1;
23119 let Inst{13-13} = 0b0;
23120 let Inst{31-18} = 0b10101111010000;
23121 let isPredicated = 1;
23122 let isPredicatedFalse = 1;
23123 let addrMode = Absolute;
23124 let accessSize = HalfWordAccess;
23125 let isExtended = 1;
23126 let mayStore = 1;
23127 let CextOpcode = "S2_storerh";
23128 let BaseOpcode = "S2_storerhabs";
23129 let isNVStorable = 1;
23130 let DecoderNamespace = "MustExtend";
23131 let isExtendable = 1;
23132 let opExtendable = 1;
23133 let isExtentSigned = 0;
23134 let opExtentBits = 6;
23135 let opExtentAlign = 0;
23136 }
23137 def S4_pstorerhf_rr : HInst<
23138 (outs),
23139 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23140 "if (!$Pv4) memh($Rs32+$Ru32<<#$Ii) = $Rt32",
23141 tc_5274e61a, TypeST>, Enc_6339d5, AddrModeRel {
23142 let Inst{31-21} = 0b00110101010;
23143 let isPredicated = 1;
23144 let isPredicatedFalse = 1;
23145 let addrMode = BaseRegOffset;
23146 let accessSize = HalfWordAccess;
23147 let mayStore = 1;
23148 let CextOpcode = "S2_storerh";
23149 let InputType = "reg";
23150 let BaseOpcode = "S2_storerh_rr";
23151 let isNVStorable = 1;
23152 }
23153 def S4_pstorerhfnew_abs : HInst<
23154 (outs),
23155 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23156 "if (!$Pv4.new) memh(#$Ii) = $Rt32",
23157 tc_66888ded, TypeST>, Enc_1cf4ca, AddrModeRel {
23158 let Inst{2-2} = 0b1;
23159 let Inst{7-7} = 0b1;
23160 let Inst{13-13} = 0b1;
23161 let Inst{31-18} = 0b10101111010000;
23162 let isPredicated = 1;
23163 let isPredicatedFalse = 1;
23164 let addrMode = Absolute;
23165 let accessSize = HalfWordAccess;
23166 let isPredicatedNew = 1;
23167 let isExtended = 1;
23168 let mayStore = 1;
23169 let CextOpcode = "S2_storerh";
23170 let BaseOpcode = "S2_storerhabs";
23171 let isNVStorable = 1;
23172 let DecoderNamespace = "MustExtend";
23173 let isExtendable = 1;
23174 let opExtendable = 1;
23175 let isExtentSigned = 0;
23176 let opExtentBits = 6;
23177 let opExtentAlign = 0;
23178 }
23179 def S4_pstorerhfnew_io : HInst<
23180 (outs),
23181 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
23182 "if (!$Pv4.new) memh($Rs32+#$Ii) = $Rt32",
23183 tc_f86c328a, TypeV2LDST>, Enc_e8c45e, AddrModeRel {
23184 let Inst{2-2} = 0b0;
23185 let Inst{31-21} = 0b01000110010;
23186 let isPredicated = 1;
23187 let isPredicatedFalse = 1;
23188 let addrMode = BaseImmOffset;
23189 let accessSize = HalfWordAccess;
23190 let isPredicatedNew = 1;
23191 let mayStore = 1;
23192 let CextOpcode = "S2_storerh";
23193 let InputType = "imm";
23194 let BaseOpcode = "S2_storerh_io";
23195 let isNVStorable = 1;
23196 let isExtendable = 1;
23197 let opExtendable = 2;
23198 let isExtentSigned = 0;
23199 let opExtentBits = 7;
23200 let opExtentAlign = 1;
23201 }
23202 def S4_pstorerhfnew_rr : HInst<
23203 (outs),
23204 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23205 "if (!$Pv4.new) memh($Rs32+$Ru32<<#$Ii) = $Rt32",
23206 tc_3e07fb90, TypeST>, Enc_6339d5, AddrModeRel {
23207 let Inst{31-21} = 0b00110111010;
23208 let isPredicated = 1;
23209 let isPredicatedFalse = 1;
23210 let addrMode = BaseRegOffset;
23211 let accessSize = HalfWordAccess;
23212 let isPredicatedNew = 1;
23213 let mayStore = 1;
23214 let CextOpcode = "S2_storerh";
23215 let InputType = "reg";
23216 let BaseOpcode = "S2_storerh_rr";
23217 let isNVStorable = 1;
23218 }
23219 def S4_pstorerhfnew_zomap : HInst<
23220 (outs),
23221 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
23222 "if (!$Pv4.new) memh($Rs32) = $Rt32",
23223 tc_f86c328a, TypeMAPPING> {
23224 let isPseudo = 1;
23225 let isCodeGenOnly = 1;
23226 }
23227 def S4_pstorerhnewf_abs : HInst<
23228 (outs),
23229 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
23230 "if (!$Pv4) memh(#$Ii) = $Nt8.new",
23231 tc_6ac37025, TypeST>, Enc_44215c, AddrModeRel {
23232 let Inst{2-2} = 0b1;
23233 let Inst{7-7} = 0b1;
23234 let Inst{13-11} = 0b001;
23235 let Inst{31-18} = 0b10101111101000;
23236 let isPredicated = 1;
23237 let isPredicatedFalse = 1;
23238 let addrMode = Absolute;
23239 let accessSize = HalfWordAccess;
23240 let isNVStore = 1;
23241 let isNewValue = 1;
23242 let isExtended = 1;
23243 let isRestrictNoSlot1Store = 1;
23244 let mayStore = 1;
23245 let CextOpcode = "S2_storerh";
23246 let BaseOpcode = "S2_storerhabs";
23247 let DecoderNamespace = "MustExtend";
23248 let isExtendable = 1;
23249 let opExtendable = 1;
23250 let isExtentSigned = 0;
23251 let opExtentBits = 6;
23252 let opExtentAlign = 0;
23253 let opNewValue = 2;
23254 }
23255 def S4_pstorerhnewf_rr : HInst<
23256 (outs),
23257 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
23258 "if (!$Pv4) memh($Rs32+$Ru32<<#$Ii) = $Nt8.new",
23259 tc_adb14c66, TypeST>, Enc_47ee5e, AddrModeRel {
23260 let Inst{4-3} = 0b01;
23261 let Inst{31-21} = 0b00110101101;
23262 let isPredicated = 1;
23263 let isPredicatedFalse = 1;
23264 let addrMode = BaseRegOffset;
23265 let accessSize = HalfWordAccess;
23266 let isNVStore = 1;
23267 let isNewValue = 1;
23268 let isRestrictNoSlot1Store = 1;
23269 let mayStore = 1;
23270 let CextOpcode = "S2_storerh";
23271 let InputType = "reg";
23272 let BaseOpcode = "S2_storerh_rr";
23273 let opNewValue = 4;
23274 }
23275 def S4_pstorerhnewfnew_abs : HInst<
23276 (outs),
23277 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
23278 "if (!$Pv4.new) memh(#$Ii) = $Nt8.new",
23279 tc_53bdb2f6, TypeST>, Enc_44215c, AddrModeRel {
23280 let Inst{2-2} = 0b1;
23281 let Inst{7-7} = 0b1;
23282 let Inst{13-11} = 0b101;
23283 let Inst{31-18} = 0b10101111101000;
23284 let isPredicated = 1;
23285 let isPredicatedFalse = 1;
23286 let addrMode = Absolute;
23287 let accessSize = HalfWordAccess;
23288 let isNVStore = 1;
23289 let isPredicatedNew = 1;
23290 let isNewValue = 1;
23291 let isExtended = 1;
23292 let isRestrictNoSlot1Store = 1;
23293 let mayStore = 1;
23294 let CextOpcode = "S2_storerh";
23295 let BaseOpcode = "S2_storerhabs";
23296 let DecoderNamespace = "MustExtend";
23297 let isExtendable = 1;
23298 let opExtendable = 1;
23299 let isExtentSigned = 0;
23300 let opExtentBits = 6;
23301 let opExtentAlign = 0;
23302 let opNewValue = 2;
23303 }
23304 def S4_pstorerhnewfnew_io : HInst<
23305 (outs),
23306 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Nt8),
23307 "if (!$Pv4.new) memh($Rs32+#$Ii) = $Nt8.new",
23308 tc_e7d02c66, TypeV2LDST>, Enc_f44229, AddrModeRel {
23309 let Inst{2-2} = 0b0;
23310 let Inst{12-11} = 0b01;
23311 let Inst{31-21} = 0b01000110101;
23312 let isPredicated = 1;
23313 let isPredicatedFalse = 1;
23314 let addrMode = BaseImmOffset;
23315 let accessSize = HalfWordAccess;
23316 let isNVStore = 1;
23317 let isPredicatedNew = 1;
23318 let isNewValue = 1;
23319 let isRestrictNoSlot1Store = 1;
23320 let mayStore = 1;
23321 let CextOpcode = "S2_storerh";
23322 let InputType = "imm";
23323 let BaseOpcode = "S2_storerh_io";
23324 let isExtendable = 1;
23325 let opExtendable = 2;
23326 let isExtentSigned = 0;
23327 let opExtentBits = 7;
23328 let opExtentAlign = 1;
23329 let opNewValue = 3;
23330 }
23331 def S4_pstorerhnewfnew_rr : HInst<
23332 (outs),
23333 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
23334 "if (!$Pv4.new) memh($Rs32+$Ru32<<#$Ii) = $Nt8.new",
23335 tc_e421e012, TypeST>, Enc_47ee5e, AddrModeRel {
23336 let Inst{4-3} = 0b01;
23337 let Inst{31-21} = 0b00110111101;
23338 let isPredicated = 1;
23339 let isPredicatedFalse = 1;
23340 let addrMode = BaseRegOffset;
23341 let accessSize = HalfWordAccess;
23342 let isNVStore = 1;
23343 let isPredicatedNew = 1;
23344 let isNewValue = 1;
23345 let isRestrictNoSlot1Store = 1;
23346 let mayStore = 1;
23347 let CextOpcode = "S2_storerh";
23348 let InputType = "reg";
23349 let BaseOpcode = "S2_storerh_rr";
23350 let opNewValue = 4;
23351 }
23352 def S4_pstorerhnewfnew_zomap : HInst<
23353 (outs),
23354 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
23355 "if (!$Pv4.new) memh($Rs32) = $Nt8.new",
23356 tc_e7d02c66, TypeMAPPING> {
23357 let isPseudo = 1;
23358 let isCodeGenOnly = 1;
23359 let opNewValue = 2;
23360 }
23361 def S4_pstorerhnewt_abs : HInst<
23362 (outs),
23363 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
23364 "if ($Pv4) memh(#$Ii) = $Nt8.new",
23365 tc_6ac37025, TypeST>, Enc_44215c, AddrModeRel {
23366 let Inst{2-2} = 0b0;
23367 let Inst{7-7} = 0b1;
23368 let Inst{13-11} = 0b001;
23369 let Inst{31-18} = 0b10101111101000;
23370 let isPredicated = 1;
23371 let addrMode = Absolute;
23372 let accessSize = HalfWordAccess;
23373 let isNVStore = 1;
23374 let isNewValue = 1;
23375 let isExtended = 1;
23376 let isRestrictNoSlot1Store = 1;
23377 let mayStore = 1;
23378 let CextOpcode = "S2_storerh";
23379 let BaseOpcode = "S2_storerhabs";
23380 let DecoderNamespace = "MustExtend";
23381 let isExtendable = 1;
23382 let opExtendable = 1;
23383 let isExtentSigned = 0;
23384 let opExtentBits = 6;
23385 let opExtentAlign = 0;
23386 let opNewValue = 2;
23387 }
23388 def S4_pstorerhnewt_rr : HInst<
23389 (outs),
23390 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
23391 "if ($Pv4) memh($Rs32+$Ru32<<#$Ii) = $Nt8.new",
23392 tc_adb14c66, TypeST>, Enc_47ee5e, AddrModeRel {
23393 let Inst{4-3} = 0b01;
23394 let Inst{31-21} = 0b00110100101;
23395 let isPredicated = 1;
23396 let addrMode = BaseRegOffset;
23397 let accessSize = HalfWordAccess;
23398 let isNVStore = 1;
23399 let isNewValue = 1;
23400 let isRestrictNoSlot1Store = 1;
23401 let mayStore = 1;
23402 let CextOpcode = "S2_storerh";
23403 let InputType = "reg";
23404 let BaseOpcode = "S2_storerh_rr";
23405 let opNewValue = 4;
23406 }
23407 def S4_pstorerhnewtnew_abs : HInst<
23408 (outs),
23409 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
23410 "if ($Pv4.new) memh(#$Ii) = $Nt8.new",
23411 tc_53bdb2f6, TypeST>, Enc_44215c, AddrModeRel {
23412 let Inst{2-2} = 0b0;
23413 let Inst{7-7} = 0b1;
23414 let Inst{13-11} = 0b101;
23415 let Inst{31-18} = 0b10101111101000;
23416 let isPredicated = 1;
23417 let addrMode = Absolute;
23418 let accessSize = HalfWordAccess;
23419 let isNVStore = 1;
23420 let isPredicatedNew = 1;
23421 let isNewValue = 1;
23422 let isExtended = 1;
23423 let isRestrictNoSlot1Store = 1;
23424 let mayStore = 1;
23425 let CextOpcode = "S2_storerh";
23426 let BaseOpcode = "S2_storerhabs";
23427 let DecoderNamespace = "MustExtend";
23428 let isExtendable = 1;
23429 let opExtendable = 1;
23430 let isExtentSigned = 0;
23431 let opExtentBits = 6;
23432 let opExtentAlign = 0;
23433 let opNewValue = 2;
23434 }
23435 def S4_pstorerhnewtnew_io : HInst<
23436 (outs),
23437 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Nt8),
23438 "if ($Pv4.new) memh($Rs32+#$Ii) = $Nt8.new",
23439 tc_e7d02c66, TypeV2LDST>, Enc_f44229, AddrModeRel {
23440 let Inst{2-2} = 0b0;
23441 let Inst{12-11} = 0b01;
23442 let Inst{31-21} = 0b01000010101;
23443 let isPredicated = 1;
23444 let addrMode = BaseImmOffset;
23445 let accessSize = HalfWordAccess;
23446 let isNVStore = 1;
23447 let isPredicatedNew = 1;
23448 let isNewValue = 1;
23449 let isRestrictNoSlot1Store = 1;
23450 let mayStore = 1;
23451 let CextOpcode = "S2_storerh";
23452 let InputType = "imm";
23453 let BaseOpcode = "S2_storerh_io";
23454 let isExtendable = 1;
23455 let opExtendable = 2;
23456 let isExtentSigned = 0;
23457 let opExtentBits = 7;
23458 let opExtentAlign = 1;
23459 let opNewValue = 3;
23460 }
23461 def S4_pstorerhnewtnew_rr : HInst<
23462 (outs),
23463 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
23464 "if ($Pv4.new) memh($Rs32+$Ru32<<#$Ii) = $Nt8.new",
23465 tc_e421e012, TypeST>, Enc_47ee5e, AddrModeRel {
23466 let Inst{4-3} = 0b01;
23467 let Inst{31-21} = 0b00110110101;
23468 let isPredicated = 1;
23469 let addrMode = BaseRegOffset;
23470 let accessSize = HalfWordAccess;
23471 let isNVStore = 1;
23472 let isPredicatedNew = 1;
23473 let isNewValue = 1;
23474 let isRestrictNoSlot1Store = 1;
23475 let mayStore = 1;
23476 let CextOpcode = "S2_storerh";
23477 let InputType = "reg";
23478 let BaseOpcode = "S2_storerh_rr";
23479 let opNewValue = 4;
23480 }
23481 def S4_pstorerhnewtnew_zomap : HInst<
23482 (outs),
23483 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
23484 "if ($Pv4.new) memh($Rs32) = $Nt8.new",
23485 tc_e7d02c66, TypeMAPPING> {
23486 let isPseudo = 1;
23487 let isCodeGenOnly = 1;
23488 let opNewValue = 2;
23489 }
23490 def S4_pstorerht_abs : HInst<
23491 (outs),
23492 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23493 "if ($Pv4) memh(#$Ii) = $Rt32",
23494 tc_238d91d2, TypeST>, Enc_1cf4ca, AddrModeRel {
23495 let Inst{2-2} = 0b0;
23496 let Inst{7-7} = 0b1;
23497 let Inst{13-13} = 0b0;
23498 let Inst{31-18} = 0b10101111010000;
23499 let isPredicated = 1;
23500 let addrMode = Absolute;
23501 let accessSize = HalfWordAccess;
23502 let isExtended = 1;
23503 let mayStore = 1;
23504 let CextOpcode = "S2_storerh";
23505 let BaseOpcode = "S2_storerhabs";
23506 let isNVStorable = 1;
23507 let DecoderNamespace = "MustExtend";
23508 let isExtendable = 1;
23509 let opExtendable = 1;
23510 let isExtentSigned = 0;
23511 let opExtentBits = 6;
23512 let opExtentAlign = 0;
23513 }
23514 def S4_pstorerht_rr : HInst<
23515 (outs),
23516 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23517 "if ($Pv4) memh($Rs32+$Ru32<<#$Ii) = $Rt32",
23518 tc_5274e61a, TypeST>, Enc_6339d5, AddrModeRel {
23519 let Inst{31-21} = 0b00110100010;
23520 let isPredicated = 1;
23521 let addrMode = BaseRegOffset;
23522 let accessSize = HalfWordAccess;
23523 let mayStore = 1;
23524 let CextOpcode = "S2_storerh";
23525 let InputType = "reg";
23526 let BaseOpcode = "S2_storerh_rr";
23527 let isNVStorable = 1;
23528 }
23529 def S4_pstorerhtnew_abs : HInst<
23530 (outs),
23531 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23532 "if ($Pv4.new) memh(#$Ii) = $Rt32",
23533 tc_66888ded, TypeST>, Enc_1cf4ca, AddrModeRel {
23534 let Inst{2-2} = 0b0;
23535 let Inst{7-7} = 0b1;
23536 let Inst{13-13} = 0b1;
23537 let Inst{31-18} = 0b10101111010000;
23538 let isPredicated = 1;
23539 let addrMode = Absolute;
23540 let accessSize = HalfWordAccess;
23541 let isPredicatedNew = 1;
23542 let isExtended = 1;
23543 let mayStore = 1;
23544 let CextOpcode = "S2_storerh";
23545 let BaseOpcode = "S2_storerhabs";
23546 let isNVStorable = 1;
23547 let DecoderNamespace = "MustExtend";
23548 let isExtendable = 1;
23549 let opExtendable = 1;
23550 let isExtentSigned = 0;
23551 let opExtentBits = 6;
23552 let opExtentAlign = 0;
23553 }
23554 def S4_pstorerhtnew_io : HInst<
23555 (outs),
23556 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
23557 "if ($Pv4.new) memh($Rs32+#$Ii) = $Rt32",
23558 tc_f86c328a, TypeV2LDST>, Enc_e8c45e, AddrModeRel {
23559 let Inst{2-2} = 0b0;
23560 let Inst{31-21} = 0b01000010010;
23561 let isPredicated = 1;
23562 let addrMode = BaseImmOffset;
23563 let accessSize = HalfWordAccess;
23564 let isPredicatedNew = 1;
23565 let mayStore = 1;
23566 let CextOpcode = "S2_storerh";
23567 let InputType = "imm";
23568 let BaseOpcode = "S2_storerh_io";
23569 let isNVStorable = 1;
23570 let isExtendable = 1;
23571 let opExtendable = 2;
23572 let isExtentSigned = 0;
23573 let opExtentBits = 7;
23574 let opExtentAlign = 1;
23575 }
23576 def S4_pstorerhtnew_rr : HInst<
23577 (outs),
23578 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23579 "if ($Pv4.new) memh($Rs32+$Ru32<<#$Ii) = $Rt32",
23580 tc_3e07fb90, TypeST>, Enc_6339d5, AddrModeRel {
23581 let Inst{31-21} = 0b00110110010;
23582 let isPredicated = 1;
23583 let addrMode = BaseRegOffset;
23584 let accessSize = HalfWordAccess;
23585 let isPredicatedNew = 1;
23586 let mayStore = 1;
23587 let CextOpcode = "S2_storerh";
23588 let InputType = "reg";
23589 let BaseOpcode = "S2_storerh_rr";
23590 let isNVStorable = 1;
23591 }
23592 def S4_pstorerhtnew_zomap : HInst<
23593 (outs),
23594 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
23595 "if ($Pv4.new) memh($Rs32) = $Rt32",
23596 tc_f86c328a, TypeMAPPING> {
23597 let isPseudo = 1;
23598 let isCodeGenOnly = 1;
23599 }
23600 def S4_pstorerif_abs : HInst<
23601 (outs),
23602 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23603 "if (!$Pv4) memw(#$Ii) = $Rt32",
23604 tc_238d91d2, TypeST>, Enc_1cf4ca, AddrModeRel {
23605 let Inst{2-2} = 0b1;
23606 let Inst{7-7} = 0b1;
23607 let Inst{13-13} = 0b0;
23608 let Inst{31-18} = 0b10101111100000;
23609 let isPredicated = 1;
23610 let isPredicatedFalse = 1;
23611 let addrMode = Absolute;
23612 let accessSize = WordAccess;
23613 let isExtended = 1;
23614 let mayStore = 1;
23615 let CextOpcode = "S2_storeri";
23616 let BaseOpcode = "S2_storeriabs";
23617 let isNVStorable = 1;
23618 let DecoderNamespace = "MustExtend";
23619 let isExtendable = 1;
23620 let opExtendable = 1;
23621 let isExtentSigned = 0;
23622 let opExtentBits = 6;
23623 let opExtentAlign = 0;
23624 }
23625 def S4_pstorerif_rr : HInst<
23626 (outs),
23627 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23628 "if (!$Pv4) memw($Rs32+$Ru32<<#$Ii) = $Rt32",
23629 tc_5274e61a, TypeST>, Enc_6339d5, AddrModeRel {
23630 let Inst{31-21} = 0b00110101100;
23631 let isPredicated = 1;
23632 let isPredicatedFalse = 1;
23633 let addrMode = BaseRegOffset;
23634 let accessSize = WordAccess;
23635 let mayStore = 1;
23636 let CextOpcode = "S2_storeri";
23637 let InputType = "reg";
23638 let BaseOpcode = "S2_storeri_rr";
23639 let isNVStorable = 1;
23640 }
23641 def S4_pstorerifnew_abs : HInst<
23642 (outs),
23643 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23644 "if (!$Pv4.new) memw(#$Ii) = $Rt32",
23645 tc_66888ded, TypeST>, Enc_1cf4ca, AddrModeRel {
23646 let Inst{2-2} = 0b1;
23647 let Inst{7-7} = 0b1;
23648 let Inst{13-13} = 0b1;
23649 let Inst{31-18} = 0b10101111100000;
23650 let isPredicated = 1;
23651 let isPredicatedFalse = 1;
23652 let addrMode = Absolute;
23653 let accessSize = WordAccess;
23654 let isPredicatedNew = 1;
23655 let isExtended = 1;
23656 let mayStore = 1;
23657 let CextOpcode = "S2_storeri";
23658 let BaseOpcode = "S2_storeriabs";
23659 let isNVStorable = 1;
23660 let DecoderNamespace = "MustExtend";
23661 let isExtendable = 1;
23662 let opExtendable = 1;
23663 let isExtentSigned = 0;
23664 let opExtentBits = 6;
23665 let opExtentAlign = 0;
23666 }
23667 def S4_pstorerifnew_io : HInst<
23668 (outs),
23669 (ins PredRegs:$Pv4, IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Rt32),
23670 "if (!$Pv4.new) memw($Rs32+#$Ii) = $Rt32",
23671 tc_f86c328a, TypeV2LDST>, Enc_397f23, AddrModeRel {
23672 let Inst{2-2} = 0b0;
23673 let Inst{31-21} = 0b01000110100;
23674 let isPredicated = 1;
23675 let isPredicatedFalse = 1;
23676 let addrMode = BaseImmOffset;
23677 let accessSize = WordAccess;
23678 let isPredicatedNew = 1;
23679 let mayStore = 1;
23680 let CextOpcode = "S2_storeri";
23681 let InputType = "imm";
23682 let BaseOpcode = "S2_storeri_io";
23683 let isNVStorable = 1;
23684 let isExtendable = 1;
23685 let opExtendable = 2;
23686 let isExtentSigned = 0;
23687 let opExtentBits = 8;
23688 let opExtentAlign = 2;
23689 }
23690 def S4_pstorerifnew_rr : HInst<
23691 (outs),
23692 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23693 "if (!$Pv4.new) memw($Rs32+$Ru32<<#$Ii) = $Rt32",
23694 tc_3e07fb90, TypeST>, Enc_6339d5, AddrModeRel {
23695 let Inst{31-21} = 0b00110111100;
23696 let isPredicated = 1;
23697 let isPredicatedFalse = 1;
23698 let addrMode = BaseRegOffset;
23699 let accessSize = WordAccess;
23700 let isPredicatedNew = 1;
23701 let mayStore = 1;
23702 let CextOpcode = "S2_storeri";
23703 let InputType = "reg";
23704 let BaseOpcode = "S2_storeri_rr";
23705 let isNVStorable = 1;
23706 }
23707 def S4_pstorerifnew_zomap : HInst<
23708 (outs),
23709 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
23710 "if (!$Pv4.new) memw($Rs32) = $Rt32",
23711 tc_f86c328a, TypeMAPPING> {
23712 let isPseudo = 1;
23713 let isCodeGenOnly = 1;
23714 }
23715 def S4_pstorerinewf_abs : HInst<
23716 (outs),
23717 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
23718 "if (!$Pv4) memw(#$Ii) = $Nt8.new",
23719 tc_6ac37025, TypeST>, Enc_44215c, AddrModeRel {
23720 let Inst{2-2} = 0b1;
23721 let Inst{7-7} = 0b1;
23722 let Inst{13-11} = 0b010;
23723 let Inst{31-18} = 0b10101111101000;
23724 let isPredicated = 1;
23725 let isPredicatedFalse = 1;
23726 let addrMode = Absolute;
23727 let accessSize = WordAccess;
23728 let isNVStore = 1;
23729 let isNewValue = 1;
23730 let isExtended = 1;
23731 let isRestrictNoSlot1Store = 1;
23732 let mayStore = 1;
23733 let CextOpcode = "S2_storeri";
23734 let BaseOpcode = "S2_storeriabs";
23735 let DecoderNamespace = "MustExtend";
23736 let isExtendable = 1;
23737 let opExtendable = 1;
23738 let isExtentSigned = 0;
23739 let opExtentBits = 6;
23740 let opExtentAlign = 0;
23741 let opNewValue = 2;
23742 }
23743 def S4_pstorerinewf_rr : HInst<
23744 (outs),
23745 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
23746 "if (!$Pv4) memw($Rs32+$Ru32<<#$Ii) = $Nt8.new",
23747 tc_adb14c66, TypeST>, Enc_47ee5e, AddrModeRel {
23748 let Inst{4-3} = 0b10;
23749 let Inst{31-21} = 0b00110101101;
23750 let isPredicated = 1;
23751 let isPredicatedFalse = 1;
23752 let addrMode = BaseRegOffset;
23753 let accessSize = WordAccess;
23754 let isNVStore = 1;
23755 let isNewValue = 1;
23756 let isRestrictNoSlot1Store = 1;
23757 let mayStore = 1;
23758 let CextOpcode = "S2_storeri";
23759 let InputType = "reg";
23760 let BaseOpcode = "S2_storeri_rr";
23761 let opNewValue = 4;
23762 }
23763 def S4_pstorerinewfnew_abs : HInst<
23764 (outs),
23765 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
23766 "if (!$Pv4.new) memw(#$Ii) = $Nt8.new",
23767 tc_53bdb2f6, TypeST>, Enc_44215c, AddrModeRel {
23768 let Inst{2-2} = 0b1;
23769 let Inst{7-7} = 0b1;
23770 let Inst{13-11} = 0b110;
23771 let Inst{31-18} = 0b10101111101000;
23772 let isPredicated = 1;
23773 let isPredicatedFalse = 1;
23774 let addrMode = Absolute;
23775 let accessSize = WordAccess;
23776 let isNVStore = 1;
23777 let isPredicatedNew = 1;
23778 let isNewValue = 1;
23779 let isExtended = 1;
23780 let isRestrictNoSlot1Store = 1;
23781 let mayStore = 1;
23782 let CextOpcode = "S2_storeri";
23783 let BaseOpcode = "S2_storeriabs";
23784 let DecoderNamespace = "MustExtend";
23785 let isExtendable = 1;
23786 let opExtendable = 1;
23787 let isExtentSigned = 0;
23788 let opExtentBits = 6;
23789 let opExtentAlign = 0;
23790 let opNewValue = 2;
23791 }
23792 def S4_pstorerinewfnew_io : HInst<
23793 (outs),
23794 (ins PredRegs:$Pv4, IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Nt8),
23795 "if (!$Pv4.new) memw($Rs32+#$Ii) = $Nt8.new",
23796 tc_e7d02c66, TypeV2LDST>, Enc_8dbdfe, AddrModeRel {
23797 let Inst{2-2} = 0b0;
23798 let Inst{12-11} = 0b10;
23799 let Inst{31-21} = 0b01000110101;
23800 let isPredicated = 1;
23801 let isPredicatedFalse = 1;
23802 let addrMode = BaseImmOffset;
23803 let accessSize = WordAccess;
23804 let isNVStore = 1;
23805 let isPredicatedNew = 1;
23806 let isNewValue = 1;
23807 let isRestrictNoSlot1Store = 1;
23808 let mayStore = 1;
23809 let CextOpcode = "S2_storeri";
23810 let InputType = "imm";
23811 let BaseOpcode = "S2_storeri_io";
23812 let isExtendable = 1;
23813 let opExtendable = 2;
23814 let isExtentSigned = 0;
23815 let opExtentBits = 8;
23816 let opExtentAlign = 2;
23817 let opNewValue = 3;
23818 }
23819 def S4_pstorerinewfnew_rr : HInst<
23820 (outs),
23821 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
23822 "if (!$Pv4.new) memw($Rs32+$Ru32<<#$Ii) = $Nt8.new",
23823 tc_e421e012, TypeST>, Enc_47ee5e, AddrModeRel {
23824 let Inst{4-3} = 0b10;
23825 let Inst{31-21} = 0b00110111101;
23826 let isPredicated = 1;
23827 let isPredicatedFalse = 1;
23828 let addrMode = BaseRegOffset;
23829 let accessSize = WordAccess;
23830 let isNVStore = 1;
23831 let isPredicatedNew = 1;
23832 let isNewValue = 1;
23833 let isRestrictNoSlot1Store = 1;
23834 let mayStore = 1;
23835 let CextOpcode = "S2_storeri";
23836 let InputType = "reg";
23837 let BaseOpcode = "S2_storeri_rr";
23838 let opNewValue = 4;
23839 }
23840 def S4_pstorerinewfnew_zomap : HInst<
23841 (outs),
23842 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
23843 "if (!$Pv4.new) memw($Rs32) = $Nt8.new",
23844 tc_e7d02c66, TypeMAPPING> {
23845 let isPseudo = 1;
23846 let isCodeGenOnly = 1;
23847 let opNewValue = 2;
23848 }
23849 def S4_pstorerinewt_abs : HInst<
23850 (outs),
23851 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
23852 "if ($Pv4) memw(#$Ii) = $Nt8.new",
23853 tc_6ac37025, TypeST>, Enc_44215c, AddrModeRel {
23854 let Inst{2-2} = 0b0;
23855 let Inst{7-7} = 0b1;
23856 let Inst{13-11} = 0b010;
23857 let Inst{31-18} = 0b10101111101000;
23858 let isPredicated = 1;
23859 let addrMode = Absolute;
23860 let accessSize = WordAccess;
23861 let isNVStore = 1;
23862 let isNewValue = 1;
23863 let isExtended = 1;
23864 let isRestrictNoSlot1Store = 1;
23865 let mayStore = 1;
23866 let CextOpcode = "S2_storeri";
23867 let BaseOpcode = "S2_storeriabs";
23868 let DecoderNamespace = "MustExtend";
23869 let isExtendable = 1;
23870 let opExtendable = 1;
23871 let isExtentSigned = 0;
23872 let opExtentBits = 6;
23873 let opExtentAlign = 0;
23874 let opNewValue = 2;
23875 }
23876 def S4_pstorerinewt_rr : HInst<
23877 (outs),
23878 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
23879 "if ($Pv4) memw($Rs32+$Ru32<<#$Ii) = $Nt8.new",
23880 tc_adb14c66, TypeST>, Enc_47ee5e, AddrModeRel {
23881 let Inst{4-3} = 0b10;
23882 let Inst{31-21} = 0b00110100101;
23883 let isPredicated = 1;
23884 let addrMode = BaseRegOffset;
23885 let accessSize = WordAccess;
23886 let isNVStore = 1;
23887 let isNewValue = 1;
23888 let isRestrictNoSlot1Store = 1;
23889 let mayStore = 1;
23890 let CextOpcode = "S2_storeri";
23891 let InputType = "reg";
23892 let BaseOpcode = "S2_storeri_rr";
23893 let opNewValue = 4;
23894 }
23895 def S4_pstorerinewtnew_abs : HInst<
23896 (outs),
23897 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
23898 "if ($Pv4.new) memw(#$Ii) = $Nt8.new",
23899 tc_53bdb2f6, TypeST>, Enc_44215c, AddrModeRel {
23900 let Inst{2-2} = 0b0;
23901 let Inst{7-7} = 0b1;
23902 let Inst{13-11} = 0b110;
23903 let Inst{31-18} = 0b10101111101000;
23904 let isPredicated = 1;
23905 let addrMode = Absolute;
23906 let accessSize = WordAccess;
23907 let isNVStore = 1;
23908 let isPredicatedNew = 1;
23909 let isNewValue = 1;
23910 let isExtended = 1;
23911 let isRestrictNoSlot1Store = 1;
23912 let mayStore = 1;
23913 let CextOpcode = "S2_storeri";
23914 let BaseOpcode = "S2_storeriabs";
23915 let DecoderNamespace = "MustExtend";
23916 let isExtendable = 1;
23917 let opExtendable = 1;
23918 let isExtentSigned = 0;
23919 let opExtentBits = 6;
23920 let opExtentAlign = 0;
23921 let opNewValue = 2;
23922 }
23923 def S4_pstorerinewtnew_io : HInst<
23924 (outs),
23925 (ins PredRegs:$Pv4, IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Nt8),
23926 "if ($Pv4.new) memw($Rs32+#$Ii) = $Nt8.new",
23927 tc_e7d02c66, TypeV2LDST>, Enc_8dbdfe, AddrModeRel {
23928 let Inst{2-2} = 0b0;
23929 let Inst{12-11} = 0b10;
23930 let Inst{31-21} = 0b01000010101;
23931 let isPredicated = 1;
23932 let addrMode = BaseImmOffset;
23933 let accessSize = WordAccess;
23934 let isNVStore = 1;
23935 let isPredicatedNew = 1;
23936 let isNewValue = 1;
23937 let isRestrictNoSlot1Store = 1;
23938 let mayStore = 1;
23939 let CextOpcode = "S2_storeri";
23940 let InputType = "imm";
23941 let BaseOpcode = "S2_storeri_io";
23942 let isExtendable = 1;
23943 let opExtendable = 2;
23944 let isExtentSigned = 0;
23945 let opExtentBits = 8;
23946 let opExtentAlign = 2;
23947 let opNewValue = 3;
23948 }
23949 def S4_pstorerinewtnew_rr : HInst<
23950 (outs),
23951 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
23952 "if ($Pv4.new) memw($Rs32+$Ru32<<#$Ii) = $Nt8.new",
23953 tc_e421e012, TypeST>, Enc_47ee5e, AddrModeRel {
23954 let Inst{4-3} = 0b10;
23955 let Inst{31-21} = 0b00110110101;
23956 let isPredicated = 1;
23957 let addrMode = BaseRegOffset;
23958 let accessSize = WordAccess;
23959 let isNVStore = 1;
23960 let isPredicatedNew = 1;
23961 let isNewValue = 1;
23962 let isRestrictNoSlot1Store = 1;
23963 let mayStore = 1;
23964 let CextOpcode = "S2_storeri";
23965 let InputType = "reg";
23966 let BaseOpcode = "S2_storeri_rr";
23967 let opNewValue = 4;
23968 }
23969 def S4_pstorerinewtnew_zomap : HInst<
23970 (outs),
23971 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
23972 "if ($Pv4.new) memw($Rs32) = $Nt8.new",
23973 tc_e7d02c66, TypeMAPPING> {
23974 let isPseudo = 1;
23975 let isCodeGenOnly = 1;
23976 let opNewValue = 2;
23977 }
23978 def S4_pstorerit_abs : HInst<
23979 (outs),
23980 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23981 "if ($Pv4) memw(#$Ii) = $Rt32",
23982 tc_238d91d2, TypeST>, Enc_1cf4ca, AddrModeRel {
23983 let Inst{2-2} = 0b0;
23984 let Inst{7-7} = 0b1;
23985 let Inst{13-13} = 0b0;
23986 let Inst{31-18} = 0b10101111100000;
23987 let isPredicated = 1;
23988 let addrMode = Absolute;
23989 let accessSize = WordAccess;
23990 let isExtended = 1;
23991 let mayStore = 1;
23992 let CextOpcode = "S2_storeri";
23993 let BaseOpcode = "S2_storeriabs";
23994 let isNVStorable = 1;
23995 let DecoderNamespace = "MustExtend";
23996 let isExtendable = 1;
23997 let opExtendable = 1;
23998 let isExtentSigned = 0;
23999 let opExtentBits = 6;
24000 let opExtentAlign = 0;
24001 }
24002 def S4_pstorerit_rr : HInst<
24003 (outs),
24004 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
24005 "if ($Pv4) memw($Rs32+$Ru32<<#$Ii) = $Rt32",
24006 tc_5274e61a, TypeST>, Enc_6339d5, AddrModeRel {
24007 let Inst{31-21} = 0b00110100100;
24008 let isPredicated = 1;
24009 let addrMode = BaseRegOffset;
24010 let accessSize = WordAccess;
24011 let mayStore = 1;
24012 let CextOpcode = "S2_storeri";
24013 let InputType = "reg";
24014 let BaseOpcode = "S2_storeri_rr";
24015 let isNVStorable = 1;
24016 }
24017 def S4_pstoreritnew_abs : HInst<
24018 (outs),
24019 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
24020 "if ($Pv4.new) memw(#$Ii) = $Rt32",
24021 tc_66888ded, TypeST>, Enc_1cf4ca, AddrModeRel {
24022 let Inst{2-2} = 0b0;
24023 let Inst{7-7} = 0b1;
24024 let Inst{13-13} = 0b1;
24025 let Inst{31-18} = 0b10101111100000;
24026 let isPredicated = 1;
24027 let addrMode = Absolute;
24028 let accessSize = WordAccess;
24029 let isPredicatedNew = 1;
24030 let isExtended = 1;
24031 let mayStore = 1;
24032 let CextOpcode = "S2_storeri";
24033 let BaseOpcode = "S2_storeriabs";
24034 let isNVStorable = 1;
24035 let DecoderNamespace = "MustExtend";
24036 let isExtendable = 1;
24037 let opExtendable = 1;
24038 let isExtentSigned = 0;
24039 let opExtentBits = 6;
24040 let opExtentAlign = 0;
24041 }
24042 def S4_pstoreritnew_io : HInst<
24043 (outs),
24044 (ins PredRegs:$Pv4, IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Rt32),
24045 "if ($Pv4.new) memw($Rs32+#$Ii) = $Rt32",
24046 tc_f86c328a, TypeV2LDST>, Enc_397f23, AddrModeRel {
24047 let Inst{2-2} = 0b0;
24048 let Inst{31-21} = 0b01000010100;
24049 let isPredicated = 1;
24050 let addrMode = BaseImmOffset;
24051 let accessSize = WordAccess;
24052 let isPredicatedNew = 1;
24053 let mayStore = 1;
24054 let CextOpcode = "S2_storeri";
24055 let InputType = "imm";
24056 let BaseOpcode = "S2_storeri_io";
24057 let isNVStorable = 1;
24058 let isExtendable = 1;
24059 let opExtendable = 2;
24060 let isExtentSigned = 0;
24061 let opExtentBits = 8;
24062 let opExtentAlign = 2;
24063 }
24064 def S4_pstoreritnew_rr : HInst<
24065 (outs),
24066 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
24067 "if ($Pv4.new) memw($Rs32+$Ru32<<#$Ii) = $Rt32",
24068 tc_3e07fb90, TypeST>, Enc_6339d5, AddrModeRel {
24069 let Inst{31-21} = 0b00110110100;
24070 let isPredicated = 1;
24071 let addrMode = BaseRegOffset;
24072 let accessSize = WordAccess;
24073 let isPredicatedNew = 1;
24074 let mayStore = 1;
24075 let CextOpcode = "S2_storeri";
24076 let InputType = "reg";
24077 let BaseOpcode = "S2_storeri_rr";
24078 let isNVStorable = 1;
24079 }
24080 def S4_pstoreritnew_zomap : HInst<
24081 (outs),
24082 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
24083 "if ($Pv4.new) memw($Rs32) = $Rt32",
24084 tc_f86c328a, TypeMAPPING> {
24085 let isPseudo = 1;
24086 let isCodeGenOnly = 1;
24087 }
24088 def S4_stored_locked : HInst<
24089 (outs PredRegs:$Pd4),
24090 (ins IntRegs:$Rs32, DoubleRegs:$Rtt32),
24091 "memd_locked($Rs32,$Pd4) = $Rtt32",
24092 tc_1372bca1, TypeST>, Enc_d7dc10 {
24093 let Inst{7-2} = 0b000000;
24094 let Inst{13-13} = 0b0;
24095 let Inst{31-21} = 0b10100000111;
24096 let accessSize = DoubleWordAccess;
24097 let isPredicateLate = 1;
24098 let isSoloAX = 1;
24099 let mayStore = 1;
24100 }
24101 def S4_storeirb_io : HInst<
24102 (outs),
24103 (ins IntRegs:$Rs32, u6_0Imm:$Ii, s32_0Imm:$II),
24104 "memb($Rs32+#$Ii) = #$II",
24105 tc_05b6c987, TypeST>, Enc_8203bb, PredNewRel {
24106 let Inst{31-21} = 0b00111100000;
24107 let addrMode = BaseImmOffset;
24108 let accessSize = ByteAccess;
24109 let mayStore = 1;
24110 let CextOpcode = "S2_storerb";
24111 let InputType = "imm";
24112 let BaseOpcode = "S4_storeirb_io";
24113 let isPredicable = 1;
24114 let isExtendable = 1;
24115 let opExtendable = 2;
24116 let isExtentSigned = 1;
24117 let opExtentBits = 8;
24118 let opExtentAlign = 0;
24119 }
24120 def S4_storeirb_zomap : HInst<
24121 (outs),
24122 (ins IntRegs:$Rs32, s8_0Imm:$II),
24123 "memb($Rs32) = #$II",
24124 tc_05b6c987, TypeMAPPING> {
24125 let isPseudo = 1;
24126 let isCodeGenOnly = 1;
24127 }
24128 def S4_storeirbf_io : HInst<
24129 (outs),
24130 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_0Imm:$Ii, s32_0Imm:$II),
24131 "if (!$Pv4) memb($Rs32+#$Ii) = #$II",
24132 tc_8b15472a, TypeST>, Enc_d7a65e, PredNewRel {
24133 let Inst{31-21} = 0b00111000100;
24134 let isPredicated = 1;
24135 let isPredicatedFalse = 1;
24136 let addrMode = BaseImmOffset;
24137 let accessSize = ByteAccess;
24138 let mayStore = 1;
24139 let CextOpcode = "S2_storerb";
24140 let InputType = "imm";
24141 let BaseOpcode = "S4_storeirb_io";
24142 let isExtendable = 1;
24143 let opExtendable = 3;
24144 let isExtentSigned = 1;
24145 let opExtentBits = 6;
24146 let opExtentAlign = 0;
24147 }
24148 def S4_storeirbf_zomap : HInst<
24149 (outs),
24150 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24151 "if (!$Pv4) memb($Rs32) = #$II",
24152 tc_8b15472a, TypeMAPPING> {
24153 let isPseudo = 1;
24154 let isCodeGenOnly = 1;
24155 }
24156 def S4_storeirbfnew_io : HInst<
24157 (outs),
24158 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_0Imm:$Ii, s32_0Imm:$II),
24159 "if (!$Pv4.new) memb($Rs32+#$Ii) = #$II",
24160 tc_f86c328a, TypeST>, Enc_d7a65e, PredNewRel {
24161 let Inst{31-21} = 0b00111001100;
24162 let isPredicated = 1;
24163 let isPredicatedFalse = 1;
24164 let addrMode = BaseImmOffset;
24165 let accessSize = ByteAccess;
24166 let isPredicatedNew = 1;
24167 let mayStore = 1;
24168 let CextOpcode = "S2_storerb";
24169 let InputType = "imm";
24170 let BaseOpcode = "S4_storeirb_io";
24171 let isExtendable = 1;
24172 let opExtendable = 3;
24173 let isExtentSigned = 1;
24174 let opExtentBits = 6;
24175 let opExtentAlign = 0;
24176 }
24177 def S4_storeirbfnew_zomap : HInst<
24178 (outs),
24179 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24180 "if (!$Pv4.new) memb($Rs32) = #$II",
24181 tc_f86c328a, TypeMAPPING> {
24182 let isPseudo = 1;
24183 let isCodeGenOnly = 1;
24184 }
24185 def S4_storeirbt_io : HInst<
24186 (outs),
24187 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_0Imm:$Ii, s32_0Imm:$II),
24188 "if ($Pv4) memb($Rs32+#$Ii) = #$II",
24189 tc_8b15472a, TypeST>, Enc_d7a65e, PredNewRel {
24190 let Inst{31-21} = 0b00111000000;
24191 let isPredicated = 1;
24192 let addrMode = BaseImmOffset;
24193 let accessSize = ByteAccess;
24194 let mayStore = 1;
24195 let CextOpcode = "S2_storerb";
24196 let InputType = "imm";
24197 let BaseOpcode = "S4_storeirb_io";
24198 let isExtendable = 1;
24199 let opExtendable = 3;
24200 let isExtentSigned = 1;
24201 let opExtentBits = 6;
24202 let opExtentAlign = 0;
24203 }
24204 def S4_storeirbt_zomap : HInst<
24205 (outs),
24206 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24207 "if ($Pv4) memb($Rs32) = #$II",
24208 tc_8b15472a, TypeMAPPING> {
24209 let isPseudo = 1;
24210 let isCodeGenOnly = 1;
24211 }
24212 def S4_storeirbtnew_io : HInst<
24213 (outs),
24214 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_0Imm:$Ii, s32_0Imm:$II),
24215 "if ($Pv4.new) memb($Rs32+#$Ii) = #$II",
24216 tc_f86c328a, TypeST>, Enc_d7a65e, PredNewRel {
24217 let Inst{31-21} = 0b00111001000;
24218 let isPredicated = 1;
24219 let addrMode = BaseImmOffset;
24220 let accessSize = ByteAccess;
24221 let isPredicatedNew = 1;
24222 let mayStore = 1;
24223 let CextOpcode = "S2_storerb";
24224 let InputType = "imm";
24225 let BaseOpcode = "S4_storeirb_io";
24226 let isExtendable = 1;
24227 let opExtendable = 3;
24228 let isExtentSigned = 1;
24229 let opExtentBits = 6;
24230 let opExtentAlign = 0;
24231 }
24232 def S4_storeirbtnew_zomap : HInst<
24233 (outs),
24234 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24235 "if ($Pv4.new) memb($Rs32) = #$II",
24236 tc_f86c328a, TypeMAPPING> {
24237 let isPseudo = 1;
24238 let isCodeGenOnly = 1;
24239 }
24240 def S4_storeirh_io : HInst<
24241 (outs),
24242 (ins IntRegs:$Rs32, u6_1Imm:$Ii, s32_0Imm:$II),
24243 "memh($Rs32+#$Ii) = #$II",
24244 tc_05b6c987, TypeST>, Enc_a803e0, PredNewRel {
24245 let Inst{31-21} = 0b00111100001;
24246 let addrMode = BaseImmOffset;
24247 let accessSize = HalfWordAccess;
24248 let mayStore = 1;
24249 let CextOpcode = "S2_storerh";
24250 let InputType = "imm";
24251 let BaseOpcode = "S4_storeirh_io";
24252 let isPredicable = 1;
24253 let isExtendable = 1;
24254 let opExtendable = 2;
24255 let isExtentSigned = 1;
24256 let opExtentBits = 8;
24257 let opExtentAlign = 0;
24258 }
24259 def S4_storeirh_zomap : HInst<
24260 (outs),
24261 (ins IntRegs:$Rs32, s8_0Imm:$II),
24262 "memh($Rs32) = #$II",
24263 tc_05b6c987, TypeMAPPING> {
24264 let isPseudo = 1;
24265 let isCodeGenOnly = 1;
24266 }
24267 def S4_storeirhf_io : HInst<
24268 (outs),
24269 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_1Imm:$Ii, s32_0Imm:$II),
24270 "if (!$Pv4) memh($Rs32+#$Ii) = #$II",
24271 tc_8b15472a, TypeST>, Enc_f20719, PredNewRel {
24272 let Inst{31-21} = 0b00111000101;
24273 let isPredicated = 1;
24274 let isPredicatedFalse = 1;
24275 let addrMode = BaseImmOffset;
24276 let accessSize = HalfWordAccess;
24277 let mayStore = 1;
24278 let CextOpcode = "S2_storerh";
24279 let InputType = "imm";
24280 let BaseOpcode = "S4_storeirh_io";
24281 let isExtendable = 1;
24282 let opExtendable = 3;
24283 let isExtentSigned = 1;
24284 let opExtentBits = 6;
24285 let opExtentAlign = 0;
24286 }
24287 def S4_storeirhf_zomap : HInst<
24288 (outs),
24289 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24290 "if (!$Pv4) memh($Rs32) = #$II",
24291 tc_8b15472a, TypeMAPPING> {
24292 let isPseudo = 1;
24293 let isCodeGenOnly = 1;
24294 }
24295 def S4_storeirhfnew_io : HInst<
24296 (outs),
24297 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_1Imm:$Ii, s32_0Imm:$II),
24298 "if (!$Pv4.new) memh($Rs32+#$Ii) = #$II",
24299 tc_f86c328a, TypeST>, Enc_f20719, PredNewRel {
24300 let Inst{31-21} = 0b00111001101;
24301 let isPredicated = 1;
24302 let isPredicatedFalse = 1;
24303 let addrMode = BaseImmOffset;
24304 let accessSize = HalfWordAccess;
24305 let isPredicatedNew = 1;
24306 let mayStore = 1;
24307 let CextOpcode = "S2_storerh";
24308 let InputType = "imm";
24309 let BaseOpcode = "S4_storeirh_io";
24310 let isExtendable = 1;
24311 let opExtendable = 3;
24312 let isExtentSigned = 1;
24313 let opExtentBits = 6;
24314 let opExtentAlign = 0;
24315 }
24316 def S4_storeirhfnew_zomap : HInst<
24317 (outs),
24318 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24319 "if (!$Pv4.new) memh($Rs32) = #$II",
24320 tc_f86c328a, TypeMAPPING> {
24321 let isPseudo = 1;
24322 let isCodeGenOnly = 1;
24323 }
24324 def S4_storeirht_io : HInst<
24325 (outs),
24326 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_1Imm:$Ii, s32_0Imm:$II),
24327 "if ($Pv4) memh($Rs32+#$Ii) = #$II",
24328 tc_8b15472a, TypeST>, Enc_f20719, PredNewRel {
24329 let Inst{31-21} = 0b00111000001;
24330 let isPredicated = 1;
24331 let addrMode = BaseImmOffset;
24332 let accessSize = HalfWordAccess;
24333 let mayStore = 1;
24334 let CextOpcode = "S2_storerh";
24335 let InputType = "imm";
24336 let BaseOpcode = "S4_storeirh_io";
24337 let isExtendable = 1;
24338 let opExtendable = 3;
24339 let isExtentSigned = 1;
24340 let opExtentBits = 6;
24341 let opExtentAlign = 0;
24342 }
24343 def S4_storeirht_zomap : HInst<
24344 (outs),
24345 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24346 "if ($Pv4) memh($Rs32) = #$II",
24347 tc_8b15472a, TypeMAPPING> {
24348 let isPseudo = 1;
24349 let isCodeGenOnly = 1;
24350 }
24351 def S4_storeirhtnew_io : HInst<
24352 (outs),
24353 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_1Imm:$Ii, s32_0Imm:$II),
24354 "if ($Pv4.new) memh($Rs32+#$Ii) = #$II",
24355 tc_f86c328a, TypeST>, Enc_f20719, PredNewRel {
24356 let Inst{31-21} = 0b00111001001;
24357 let isPredicated = 1;
24358 let addrMode = BaseImmOffset;
24359 let accessSize = HalfWordAccess;
24360 let isPredicatedNew = 1;
24361 let mayStore = 1;
24362 let CextOpcode = "S2_storerh";
24363 let InputType = "imm";
24364 let BaseOpcode = "S4_storeirh_io";
24365 let isExtendable = 1;
24366 let opExtendable = 3;
24367 let isExtentSigned = 1;
24368 let opExtentBits = 6;
24369 let opExtentAlign = 0;
24370 }
24371 def S4_storeirhtnew_zomap : HInst<
24372 (outs),
24373 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24374 "if ($Pv4.new) memh($Rs32) = #$II",
24375 tc_f86c328a, TypeMAPPING> {
24376 let isPseudo = 1;
24377 let isCodeGenOnly = 1;
24378 }
24379 def S4_storeiri_io : HInst<
24380 (outs),
24381 (ins IntRegs:$Rs32, u6_2Imm:$Ii, s32_0Imm:$II),
24382 "memw($Rs32+#$Ii) = #$II",
24383 tc_05b6c987, TypeST>, Enc_f37377, PredNewRel {
24384 let Inst{31-21} = 0b00111100010;
24385 let addrMode = BaseImmOffset;
24386 let accessSize = WordAccess;
24387 let mayStore = 1;
24388 let CextOpcode = "S2_storeri";
24389 let InputType = "imm";
24390 let BaseOpcode = "S4_storeiri_io";
24391 let isPredicable = 1;
24392 let isExtendable = 1;
24393 let opExtendable = 2;
24394 let isExtentSigned = 1;
24395 let opExtentBits = 8;
24396 let opExtentAlign = 0;
24397 }
24398 def S4_storeiri_zomap : HInst<
24399 (outs),
24400 (ins IntRegs:$Rs32, s8_0Imm:$II),
24401 "memw($Rs32) = #$II",
24402 tc_05b6c987, TypeMAPPING> {
24403 let isPseudo = 1;
24404 let isCodeGenOnly = 1;
24405 }
24406 def S4_storeirif_io : HInst<
24407 (outs),
24408 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_2Imm:$Ii, s32_0Imm:$II),
24409 "if (!$Pv4) memw($Rs32+#$Ii) = #$II",
24410 tc_8b15472a, TypeST>, Enc_5ccba9, PredNewRel {
24411 let Inst{31-21} = 0b00111000110;
24412 let isPredicated = 1;
24413 let isPredicatedFalse = 1;
24414 let addrMode = BaseImmOffset;
24415 let accessSize = WordAccess;
24416 let mayStore = 1;
24417 let CextOpcode = "S2_storeri";
24418 let InputType = "imm";
24419 let BaseOpcode = "S4_storeiri_io";
24420 let isExtendable = 1;
24421 let opExtendable = 3;
24422 let isExtentSigned = 1;
24423 let opExtentBits = 6;
24424 let opExtentAlign = 0;
24425 }
24426 def S4_storeirif_zomap : HInst<
24427 (outs),
24428 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24429 "if (!$Pv4) memw($Rs32) = #$II",
24430 tc_8b15472a, TypeMAPPING> {
24431 let isPseudo = 1;
24432 let isCodeGenOnly = 1;
24433 }
24434 def S4_storeirifnew_io : HInst<
24435 (outs),
24436 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_2Imm:$Ii, s32_0Imm:$II),
24437 "if (!$Pv4.new) memw($Rs32+#$Ii) = #$II",
24438 tc_f86c328a, TypeST>, Enc_5ccba9, PredNewRel {
24439 let Inst{31-21} = 0b00111001110;
24440 let isPredicated = 1;
24441 let isPredicatedFalse = 1;
24442 let addrMode = BaseImmOffset;
24443 let accessSize = WordAccess;
24444 let isPredicatedNew = 1;
24445 let mayStore = 1;
24446 let CextOpcode = "S2_storeri";
24447 let InputType = "imm";
24448 let BaseOpcode = "S4_storeiri_io";
24449 let isExtendable = 1;
24450 let opExtendable = 3;
24451 let isExtentSigned = 1;
24452 let opExtentBits = 6;
24453 let opExtentAlign = 0;
24454 }
24455 def S4_storeirifnew_zomap : HInst<
24456 (outs),
24457 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24458 "if (!$Pv4.new) memw($Rs32) = #$II",
24459 tc_f86c328a, TypeMAPPING> {
24460 let isPseudo = 1;
24461 let isCodeGenOnly = 1;
24462 }
24463 def S4_storeirit_io : HInst<
24464 (outs),
24465 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_2Imm:$Ii, s32_0Imm:$II),
24466 "if ($Pv4) memw($Rs32+#$Ii) = #$II",
24467 tc_8b15472a, TypeST>, Enc_5ccba9, PredNewRel {
24468 let Inst{31-21} = 0b00111000010;
24469 let isPredicated = 1;
24470 let addrMode = BaseImmOffset;
24471 let accessSize = WordAccess;
24472 let mayStore = 1;
24473 let CextOpcode = "S2_storeri";
24474 let InputType = "imm";
24475 let BaseOpcode = "S4_storeiri_io";
24476 let isExtendable = 1;
24477 let opExtendable = 3;
24478 let isExtentSigned = 1;
24479 let opExtentBits = 6;
24480 let opExtentAlign = 0;
24481 }
24482 def S4_storeirit_zomap : HInst<
24483 (outs),
24484 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24485 "if ($Pv4) memw($Rs32) = #$II",
24486 tc_8b15472a, TypeMAPPING> {
24487 let isPseudo = 1;
24488 let isCodeGenOnly = 1;
24489 }
24490 def S4_storeiritnew_io : HInst<
24491 (outs),
24492 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_2Imm:$Ii, s32_0Imm:$II),
24493 "if ($Pv4.new) memw($Rs32+#$Ii) = #$II",
24494 tc_f86c328a, TypeST>, Enc_5ccba9, PredNewRel {
24495 let Inst{31-21} = 0b00111001010;
24496 let isPredicated = 1;
24497 let addrMode = BaseImmOffset;
24498 let accessSize = WordAccess;
24499 let isPredicatedNew = 1;
24500 let mayStore = 1;
24501 let CextOpcode = "S2_storeri";
24502 let InputType = "imm";
24503 let BaseOpcode = "S4_storeiri_io";
24504 let isExtendable = 1;
24505 let opExtendable = 3;
24506 let isExtentSigned = 1;
24507 let opExtentBits = 6;
24508 let opExtentAlign = 0;
24509 }
24510 def S4_storeiritnew_zomap : HInst<
24511 (outs),
24512 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24513 "if ($Pv4.new) memw($Rs32) = #$II",
24514 tc_f86c328a, TypeMAPPING> {
24515 let isPseudo = 1;
24516 let isCodeGenOnly = 1;
24517 }
24518 def S4_storerb_ap : HInst<
24519 (outs IntRegs:$Re32),
24520 (ins u32_0Imm:$II, IntRegs:$Rt32),
24521 "memb($Re32=#$II) = $Rt32",
24522 tc_66888ded, TypeST>, Enc_8bcba4, AddrModeRel {
24523 let Inst{7-6} = 0b10;
24524 let Inst{13-13} = 0b0;
24525 let Inst{31-21} = 0b10101011000;
24526 let addrMode = AbsoluteSet;
24527 let accessSize = ByteAccess;
24528 let isExtended = 1;
24529 let mayStore = 1;
24530 let BaseOpcode = "S2_storerb_ap";
24531 let isNVStorable = 1;
24532 let DecoderNamespace = "MustExtend";
24533 let isExtendable = 1;
24534 let opExtendable = 1;
24535 let isExtentSigned = 0;
24536 let opExtentBits = 6;
24537 let opExtentAlign = 0;
24538 }
24539 def S4_storerb_rr : HInst<
24540 (outs),
24541 (ins IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
24542 "memb($Rs32+$Ru32<<#$Ii) = $Rt32",
24543 tc_d9709180, TypeST>, Enc_eca7c8, AddrModeRel, ImmRegShl {
24544 let Inst{6-5} = 0b00;
24545 let Inst{31-21} = 0b00111011000;
24546 let addrMode = BaseRegOffset;
24547 let accessSize = ByteAccess;
24548 let mayStore = 1;
24549 let CextOpcode = "S2_storerb";
24550 let InputType = "reg";
24551 let BaseOpcode = "S4_storerb_rr";
24552 let isNVStorable = 1;
24553 let isPredicable = 1;
24554 }
24555 def S4_storerb_ur : HInst<
24556 (outs),
24557 (ins IntRegs:$Ru32, u2_0Imm:$Ii, u32_0Imm:$II, IntRegs:$Rt32),
24558 "memb($Ru32<<#$Ii+#$II) = $Rt32",
24559 tc_0dc560de, TypeST>, Enc_9ea4cf, AddrModeRel, ImmRegShl {
24560 let Inst{7-7} = 0b1;
24561 let Inst{31-21} = 0b10101101000;
24562 let addrMode = BaseLongOffset;
24563 let accessSize = ByteAccess;
24564 let isExtended = 1;
24565 let mayStore = 1;
24566 let CextOpcode = "S2_storerb";
24567 let InputType = "imm";
24568 let BaseOpcode = "S4_storerb_ur";
24569 let isNVStorable = 1;
24570 let DecoderNamespace = "MustExtend";
24571 let isExtendable = 1;
24572 let opExtendable = 2;
24573 let isExtentSigned = 0;
24574 let opExtentBits = 6;
24575 let opExtentAlign = 0;
24576 }
24577 def S4_storerbnew_ap : HInst<
24578 (outs IntRegs:$Re32),
24579 (ins u32_0Imm:$II, IntRegs:$Nt8),
24580 "memb($Re32=#$II) = $Nt8.new",
24581 tc_53bdb2f6, TypeST>, Enc_724154, AddrModeRel {
24582 let Inst{7-6} = 0b10;
24583 let Inst{13-11} = 0b000;
24584 let Inst{31-21} = 0b10101011101;
24585 let addrMode = AbsoluteSet;
24586 let accessSize = ByteAccess;
24587 let isNVStore = 1;
24588 let isNewValue = 1;
24589 let isExtended = 1;
24590 let isRestrictNoSlot1Store = 1;
24591 let mayStore = 1;
24592 let BaseOpcode = "S2_storerb_ap";
24593 let DecoderNamespace = "MustExtend";
24594 let isExtendable = 1;
24595 let opExtendable = 1;
24596 let isExtentSigned = 0;
24597 let opExtentBits = 6;
24598 let opExtentAlign = 0;
24599 let opNewValue = 2;
24600 }
24601 def S4_storerbnew_rr : HInst<
24602 (outs),
24603 (ins IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
24604 "memb($Rs32+$Ru32<<#$Ii) = $Nt8.new",
24605 tc_b166348b, TypeST>, Enc_c6220b, AddrModeRel {
24606 let Inst{6-3} = 0b0000;
24607 let Inst{31-21} = 0b00111011101;
24608 let addrMode = BaseRegOffset;
24609 let accessSize = ByteAccess;
24610 let isNVStore = 1;
24611 let isNewValue = 1;
24612 let isRestrictNoSlot1Store = 1;
24613 let mayStore = 1;
24614 let CextOpcode = "S2_storerb";
24615 let InputType = "reg";
24616 let BaseOpcode = "S4_storerb_rr";
24617 let isPredicable = 1;
24618 let opNewValue = 3;
24619 }
24620 def S4_storerbnew_ur : HInst<
24621 (outs),
24622 (ins IntRegs:$Ru32, u2_0Imm:$Ii, u32_0Imm:$II, IntRegs:$Nt8),
24623 "memb($Ru32<<#$Ii+#$II) = $Nt8.new",
24624 tc_a8acdac0, TypeST>, Enc_7eb485, AddrModeRel {
24625 let Inst{7-7} = 0b1;
24626 let Inst{12-11} = 0b00;
24627 let Inst{31-21} = 0b10101101101;
24628 let addrMode = BaseLongOffset;
24629 let accessSize = ByteAccess;
24630 let isNVStore = 1;
24631 let isNewValue = 1;
24632 let isExtended = 1;
24633 let isRestrictNoSlot1Store = 1;
24634 let mayStore = 1;
24635 let CextOpcode = "S2_storerb";
24636 let BaseOpcode = "S4_storerb_ur";
24637 let DecoderNamespace = "MustExtend";
24638 let isExtendable = 1;
24639 let opExtendable = 2;
24640 let isExtentSigned = 0;
24641 let opExtentBits = 6;
24642 let opExtentAlign = 0;
24643 let opNewValue = 3;
24644 }
24645 def S4_storerd_ap : HInst<
24646 (outs IntRegs:$Re32),
24647 (ins u32_0Imm:$II, DoubleRegs:$Rtt32),
24648 "memd($Re32=#$II) = $Rtt32",
24649 tc_66888ded, TypeST>, Enc_c7a204 {
24650 let Inst{7-6} = 0b10;
24651 let Inst{13-13} = 0b0;
24652 let Inst{31-21} = 0b10101011110;
24653 let addrMode = AbsoluteSet;
24654 let accessSize = DoubleWordAccess;
24655 let isExtended = 1;
24656 let mayStore = 1;
24657 let BaseOpcode = "S4_storerd_ap";
24658 let DecoderNamespace = "MustExtend";
24659 let isExtendable = 1;
24660 let opExtendable = 1;
24661 let isExtentSigned = 0;
24662 let opExtentBits = 6;
24663 let opExtentAlign = 0;
24664 }
24665 def S4_storerd_rr : HInst<
24666 (outs),
24667 (ins IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, DoubleRegs:$Rtt32),
24668 "memd($Rs32+$Ru32<<#$Ii) = $Rtt32",
24669 tc_d9709180, TypeST>, Enc_55355c, AddrModeRel, ImmRegShl {
24670 let Inst{6-5} = 0b00;
24671 let Inst{31-21} = 0b00111011110;
24672 let addrMode = BaseRegOffset;
24673 let accessSize = DoubleWordAccess;
24674 let mayStore = 1;
24675 let CextOpcode = "S2_storerd";
24676 let InputType = "reg";
24677 let BaseOpcode = "S2_storerd_rr";
24678 let isPredicable = 1;
24679 }
24680 def S4_storerd_ur : HInst<
24681 (outs),
24682 (ins IntRegs:$Ru32, u2_0Imm:$Ii, u32_0Imm:$II, DoubleRegs:$Rtt32),
24683 "memd($Ru32<<#$Ii+#$II) = $Rtt32",
24684 tc_0dc560de, TypeST>, Enc_f79415, AddrModeRel, ImmRegShl {
24685 let Inst{7-7} = 0b1;
24686 let Inst{31-21} = 0b10101101110;
24687 let addrMode = BaseLongOffset;
24688 let accessSize = DoubleWordAccess;
24689 let isExtended = 1;
24690 let mayStore = 1;
24691 let CextOpcode = "S2_storerd";
24692 let InputType = "imm";
24693 let BaseOpcode = "S2_storerd_ur";
24694 let DecoderNamespace = "MustExtend";
24695 let isExtendable = 1;
24696 let opExtendable = 2;
24697 let isExtentSigned = 0;
24698 let opExtentBits = 6;
24699 let opExtentAlign = 0;
24700 }
24701 def S4_storerf_ap : HInst<
24702 (outs IntRegs:$Re32),
24703 (ins u32_0Imm:$II, IntRegs:$Rt32),
24704 "memh($Re32=#$II) = $Rt32.h",
24705 tc_66888ded, TypeST>, Enc_8bcba4 {
24706 let Inst{7-6} = 0b10;
24707 let Inst{13-13} = 0b0;
24708 let Inst{31-21} = 0b10101011011;
24709 let addrMode = AbsoluteSet;
24710 let accessSize = HalfWordAccess;
24711 let isExtended = 1;
24712 let mayStore = 1;
24713 let BaseOpcode = "S4_storerf_ap";
24714 let DecoderNamespace = "MustExtend";
24715 let isExtendable = 1;
24716 let opExtendable = 1;
24717 let isExtentSigned = 0;
24718 let opExtentBits = 6;
24719 let opExtentAlign = 0;
24720 }
24721 def S4_storerf_rr : HInst<
24722 (outs),
24723 (ins IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
24724 "memh($Rs32+$Ru32<<#$Ii) = $Rt32.h",
24725 tc_d9709180, TypeST>, Enc_eca7c8, AddrModeRel, ImmRegShl {
24726 let Inst{6-5} = 0b00;
24727 let Inst{31-21} = 0b00111011011;
24728 let addrMode = BaseRegOffset;
24729 let accessSize = HalfWordAccess;
24730 let mayStore = 1;
24731 let CextOpcode = "S2_storerf";
24732 let InputType = "reg";
24733 let BaseOpcode = "S4_storerf_rr";
24734 let isPredicable = 1;
24735 }
24736 def S4_storerf_ur : HInst<
24737 (outs),
24738 (ins IntRegs:$Ru32, u2_0Imm:$Ii, u32_0Imm:$II, IntRegs:$Rt32),
24739 "memh($Ru32<<#$Ii+#$II) = $Rt32.h",
24740 tc_0dc560de, TypeST>, Enc_9ea4cf, AddrModeRel, ImmRegShl {
24741 let Inst{7-7} = 0b1;
24742 let Inst{31-21} = 0b10101101011;
24743 let addrMode = BaseLongOffset;
24744 let accessSize = HalfWordAccess;
24745 let isExtended = 1;
24746 let mayStore = 1;
24747 let CextOpcode = "S2_storerf";
24748 let InputType = "imm";
24749 let BaseOpcode = "S4_storerf_rr";
24750 let DecoderNamespace = "MustExtend";
24751 let isExtendable = 1;
24752 let opExtendable = 2;
24753 let isExtentSigned = 0;
24754 let opExtentBits = 6;
24755 let opExtentAlign = 0;
24756 }
24757 def S4_storerh_ap : HInst<
24758 (outs IntRegs:$Re32),
24759 (ins u32_0Imm:$II, IntRegs:$Rt32),
24760 "memh($Re32=#$II) = $Rt32",
24761 tc_66888ded, TypeST>, Enc_8bcba4, AddrModeRel {
24762 let Inst{7-6} = 0b10;
24763 let Inst{13-13} = 0b0;
24764 let Inst{31-21} = 0b10101011010;
24765 let addrMode = AbsoluteSet;
24766 let accessSize = HalfWordAccess;
24767 let isExtended = 1;
24768 let mayStore = 1;
24769 let BaseOpcode = "S2_storerh_ap";
24770 let isNVStorable = 1;
24771 let DecoderNamespace = "MustExtend";
24772 let isExtendable = 1;
24773 let opExtendable = 1;
24774 let isExtentSigned = 0;
24775 let opExtentBits = 6;
24776 let opExtentAlign = 0;
24777 }
24778 def S4_storerh_rr : HInst<
24779 (outs),
24780 (ins IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
24781 "memh($Rs32+$Ru32<<#$Ii) = $Rt32",
24782 tc_d9709180, TypeST>, Enc_eca7c8, AddrModeRel, ImmRegShl {
24783 let Inst{6-5} = 0b00;
24784 let Inst{31-21} = 0b00111011010;
24785 let addrMode = BaseRegOffset;
24786 let accessSize = HalfWordAccess;
24787 let mayStore = 1;
24788 let CextOpcode = "S2_storerh";
24789 let InputType = "reg";
24790 let BaseOpcode = "S2_storerh_rr";
24791 let isNVStorable = 1;
24792 let isPredicable = 1;
24793 }
24794 def S4_storerh_ur : HInst<
24795 (outs),
24796 (ins IntRegs:$Ru32, u2_0Imm:$Ii, u32_0Imm:$II, IntRegs:$Rt32),
24797 "memh($Ru32<<#$Ii+#$II) = $Rt32",
24798 tc_0dc560de, TypeST>, Enc_9ea4cf, AddrModeRel, ImmRegShl {
24799 let Inst{7-7} = 0b1;
24800 let Inst{31-21} = 0b10101101010;
24801 let addrMode = BaseLongOffset;
24802 let accessSize = HalfWordAccess;
24803 let isExtended = 1;
24804 let mayStore = 1;
24805 let CextOpcode = "S2_storerh";
24806 let InputType = "imm";
24807 let BaseOpcode = "S2_storerh_ur";
24808 let isNVStorable = 1;
24809 let DecoderNamespace = "MustExtend";
24810 let isExtendable = 1;
24811 let opExtendable = 2;
24812 let isExtentSigned = 0;
24813 let opExtentBits = 6;
24814 let opExtentAlign = 0;
24815 }
24816 def S4_storerhnew_ap : HInst<
24817 (outs IntRegs:$Re32),
24818 (ins u32_0Imm:$II, IntRegs:$Nt8),
24819 "memh($Re32=#$II) = $Nt8.new",
24820 tc_53bdb2f6, TypeST>, Enc_724154, AddrModeRel {
24821 let Inst{7-6} = 0b10;
24822 let Inst{13-11} = 0b001;
24823 let Inst{31-21} = 0b10101011101;
24824 let addrMode = AbsoluteSet;
24825 let accessSize = HalfWordAccess;
24826 let isNVStore = 1;
24827 let isNewValue = 1;
24828 let isExtended = 1;
24829 let isRestrictNoSlot1Store = 1;
24830 let mayStore = 1;
24831 let BaseOpcode = "S2_storerh_ap";
24832 let DecoderNamespace = "MustExtend";
24833 let isExtendable = 1;
24834 let opExtendable = 1;
24835 let isExtentSigned = 0;
24836 let opExtentBits = 6;
24837 let opExtentAlign = 0;
24838 let opNewValue = 2;
24839 }
24840 def S4_storerhnew_rr : HInst<
24841 (outs),
24842 (ins IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
24843 "memh($Rs32+$Ru32<<#$Ii) = $Nt8.new",
24844 tc_b166348b, TypeST>, Enc_c6220b, AddrModeRel {
24845 let Inst{6-3} = 0b0001;
24846 let Inst{31-21} = 0b00111011101;
24847 let addrMode = BaseRegOffset;
24848 let accessSize = HalfWordAccess;
24849 let isNVStore = 1;
24850 let isNewValue = 1;
24851 let isRestrictNoSlot1Store = 1;
24852 let mayStore = 1;
24853 let CextOpcode = "S2_storerh";
24854 let InputType = "reg";
24855 let BaseOpcode = "S2_storerh_rr";
24856 let isPredicable = 1;
24857 let opNewValue = 3;
24858 }
24859 def S4_storerhnew_ur : HInst<
24860 (outs),
24861 (ins IntRegs:$Ru32, u2_0Imm:$Ii, u32_0Imm:$II, IntRegs:$Nt8),
24862 "memh($Ru32<<#$Ii+#$II) = $Nt8.new",
24863 tc_a8acdac0, TypeST>, Enc_7eb485, AddrModeRel {
24864 let Inst{7-7} = 0b1;
24865 let Inst{12-11} = 0b01;
24866 let Inst{31-21} = 0b10101101101;
24867 let addrMode = BaseLongOffset;
24868 let accessSize = HalfWordAccess;
24869 let isNVStore = 1;
24870 let isNewValue = 1;
24871 let isExtended = 1;
24872 let isRestrictNoSlot1Store = 1;
24873 let mayStore = 1;
24874 let CextOpcode = "S2_storerh";
24875 let BaseOpcode = "S2_storerh_ur";
24876 let DecoderNamespace = "MustExtend";
24877 let isExtendable = 1;
24878 let opExtendable = 2;
24879 let isExtentSigned = 0;
24880 let opExtentBits = 6;
24881 let opExtentAlign = 0;
24882 let opNewValue = 3;
24883 }
24884 def S4_storeri_ap : HInst<
24885 (outs IntRegs:$Re32),
24886 (ins u32_0Imm:$II, IntRegs:$Rt32),
24887 "memw($Re32=#$II) = $Rt32",
24888 tc_66888ded, TypeST>, Enc_8bcba4, AddrModeRel {
24889 let Inst{7-6} = 0b10;
24890 let Inst{13-13} = 0b0;
24891 let Inst{31-21} = 0b10101011100;
24892 let addrMode = AbsoluteSet;
24893 let accessSize = WordAccess;
24894 let isExtended = 1;
24895 let mayStore = 1;
24896 let BaseOpcode = "S2_storeri_ap";
24897 let isNVStorable = 1;
24898 let DecoderNamespace = "MustExtend";
24899 let isExtendable = 1;
24900 let opExtendable = 1;
24901 let isExtentSigned = 0;
24902 let opExtentBits = 6;
24903 let opExtentAlign = 0;
24904 }
24905 def S4_storeri_rr : HInst<
24906 (outs),
24907 (ins IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
24908 "memw($Rs32+$Ru32<<#$Ii) = $Rt32",
24909 tc_d9709180, TypeST>, Enc_eca7c8, AddrModeRel, ImmRegShl {
24910 let Inst{6-5} = 0b00;
24911 let Inst{31-21} = 0b00111011100;
24912 let addrMode = BaseRegOffset;
24913 let accessSize = WordAccess;
24914 let mayStore = 1;
24915 let CextOpcode = "S2_storeri";
24916 let InputType = "reg";
24917 let BaseOpcode = "S2_storeri_rr";
24918 let isNVStorable = 1;
24919 let isPredicable = 1;
24920 }
24921 def S4_storeri_ur : HInst<
24922 (outs),
24923 (ins IntRegs:$Ru32, u2_0Imm:$Ii, u32_0Imm:$II, IntRegs:$Rt32),
24924 "memw($Ru32<<#$Ii+#$II) = $Rt32",
24925 tc_0dc560de, TypeST>, Enc_9ea4cf, AddrModeRel, ImmRegShl {
24926 let Inst{7-7} = 0b1;
24927 let Inst{31-21} = 0b10101101100;
24928 let addrMode = BaseLongOffset;
24929 let accessSize = WordAccess;
24930 let isExtended = 1;
24931 let mayStore = 1;
24932 let CextOpcode = "S2_storeri";
24933 let InputType = "imm";
24934 let BaseOpcode = "S2_storeri_ur";
24935 let isNVStorable = 1;
24936 let DecoderNamespace = "MustExtend";
24937 let isExtendable = 1;
24938 let opExtendable = 2;
24939 let isExtentSigned = 0;
24940 let opExtentBits = 6;
24941 let opExtentAlign = 0;
24942 }
24943 def S4_storerinew_ap : HInst<
24944 (outs IntRegs:$Re32),
24945 (ins u32_0Imm:$II, IntRegs:$Nt8),
24946 "memw($Re32=#$II) = $Nt8.new",
24947 tc_53bdb2f6, TypeST>, Enc_724154, AddrModeRel {
24948 let Inst{7-6} = 0b10;
24949 let Inst{13-11} = 0b010;
24950 let Inst{31-21} = 0b10101011101;
24951 let addrMode = AbsoluteSet;
24952 let accessSize = WordAccess;
24953 let isNVStore = 1;
24954 let isNewValue = 1;
24955 let isExtended = 1;
24956 let isRestrictNoSlot1Store = 1;
24957 let mayStore = 1;
24958 let BaseOpcode = "S2_storeri_ap";
24959 let DecoderNamespace = "MustExtend";
24960 let isExtendable = 1;
24961 let opExtendable = 1;
24962 let isExtentSigned = 0;
24963 let opExtentBits = 6;
24964 let opExtentAlign = 0;
24965 let opNewValue = 2;
24966 }
24967 def S4_storerinew_rr : HInst<
24968 (outs),
24969 (ins IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
24970 "memw($Rs32+$Ru32<<#$Ii) = $Nt8.new",
24971 tc_b166348b, TypeST>, Enc_c6220b, AddrModeRel {
24972 let Inst{6-3} = 0b0010;
24973 let Inst{31-21} = 0b00111011101;
24974 let addrMode = BaseRegOffset;
24975 let accessSize = WordAccess;
24976 let isNVStore = 1;
24977 let isNewValue = 1;
24978 let isRestrictNoSlot1Store = 1;
24979 let mayStore = 1;
24980 let CextOpcode = "S2_storeri";
24981 let InputType = "reg";
24982 let BaseOpcode = "S2_storeri_rr";
24983 let isPredicable = 1;
24984 let opNewValue = 3;
24985 }
24986 def S4_storerinew_ur : HInst<
24987 (outs),
24988 (ins IntRegs:$Ru32, u2_0Imm:$Ii, u32_0Imm:$II, IntRegs:$Nt8),
24989 "memw($Ru32<<#$Ii+#$II) = $Nt8.new",
24990 tc_a8acdac0, TypeST>, Enc_7eb485, AddrModeRel {
24991 let Inst{7-7} = 0b1;
24992 let Inst{12-11} = 0b10;
24993 let Inst{31-21} = 0b10101101101;
24994 let addrMode = BaseLongOffset;
24995 let accessSize = WordAccess;
24996 let isNVStore = 1;
24997 let isNewValue = 1;
24998 let isExtended = 1;
24999 let isRestrictNoSlot1Store = 1;
25000 let mayStore = 1;
25001 let CextOpcode = "S2_storeri";
25002 let BaseOpcode = "S2_storeri_ur";
25003 let DecoderNamespace = "MustExtend";
25004 let isExtendable = 1;
25005 let opExtendable = 2;
25006 let isExtentSigned = 0;
25007 let opExtentBits = 6;
25008 let opExtentAlign = 0;
25009 let opNewValue = 3;
25010 }
25011 def S4_subaddi : HInst<
25012 (outs IntRegs:$Rd32),
25013 (ins IntRegs:$Rs32, s32_0Imm:$Ii, IntRegs:$Ru32),
25014 "$Rd32 = add($Rs32,sub(#$Ii,$Ru32))",
25015 tc_c74f796f, TypeALU64>, Enc_8b8d61 {
25016 let Inst{31-23} = 0b110110111;
25017 let hasNewValue = 1;
25018 let opNewValue = 0;
25019 let prefersSlot3 = 1;
25020 let isExtendable = 1;
25021 let opExtendable = 2;
25022 let isExtentSigned = 1;
25023 let opExtentBits = 6;
25024 let opExtentAlign = 0;
25025 }
25026 def S4_subi_asl_ri : HInst<
25027 (outs IntRegs:$Rx32),
25028 (ins u32_0Imm:$Ii, IntRegs:$Rx32in, u5_0Imm:$II),
25029 "$Rx32 = sub(#$Ii,asl($Rx32in,#$II))",
25030 tc_c74f796f, TypeALU64>, Enc_c31910 {
25031 let Inst{2-0} = 0b110;
25032 let Inst{4-4} = 0b0;
25033 let Inst{31-24} = 0b11011110;
25034 let hasNewValue = 1;
25035 let opNewValue = 0;
25036 let prefersSlot3 = 1;
25037 let isExtendable = 1;
25038 let opExtendable = 1;
25039 let isExtentSigned = 0;
25040 let opExtentBits = 8;
25041 let opExtentAlign = 0;
25042 let Constraints = "$Rx32 = $Rx32in";
25043 }
25044 def S4_subi_lsr_ri : HInst<
25045 (outs IntRegs:$Rx32),
25046 (ins u32_0Imm:$Ii, IntRegs:$Rx32in, u5_0Imm:$II),
25047 "$Rx32 = sub(#$Ii,lsr($Rx32in,#$II))",
25048 tc_c74f796f, TypeALU64>, Enc_c31910 {
25049 let Inst{2-0} = 0b110;
25050 let Inst{4-4} = 0b1;
25051 let Inst{31-24} = 0b11011110;
25052 let hasNewValue = 1;
25053 let opNewValue = 0;
25054 let prefersSlot3 = 1;
25055 let isExtendable = 1;
25056 let opExtendable = 1;
25057 let isExtentSigned = 0;
25058 let opExtentBits = 8;
25059 let opExtentAlign = 0;
25060 let Constraints = "$Rx32 = $Rx32in";
25061 }
25062 def S4_vrcrotate : HInst<
25063 (outs DoubleRegs:$Rdd32),
25064 (ins DoubleRegs:$Rss32, IntRegs:$Rt32, u2_0Imm:$Ii),
25065 "$Rdd32 = vrcrotate($Rss32,$Rt32,#$Ii)",
25066 tc_b9c0b731, TypeS_3op>, Enc_645d54 {
25067 let Inst{7-6} = 0b11;
25068 let Inst{31-21} = 0b11000011110;
25069 let prefersSlot3 = 1;
25070 }
25071 def S4_vrcrotate_acc : HInst<
25072 (outs DoubleRegs:$Rxx32),
25073 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32, u2_0Imm:$Ii),
25074 "$Rxx32 += vrcrotate($Rss32,$Rt32,#$Ii)",
25075 tc_60571023, TypeS_3op>, Enc_b72622 {
25076 let Inst{7-6} = 0b00;
25077 let Inst{31-21} = 0b11001011101;
25078 let prefersSlot3 = 1;
25079 let Constraints = "$Rxx32 = $Rxx32in";
25080 }
25081 def S4_vxaddsubh : HInst<
25082 (outs DoubleRegs:$Rdd32),
25083 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
25084 "$Rdd32 = vxaddsubh($Rss32,$Rtt32):sat",
25085 tc_b44c6e2a, TypeS_3op>, Enc_a56825 {
25086 let Inst{7-5} = 0b100;
25087 let Inst{13-13} = 0b0;
25088 let Inst{31-21} = 0b11000001010;
25089 let prefersSlot3 = 1;
25090 let Defs = [USR_OVF];
25091 }
25092 def S4_vxaddsubhr : HInst<
25093 (outs DoubleRegs:$Rdd32),
25094 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
25095 "$Rdd32 = vxaddsubh($Rss32,$Rtt32):rnd:>>1:sat",
25096 tc_2b6f77c6, TypeS_3op>, Enc_a56825 {
25097 let Inst{7-5} = 0b000;
25098 let Inst{13-13} = 0b0;
25099 let Inst{31-21} = 0b11000001110;
25100 let prefersSlot3 = 1;
25101 let Defs = [USR_OVF];
25102 }
25103 def S4_vxaddsubw : HInst<
25104 (outs DoubleRegs:$Rdd32),
25105 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
25106 "$Rdd32 = vxaddsubw($Rss32,$Rtt32):sat",
25107 tc_b44c6e2a, TypeS_3op>, Enc_a56825 {
25108 let Inst{7-5} = 0b000;
25109 let Inst{13-13} = 0b0;
25110 let Inst{31-21} = 0b11000001010;
25111 let prefersSlot3 = 1;
25112 let Defs = [USR_OVF];
25113 }
25114 def S4_vxsubaddh : HInst<
25115 (outs DoubleRegs:$Rdd32),
25116 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
25117 "$Rdd32 = vxsubaddh($Rss32,$Rtt32):sat",
25118 tc_b44c6e2a, TypeS_3op>, Enc_a56825 {
25119 let Inst{7-5} = 0b110;
25120 let Inst{13-13} = 0b0;
25121 let Inst{31-21} = 0b11000001010;
25122 let prefersSlot3 = 1;
25123 let Defs = [USR_OVF];
25124 }
25125 def S4_vxsubaddhr : HInst<
25126 (outs DoubleRegs:$Rdd32),
25127 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
25128 "$Rdd32 = vxsubaddh($Rss32,$Rtt32):rnd:>>1:sat",
25129 tc_2b6f77c6, TypeS_3op>, Enc_a56825 {
25130 let Inst{7-5} = 0b010;
25131 let Inst{13-13} = 0b0;
25132 let Inst{31-21} = 0b11000001110;
25133 let prefersSlot3 = 1;
25134 let Defs = [USR_OVF];
25135 }
25136 def S4_vxsubaddw : HInst<
25137 (outs DoubleRegs:$Rdd32),
25138 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
25139 "$Rdd32 = vxsubaddw($Rss32,$Rtt32):sat",
25140 tc_b44c6e2a, TypeS_3op>, Enc_a56825 {
25141 let Inst{7-5} = 0b010;
25142 let Inst{13-13} = 0b0;
25143 let Inst{31-21} = 0b11000001010;
25144 let prefersSlot3 = 1;
25145 let Defs = [USR_OVF];
25146 }
25147 def S5_asrhub_rnd_sat : HInst<
25148 (outs IntRegs:$Rd32),
25149 (ins DoubleRegs:$Rss32, u4_0Imm:$Ii),
25150 "$Rd32 = vasrhub($Rss32,#$Ii):raw",
25151 tc_2b6f77c6, TypeS_2op>, Enc_11a146, Requires<[HasV5]> {
25152 let Inst{7-5} = 0b100;
25153 let Inst{13-12} = 0b00;
25154 let Inst{31-21} = 0b10001000011;
25155 let hasNewValue = 1;
25156 let opNewValue = 0;
25157 let prefersSlot3 = 1;
25158 let Defs = [USR_OVF];
25159 }
25160 def S5_asrhub_rnd_sat_goodsyntax : HInst<
25161 (outs IntRegs:$Rd32),
25162 (ins DoubleRegs:$Rss32, u4_0Imm:$Ii),
25163 "$Rd32 = vasrhub($Rss32,#$Ii):rnd:sat",
25164 tc_2b6f77c6, TypeS_2op>, Requires<[HasV5]> {
25165 let hasNewValue = 1;
25166 let opNewValue = 0;
25167 let isPseudo = 1;
25168 }
25169 def S5_asrhub_sat : HInst<
25170 (outs IntRegs:$Rd32),
25171 (ins DoubleRegs:$Rss32, u4_0Imm:$Ii),
25172 "$Rd32 = vasrhub($Rss32,#$Ii):sat",
25173 tc_2b6f77c6, TypeS_2op>, Enc_11a146, Requires<[HasV5]> {
25174 let Inst{7-5} = 0b101;
25175 let Inst{13-12} = 0b00;
25176 let Inst{31-21} = 0b10001000011;
25177 let hasNewValue = 1;
25178 let opNewValue = 0;
25179 let prefersSlot3 = 1;
25180 let Defs = [USR_OVF];
25181 }
25182 def S5_popcountp : HInst<
25183 (outs IntRegs:$Rd32),
25184 (ins DoubleRegs:$Rss32),
25185 "$Rd32 = popcount($Rss32)",
25186 tc_00afc57e, TypeS_2op>, Enc_90cd8b, Requires<[HasV5]> {
25187 let Inst{13-5} = 0b000000011;
25188 let Inst{31-21} = 0b10001000011;
25189 let hasNewValue = 1;
25190 let opNewValue = 0;
25191 let prefersSlot3 = 1;
25192 }
25193 def S5_vasrhrnd : HInst<
25194 (outs DoubleRegs:$Rdd32),
25195 (ins DoubleRegs:$Rss32, u4_0Imm:$Ii),
25196 "$Rdd32 = vasrh($Rss32,#$Ii):raw",
25197 tc_2b6f77c6, TypeS_2op>, Enc_12b6e9, Requires<[HasV5]> {
25198 let Inst{7-5} = 0b000;
25199 let Inst{13-12} = 0b00;
25200 let Inst{31-21} = 0b10000000001;
25201 let prefersSlot3 = 1;
25202 }
25203 def S5_vasrhrnd_goodsyntax : HInst<
25204 (outs DoubleRegs:$Rdd32),
25205 (ins DoubleRegs:$Rss32, u4_0Imm:$Ii),
25206 "$Rdd32 = vasrh($Rss32,#$Ii):rnd",
25207 tc_2b6f77c6, TypeS_2op>, Requires<[HasV5]> {
25208 let isPseudo = 1;
25209 }
25210 def S6_allocframe_to_raw : HInst<
25211 (outs),
25212 (ins u11_3Imm:$Ii),
25213 "allocframe(#$Ii)",
25214 tc_e216a5db, TypeMAPPING>, Requires<[HasV65]> {
25215 let isPseudo = 1;
25216 let isCodeGenOnly = 1;
25217 }
25218 def S6_rol_i_p : HInst<
25219 (outs DoubleRegs:$Rdd32),
25220 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii),
25221 "$Rdd32 = rol($Rss32,#$Ii)",
25222 tc_55050d58, TypeS_2op>, Enc_5eac98, Requires<[HasV60]> {
25223 let Inst{7-5} = 0b011;
25224 let Inst{31-21} = 0b10000000000;
25225 }
25226 def S6_rol_i_p_acc : HInst<
25227 (outs DoubleRegs:$Rxx32),
25228 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
25229 "$Rxx32 += rol($Rss32,#$Ii)",
25230 tc_41d5298e, TypeS_2op>, Enc_70fb07, Requires<[HasV60]> {
25231 let Inst{7-5} = 0b111;
25232 let Inst{31-21} = 0b10000010000;
25233 let prefersSlot3 = 1;
25234 let Constraints = "$Rxx32 = $Rxx32in";
25235 }
25236 def S6_rol_i_p_and : HInst<
25237 (outs DoubleRegs:$Rxx32),
25238 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
25239 "$Rxx32 &= rol($Rss32,#$Ii)",
25240 tc_41d5298e, TypeS_2op>, Enc_70fb07, Requires<[HasV60]> {
25241 let Inst{7-5} = 0b011;
25242 let Inst{31-21} = 0b10000010010;
25243 let prefersSlot3 = 1;
25244 let Constraints = "$Rxx32 = $Rxx32in";
25245 }
25246 def S6_rol_i_p_nac : HInst<
25247 (outs DoubleRegs:$Rxx32),
25248 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
25249 "$Rxx32 -= rol($Rss32,#$Ii)",
25250 tc_41d5298e, TypeS_2op>, Enc_70fb07, Requires<[HasV60]> {
25251 let Inst{7-5} = 0b011;
25252 let Inst{31-21} = 0b10000010000;
25253 let prefersSlot3 = 1;
25254 let Constraints = "$Rxx32 = $Rxx32in";
25255 }
25256 def S6_rol_i_p_or : HInst<
25257 (outs DoubleRegs:$Rxx32),
25258 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
25259 "$Rxx32 |= rol($Rss32,#$Ii)",
25260 tc_41d5298e, TypeS_2op>, Enc_70fb07, Requires<[HasV60]> {
25261 let Inst{7-5} = 0b111;
25262 let Inst{31-21} = 0b10000010010;
25263 let prefersSlot3 = 1;
25264 let Constraints = "$Rxx32 = $Rxx32in";
25265 }
25266 def S6_rol_i_p_xacc : HInst<
25267 (outs DoubleRegs:$Rxx32),
25268 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
25269 "$Rxx32 ^= rol($Rss32,#$Ii)",
25270 tc_41d5298e, TypeS_2op>, Enc_70fb07, Requires<[HasV60]> {
25271 let Inst{7-5} = 0b011;
25272 let Inst{31-21} = 0b10000010100;
25273 let prefersSlot3 = 1;
25274 let Constraints = "$Rxx32 = $Rxx32in";
25275 }
25276 def S6_rol_i_r : HInst<
25277 (outs IntRegs:$Rd32),
25278 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
25279 "$Rd32 = rol($Rs32,#$Ii)",
25280 tc_55050d58, TypeS_2op>, Enc_a05677, Requires<[HasV60]> {
25281 let Inst{7-5} = 0b011;
25282 let Inst{13-13} = 0b0;
25283 let Inst{31-21} = 0b10001100000;
25284 let hasNewValue = 1;
25285 let opNewValue = 0;
25286 }
25287 def S6_rol_i_r_acc : HInst<
25288 (outs IntRegs:$Rx32),
25289 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
25290 "$Rx32 += rol($Rs32,#$Ii)",
25291 tc_41d5298e, TypeS_2op>, Enc_28a2dc, Requires<[HasV60]> {
25292 let Inst{7-5} = 0b111;
25293 let Inst{13-13} = 0b0;
25294 let Inst{31-21} = 0b10001110000;
25295 let hasNewValue = 1;
25296 let opNewValue = 0;
25297 let prefersSlot3 = 1;
25298 let Constraints = "$Rx32 = $Rx32in";
25299 }
25300 def S6_rol_i_r_and : HInst<
25301 (outs IntRegs:$Rx32),
25302 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
25303 "$Rx32 &= rol($Rs32,#$Ii)",
25304 tc_41d5298e, TypeS_2op>, Enc_28a2dc, Requires<[HasV60]> {
25305 let Inst{7-5} = 0b011;
25306 let Inst{13-13} = 0b0;
25307 let Inst{31-21} = 0b10001110010;
25308 let hasNewValue = 1;
25309 let opNewValue = 0;
25310 let prefersSlot3 = 1;
25311 let Constraints = "$Rx32 = $Rx32in";
25312 }
25313 def S6_rol_i_r_nac : HInst<
25314 (outs IntRegs:$Rx32),
25315 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
25316 "$Rx32 -= rol($Rs32,#$Ii)",
25317 tc_41d5298e, TypeS_2op>, Enc_28a2dc, Requires<[HasV60]> {
25318 let Inst{7-5} = 0b011;
25319 let Inst{13-13} = 0b0;
25320 let Inst{31-21} = 0b10001110000;
25321 let hasNewValue = 1;
25322 let opNewValue = 0;
25323 let prefersSlot3 = 1;
25324 let Constraints = "$Rx32 = $Rx32in";
25325 }
25326 def S6_rol_i_r_or : HInst<
25327 (outs IntRegs:$Rx32),
25328 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
25329 "$Rx32 |= rol($Rs32,#$Ii)",
25330 tc_41d5298e, TypeS_2op>, Enc_28a2dc, Requires<[HasV60]> {
25331 let Inst{7-5} = 0b111;
25332 let Inst{13-13} = 0b0;
25333 let Inst{31-21} = 0b10001110010;
25334 let hasNewValue = 1;
25335 let opNewValue = 0;
25336 let prefersSlot3 = 1;
25337 let Constraints = "$Rx32 = $Rx32in";
25338 }
25339 def S6_rol_i_r_xacc : HInst<
25340 (outs IntRegs:$Rx32),
25341 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
25342 "$Rx32 ^= rol($Rs32,#$Ii)",
25343 tc_41d5298e, TypeS_2op>, Enc_28a2dc, Requires<[HasV60]> {
25344 let Inst{7-5} = 0b011;
25345 let Inst{13-13} = 0b0;
25346 let Inst{31-21} = 0b10001110100;
25347 let hasNewValue = 1;
25348 let opNewValue = 0;
25349 let prefersSlot3 = 1;
25350 let Constraints = "$Rx32 = $Rx32in";
25351 }
25352 def S6_vsplatrbp : HInst<
25353 (outs DoubleRegs:$Rdd32),
25354 (ins IntRegs:$Rs32),
25355 "$Rdd32 = vsplatb($Rs32)",
25356 tc_be706f30, TypeS_2op>, Enc_3a3d62, Requires<[HasV62]> {
25357 let Inst{13-5} = 0b000000100;
25358 let Inst{31-21} = 0b10000100010;
25359 }
25360 def S6_vtrunehb_ppp : HInst<
25361 (outs DoubleRegs:$Rdd32),
25362 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
25363 "$Rdd32 = vtrunehb($Rss32,$Rtt32)",
25364 tc_55050d58, TypeS_3op>, Enc_a56825, Requires<[HasV62]> {
25365 let Inst{7-5} = 0b011;
25366 let Inst{13-13} = 0b0;
25367 let Inst{31-21} = 0b11000001100;
25368 }
25369 def S6_vtrunohb_ppp : HInst<
25370 (outs DoubleRegs:$Rdd32),
25371 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
25372 "$Rdd32 = vtrunohb($Rss32,$Rtt32)",
25373 tc_55050d58, TypeS_3op>, Enc_a56825, Requires<[HasV62]> {
25374 let Inst{7-5} = 0b101;
25375 let Inst{13-13} = 0b0;
25376 let Inst{31-21} = 0b11000001100;
25377 }
25378 def SA1_addi : HInst<
25379 (outs GeneralSubRegs:$Rx16),
25380 (ins IntRegs:$Rx16in, s32_0Imm:$Ii),
25381 "$Rx16 = add($Rx16in,#$Ii)",
25382 tc_609d2efe, TypeSUBINSN>, Enc_93af4c {
25383 let Inst{12-11} = 0b00;
25384 let hasNewValue = 1;
25385 let opNewValue = 0;
25386 let AsmVariantName = "NonParsable";
25387 let DecoderNamespace = "SUBINSN_A";
25388 let isExtendable = 1;
25389 let opExtendable = 2;
25390 let isExtentSigned = 1;
25391 let opExtentBits = 7;
25392 let opExtentAlign = 0;
25393 let Constraints = "$Rx16 = $Rx16in";
25394 }
25395 def SA1_addrx : HInst<
25396 (outs GeneralSubRegs:$Rx16),
25397 (ins IntRegs:$Rx16in, GeneralSubRegs:$Rs16),
25398 "$Rx16 = add($Rx16in,$Rs16)",
25399 tc_609d2efe, TypeSUBINSN>, Enc_0527db {
25400 let Inst{12-8} = 0b11000;
25401 let hasNewValue = 1;
25402 let opNewValue = 0;
25403 let AsmVariantName = "NonParsable";
25404 let DecoderNamespace = "SUBINSN_A";
25405 let Constraints = "$Rx16 = $Rx16in";
25406 }
25407 def SA1_addsp : HInst<
25408 (outs GeneralSubRegs:$Rd16),
25409 (ins u6_2Imm:$Ii),
25410 "$Rd16 = add(r29,#$Ii)",
25411 tc_a904d137, TypeSUBINSN>, Enc_2df31d {
25412 let Inst{12-10} = 0b011;
25413 let hasNewValue = 1;
25414 let opNewValue = 0;
25415 let AsmVariantName = "NonParsable";
25416 let Uses = [R29];
25417 let DecoderNamespace = "SUBINSN_A";
25418 }
25419 def SA1_and1 : HInst<
25420 (outs GeneralSubRegs:$Rd16),
25421 (ins GeneralSubRegs:$Rs16),
25422 "$Rd16 = and($Rs16,#1)",
25423 tc_a904d137, TypeSUBINSN>, Enc_97d666 {
25424 let Inst{12-8} = 0b10010;
25425 let hasNewValue = 1;
25426 let opNewValue = 0;
25427 let AsmVariantName = "NonParsable";
25428 let DecoderNamespace = "SUBINSN_A";
25429 }
25430 def SA1_clrf : HInst<
25431 (outs GeneralSubRegs:$Rd16),
25432 (ins),
25433 "if (!p0) $Rd16 = #0",
25434 tc_1b82a277, TypeSUBINSN>, Enc_1f5ba6 {
25435 let Inst{12-4} = 0b110100111;
25436 let isPredicated = 1;
25437 let isPredicatedFalse = 1;
25438 let hasNewValue = 1;
25439 let opNewValue = 0;
25440 let AsmVariantName = "NonParsable";
25441 let Uses = [P0];
25442 let DecoderNamespace = "SUBINSN_A";
25443 }
25444 def SA1_clrfnew : HInst<
25445 (outs GeneralSubRegs:$Rd16),
25446 (ins),
25447 "if (!p0.new) $Rd16 = #0",
25448 tc_e9c822f7, TypeSUBINSN>, Enc_1f5ba6 {
25449 let Inst{12-4} = 0b110100101;
25450 let isPredicated = 1;
25451 let isPredicatedFalse = 1;
25452 let hasNewValue = 1;
25453 let opNewValue = 0;
25454 let AsmVariantName = "NonParsable";
25455 let isPredicatedNew = 1;
25456 let Uses = [P0];
25457 let DecoderNamespace = "SUBINSN_A";
25458 }
25459 def SA1_clrt : HInst<
25460 (outs GeneralSubRegs:$Rd16),
25461 (ins),
25462 "if (p0) $Rd16 = #0",
25463 tc_1b82a277, TypeSUBINSN>, Enc_1f5ba6 {
25464 let Inst{12-4} = 0b110100110;
25465 let isPredicated = 1;
25466 let hasNewValue = 1;
25467 let opNewValue = 0;
25468 let AsmVariantName = "NonParsable";
25469 let Uses = [P0];
25470 let DecoderNamespace = "SUBINSN_A";
25471 }
25472 def SA1_clrtnew : HInst<
25473 (outs GeneralSubRegs:$Rd16),
25474 (ins),
25475 "if (p0.new) $Rd16 = #0",
25476 tc_e9c822f7, TypeSUBINSN>, Enc_1f5ba6 {
25477 let Inst{12-4} = 0b110100100;
25478 let isPredicated = 1;
25479 let hasNewValue = 1;
25480 let opNewValue = 0;
25481 let AsmVariantName = "NonParsable";
25482 let isPredicatedNew = 1;
25483 let Uses = [P0];
25484 let DecoderNamespace = "SUBINSN_A";
25485 }
25486 def SA1_cmpeqi : HInst<
25487 (outs),
25488 (ins GeneralSubRegs:$Rs16, u2_0Imm:$Ii),
25489 "p0 = cmp.eq($Rs16,#$Ii)",
25490 tc_90f3e30c, TypeSUBINSN>, Enc_63eaeb {
25491 let Inst{3-2} = 0b00;
25492 let Inst{12-8} = 0b11001;
25493 let AsmVariantName = "NonParsable";
25494 let Defs = [P0];
25495 let DecoderNamespace = "SUBINSN_A";
25496 }
25497 def SA1_combine0i : HInst<
25498 (outs GeneralDoubleLow8Regs:$Rdd8),
25499 (ins u2_0Imm:$Ii),
25500 "$Rdd8 = combine(#0,#$Ii)",
25501 tc_a904d137, TypeSUBINSN>, Enc_ed48be {
25502 let Inst{4-3} = 0b00;
25503 let Inst{12-7} = 0b111000;
25504 let hasNewValue = 1;
25505 let opNewValue = 0;
25506 let AsmVariantName = "NonParsable";
25507 let DecoderNamespace = "SUBINSN_A";
25508 }
25509 def SA1_combine1i : HInst<
25510 (outs GeneralDoubleLow8Regs:$Rdd8),
25511 (ins u2_0Imm:$Ii),
25512 "$Rdd8 = combine(#1,#$Ii)",
25513 tc_a904d137, TypeSUBINSN>, Enc_ed48be {
25514 let Inst{4-3} = 0b01;
25515 let Inst{12-7} = 0b111000;
25516 let hasNewValue = 1;
25517 let opNewValue = 0;
25518 let AsmVariantName = "NonParsable";
25519 let DecoderNamespace = "SUBINSN_A";
25520 }
25521 def SA1_combine2i : HInst<
25522 (outs GeneralDoubleLow8Regs:$Rdd8),
25523 (ins u2_0Imm:$Ii),
25524 "$Rdd8 = combine(#2,#$Ii)",
25525 tc_a904d137, TypeSUBINSN>, Enc_ed48be {
25526 let Inst{4-3} = 0b10;
25527 let Inst{12-7} = 0b111000;
25528 let hasNewValue = 1;
25529 let opNewValue = 0;
25530 let AsmVariantName = "NonParsable";
25531 let DecoderNamespace = "SUBINSN_A";
25532 }
25533 def SA1_combine3i : HInst<
25534 (outs GeneralDoubleLow8Regs:$Rdd8),
25535 (ins u2_0Imm:$Ii),
25536 "$Rdd8 = combine(#3,#$Ii)",
25537 tc_a904d137, TypeSUBINSN>, Enc_ed48be {
25538 let Inst{4-3} = 0b11;
25539 let Inst{12-7} = 0b111000;
25540 let hasNewValue = 1;
25541 let opNewValue = 0;
25542 let AsmVariantName = "NonParsable";
25543 let DecoderNamespace = "SUBINSN_A";
25544 }
25545 def SA1_combinerz : HInst<
25546 (outs GeneralDoubleLow8Regs:$Rdd8),
25547 (ins GeneralSubRegs:$Rs16),
25548 "$Rdd8 = combine($Rs16,#0)",
25549 tc_a904d137, TypeSUBINSN>, Enc_399e12 {
25550 let Inst{3-3} = 0b1;
25551 let Inst{12-8} = 0b11101;
25552 let hasNewValue = 1;
25553 let opNewValue = 0;
25554 let AsmVariantName = "NonParsable";
25555 let DecoderNamespace = "SUBINSN_A";
25556 }
25557 def SA1_combinezr : HInst<
25558 (outs GeneralDoubleLow8Regs:$Rdd8),
25559 (ins GeneralSubRegs:$Rs16),
25560 "$Rdd8 = combine(#0,$Rs16)",
25561 tc_a904d137, TypeSUBINSN>, Enc_399e12 {
25562 let Inst{3-3} = 0b0;
25563 let Inst{12-8} = 0b11101;
25564 let hasNewValue = 1;
25565 let opNewValue = 0;
25566 let AsmVariantName = "NonParsable";
25567 let DecoderNamespace = "SUBINSN_A";
25568 }
25569 def SA1_dec : HInst<
25570 (outs GeneralSubRegs:$Rd16),
25571 (ins GeneralSubRegs:$Rs16, n1Const:$n1),
25572 "$Rd16 = add($Rs16,#$n1)",
25573 tc_609d2efe, TypeSUBINSN>, Enc_ee5ed0 {
25574 let Inst{12-8} = 0b10011;
25575 let hasNewValue = 1;
25576 let opNewValue = 0;
25577 let AsmVariantName = "NonParsable";
25578 let DecoderNamespace = "SUBINSN_A";
25579 }
25580 def SA1_inc : HInst<
25581 (outs GeneralSubRegs:$Rd16),
25582 (ins GeneralSubRegs:$Rs16),
25583 "$Rd16 = add($Rs16,#1)",
25584 tc_a904d137, TypeSUBINSN>, Enc_97d666 {
25585 let Inst{12-8} = 0b10001;
25586 let hasNewValue = 1;
25587 let opNewValue = 0;
25588 let AsmVariantName = "NonParsable";
25589 let DecoderNamespace = "SUBINSN_A";
25590 }
25591 def SA1_seti : HInst<
25592 (outs GeneralSubRegs:$Rd16),
25593 (ins u32_0Imm:$Ii),
25594 "$Rd16 = #$Ii",
25595 tc_a904d137, TypeSUBINSN>, Enc_e39bb2 {
25596 let Inst{12-10} = 0b010;
25597 let hasNewValue = 1;
25598 let opNewValue = 0;
25599 let AsmVariantName = "NonParsable";
25600 let DecoderNamespace = "SUBINSN_A";
25601 let isExtendable = 1;
25602 let opExtendable = 1;
25603 let isExtentSigned = 0;
25604 let opExtentBits = 6;
25605 let opExtentAlign = 0;
25606 }
25607 def SA1_setin1 : HInst<
25608 (outs GeneralSubRegs:$Rd16),
25609 (ins n1Const:$n1),
25610 "$Rd16 = #$n1",
25611 tc_a904d137, TypeSUBINSN>, Enc_7a0ea6 {
25612 let Inst{12-4} = 0b110100000;
25613 let hasNewValue = 1;
25614 let opNewValue = 0;
25615 let AsmVariantName = "NonParsable";
25616 let DecoderNamespace = "SUBINSN_A";
25617 }
25618 def SA1_sxtb : HInst<
25619 (outs GeneralSubRegs:$Rd16),
25620 (ins GeneralSubRegs:$Rs16),
25621 "$Rd16 = sxtb($Rs16)",
25622 tc_a904d137, TypeSUBINSN>, Enc_97d666 {
25623 let Inst{12-8} = 0b10101;
25624 let hasNewValue = 1;
25625 let opNewValue = 0;
25626 let AsmVariantName = "NonParsable";
25627 let DecoderNamespace = "SUBINSN_A";
25628 }
25629 def SA1_sxth : HInst<
25630 (outs GeneralSubRegs:$Rd16),
25631 (ins GeneralSubRegs:$Rs16),
25632 "$Rd16 = sxth($Rs16)",
25633 tc_a904d137, TypeSUBINSN>, Enc_97d666 {
25634 let Inst{12-8} = 0b10100;
25635 let hasNewValue = 1;
25636 let opNewValue = 0;
25637 let AsmVariantName = "NonParsable";
25638 let DecoderNamespace = "SUBINSN_A";
25639 }
25640 def SA1_tfr : HInst<
25641 (outs GeneralSubRegs:$Rd16),
25642 (ins GeneralSubRegs:$Rs16),
25643 "$Rd16 = $Rs16",
25644 tc_a904d137, TypeSUBINSN>, Enc_97d666 {
25645 let Inst{12-8} = 0b10000;
25646 let hasNewValue = 1;
25647 let opNewValue = 0;
25648 let AsmVariantName = "NonParsable";
25649 let DecoderNamespace = "SUBINSN_A";
25650 }
25651 def SA1_zxtb : HInst<
25652 (outs GeneralSubRegs:$Rd16),
25653 (ins GeneralSubRegs:$Rs16),
25654 "$Rd16 = and($Rs16,#255)",
25655 tc_a904d137, TypeSUBINSN>, Enc_97d666 {
25656 let Inst{12-8} = 0b10111;
25657 let hasNewValue = 1;
25658 let opNewValue = 0;
25659 let AsmVariantName = "NonParsable";
25660 let DecoderNamespace = "SUBINSN_A";
25661 }
25662 def SA1_zxth : HInst<
25663 (outs GeneralSubRegs:$Rd16),
25664 (ins GeneralSubRegs:$Rs16),
25665 "$Rd16 = zxth($Rs16)",
25666 tc_a904d137, TypeSUBINSN>, Enc_97d666 {
25667 let Inst{12-8} = 0b10110;
25668 let hasNewValue = 1;
25669 let opNewValue = 0;
25670 let AsmVariantName = "NonParsable";
25671 let DecoderNamespace = "SUBINSN_A";
25672 }
25673 def SL1_loadri_io : HInst<
25674 (outs GeneralSubRegs:$Rd16),
25675 (ins GeneralSubRegs:$Rs16, u4_2Imm:$Ii),
25676 "$Rd16 = memw($Rs16+#$Ii)",
25677 tc_7f881c76, TypeSUBINSN>, Enc_53dca9 {
25678 let Inst{12-12} = 0b0;
25679 let hasNewValue = 1;
25680 let opNewValue = 0;
25681 let addrMode = BaseImmOffset;
25682 let accessSize = WordAccess;
25683 let AsmVariantName = "NonParsable";
25684 let mayLoad = 1;
25685 let DecoderNamespace = "SUBINSN_L1";
25686 }
25687 def SL1_loadrub_io : HInst<
25688 (outs GeneralSubRegs:$Rd16),
25689 (ins GeneralSubRegs:$Rs16, u4_0Imm:$Ii),
25690 "$Rd16 = memub($Rs16+#$Ii)",
25691 tc_7f881c76, TypeSUBINSN>, Enc_c175d0 {
25692 let Inst{12-12} = 0b1;
25693 let hasNewValue = 1;
25694 let opNewValue = 0;
25695 let addrMode = BaseImmOffset;
25696 let accessSize = ByteAccess;
25697 let AsmVariantName = "NonParsable";
25698 let mayLoad = 1;
25699 let DecoderNamespace = "SUBINSN_L1";
25700 }
25701 def SL2_deallocframe : HInst<
25702 (outs),
25703 (ins),
25704 "deallocframe",
25705 tc_36c68ad1, TypeSUBINSN>, Enc_e3b0c4 {
25706 let Inst{12-0} = 0b1111100000000;
25707 let accessSize = DoubleWordAccess;
25708 let AsmVariantName = "NonParsable";
25709 let mayLoad = 1;
25710 let Uses = [FRAMEKEY, R30];
25711 let Defs = [R30, R29, R31];
25712 let DecoderNamespace = "SUBINSN_L2";
25713 }
25714 def SL2_jumpr31 : HInst<
25715 (outs),
25716 (ins),
25717 "jumpr r31",
25718 tc_2a160009, TypeSUBINSN>, Enc_e3b0c4 {
25719 let Inst{12-0} = 0b1111111000000;
25720 let isTerminator = 1;
25721 let isIndirectBranch = 1;
25722 let AsmVariantName = "NonParsable";
25723 let cofMax1 = 1;
25724 let isReturn = 1;
25725 let Uses = [R31];
25726 let Defs = [PC];
25727 let DecoderNamespace = "SUBINSN_L2";
25728 }
25729 def SL2_jumpr31_f : HInst<
25730 (outs),
25731 (ins),
25732 "if (!p0) jumpr r31",
25733 tc_2a160009, TypeSUBINSN>, Enc_e3b0c4 {
25734 let Inst{12-0} = 0b1111111000101;
25735 let isPredicated = 1;
25736 let isPredicatedFalse = 1;
25737 let isTerminator = 1;
25738 let isIndirectBranch = 1;
25739 let AsmVariantName = "NonParsable";
25740 let cofMax1 = 1;
25741 let isReturn = 1;
25742 let Uses = [P0, R31];
25743 let Defs = [PC];
25744 let isTaken = Inst{4};
25745 let DecoderNamespace = "SUBINSN_L2";
25746 }
25747 def SL2_jumpr31_fnew : HInst<
25748 (outs),
25749 (ins),
25750 "if (!p0.new) jumpr:nt r31",
25751 tc_2a160009, TypeSUBINSN>, Enc_e3b0c4 {
25752 let Inst{12-0} = 0b1111111000111;
25753 let isPredicated = 1;
25754 let isPredicatedFalse = 1;
25755 let isTerminator = 1;
25756 let isIndirectBranch = 1;
25757 let AsmVariantName = "NonParsable";
25758 let isPredicatedNew = 1;
25759 let cofMax1 = 1;
25760 let isReturn = 1;
25761 let Uses = [P0, R31];
25762 let Defs = [PC];
25763 let isTaken = Inst{4};
25764 let DecoderNamespace = "SUBINSN_L2";
25765 }
25766 def SL2_jumpr31_t : HInst<
25767 (outs),
25768 (ins),
25769 "if (p0) jumpr r31",
25770 tc_2a160009, TypeSUBINSN>, Enc_e3b0c4 {
25771 let Inst{12-0} = 0b1111111000100;
25772 let isPredicated = 1;
25773 let isTerminator = 1;
25774 let isIndirectBranch = 1;
25775 let AsmVariantName = "NonParsable";
25776 let cofMax1 = 1;
25777 let isReturn = 1;
25778 let Uses = [P0, R31];
25779 let Defs = [PC];
25780 let isTaken = Inst{4};
25781 let DecoderNamespace = "SUBINSN_L2";
25782 }
25783 def SL2_jumpr31_tnew : HInst<
25784 (outs),
25785 (ins),
25786 "if (p0.new) jumpr:nt r31",
25787 tc_2a160009, TypeSUBINSN>, Enc_e3b0c4 {
25788 let Inst{12-0} = 0b1111111000110;
25789 let isPredicated = 1;
25790 let isTerminator = 1;
25791 let isIndirectBranch = 1;
25792 let AsmVariantName = "NonParsable";
25793 let isPredicatedNew = 1;
25794 let cofMax1 = 1;
25795 let isReturn = 1;
25796 let Uses = [P0, R31];
25797 let Defs = [PC];
25798 let isTaken = Inst{4};
25799 let DecoderNamespace = "SUBINSN_L2";
25800 }
25801 def SL2_loadrb_io : HInst<
25802 (outs GeneralSubRegs:$Rd16),
25803 (ins GeneralSubRegs:$Rs16, u3_0Imm:$Ii),
25804 "$Rd16 = memb($Rs16+#$Ii)",
25805 tc_7f881c76, TypeSUBINSN>, Enc_2fbf3c {
25806 let Inst{12-11} = 0b10;
25807 let hasNewValue = 1;
25808 let opNewValue = 0;
25809 let addrMode = BaseImmOffset;
25810 let accessSize = ByteAccess;
25811 let AsmVariantName = "NonParsable";
25812 let mayLoad = 1;
25813 let DecoderNamespace = "SUBINSN_L2";
25814 }
25815 def SL2_loadrd_sp : HInst<
25816 (outs GeneralDoubleLow8Regs:$Rdd8),
25817 (ins u5_3Imm:$Ii),
25818 "$Rdd8 = memd(r29+#$Ii)",
25819 tc_9c98e8af, TypeSUBINSN>, Enc_86a14b {
25820 let Inst{12-8} = 0b11110;
25821 let hasNewValue = 1;
25822 let opNewValue = 0;
25823 let addrMode = BaseImmOffset;
25824 let accessSize = DoubleWordAccess;
25825 let AsmVariantName = "NonParsable";
25826 let mayLoad = 1;
25827 let Uses = [R29];
25828 let DecoderNamespace = "SUBINSN_L2";
25829 }
25830 def SL2_loadrh_io : HInst<
25831 (outs GeneralSubRegs:$Rd16),
25832 (ins GeneralSubRegs:$Rs16, u3_1Imm:$Ii),
25833 "$Rd16 = memh($Rs16+#$Ii)",
25834 tc_7f881c76, TypeSUBINSN>, Enc_2bae10 {
25835 let Inst{12-11} = 0b00;
25836 let hasNewValue = 1;
25837 let opNewValue = 0;
25838 let addrMode = BaseImmOffset;
25839 let accessSize = HalfWordAccess;
25840 let AsmVariantName = "NonParsable";
25841 let mayLoad = 1;
25842 let DecoderNamespace = "SUBINSN_L2";
25843 }
25844 def SL2_loadri_sp : HInst<
25845 (outs GeneralSubRegs:$Rd16),
25846 (ins u5_2Imm:$Ii),
25847 "$Rd16 = memw(r29+#$Ii)",
25848 tc_9c98e8af, TypeSUBINSN>, Enc_51635c {
25849 let Inst{12-9} = 0b1110;
25850 let hasNewValue = 1;
25851 let opNewValue = 0;
25852 let addrMode = BaseImmOffset;
25853 let accessSize = WordAccess;
25854 let AsmVariantName = "NonParsable";
25855 let mayLoad = 1;
25856 let Uses = [R29];
25857 let DecoderNamespace = "SUBINSN_L2";
25858 }
25859 def SL2_loadruh_io : HInst<
25860 (outs GeneralSubRegs:$Rd16),
25861 (ins GeneralSubRegs:$Rs16, u3_1Imm:$Ii),
25862 "$Rd16 = memuh($Rs16+#$Ii)",
25863 tc_7f881c76, TypeSUBINSN>, Enc_2bae10 {
25864 let Inst{12-11} = 0b01;
25865 let hasNewValue = 1;
25866 let opNewValue = 0;
25867 let addrMode = BaseImmOffset;
25868 let accessSize = HalfWordAccess;
25869 let AsmVariantName = "NonParsable";
25870 let mayLoad = 1;
25871 let DecoderNamespace = "SUBINSN_L2";
25872 }
25873 def SL2_return : HInst<
25874 (outs),
25875 (ins),
25876 "dealloc_return",
25877 tc_fcab4871, TypeSUBINSN>, Enc_e3b0c4 {
25878 let Inst{12-0} = 0b1111101000000;
25879 let isTerminator = 1;
25880 let isIndirectBranch = 1;
25881 let accessSize = DoubleWordAccess;
25882 let AsmVariantName = "NonParsable";
25883 let mayLoad = 1;
25884 let cofMax1 = 1;
25885 let isRestrictNoSlot1Store = 1;
25886 let isReturn = 1;
25887 let Uses = [FRAMEKEY, R30];
25888 let Defs = [PC, R30, R29, R31];
25889 let DecoderNamespace = "SUBINSN_L2";
25890 }
25891 def SL2_return_f : HInst<
25892 (outs),
25893 (ins),
25894 "if (!p0) dealloc_return",
25895 tc_fcab4871, TypeSUBINSN>, Enc_e3b0c4 {
25896 let Inst{12-0} = 0b1111101000101;
25897 let isPredicated = 1;
25898 let isPredicatedFalse = 1;
25899 let isTerminator = 1;
25900 let isIndirectBranch = 1;
25901 let accessSize = DoubleWordAccess;
25902 let AsmVariantName = "NonParsable";
25903 let mayLoad = 1;
25904 let cofMax1 = 1;
25905 let isRestrictNoSlot1Store = 1;
25906 let isReturn = 1;
25907 let Uses = [FRAMEKEY, P0, R30];
25908 let Defs = [PC, R30, R29, R31];
25909 let isTaken = Inst{4};
25910 let DecoderNamespace = "SUBINSN_L2";
25911 }
25912 def SL2_return_fnew : HInst<
25913 (outs),
25914 (ins),
25915 "if (!p0.new) dealloc_return:nt",
25916 tc_fcab4871, TypeSUBINSN>, Enc_e3b0c4 {
25917 let Inst{12-0} = 0b1111101000111;
25918 let isPredicated = 1;
25919 let isPredicatedFalse = 1;
25920 let isTerminator = 1;
25921 let isIndirectBranch = 1;
25922 let accessSize = DoubleWordAccess;
25923 let AsmVariantName = "NonParsable";
25924 let isPredicatedNew = 1;
25925 let mayLoad = 1;
25926 let cofMax1 = 1;
25927 let isRestrictNoSlot1Store = 1;
25928 let isReturn = 1;
25929 let Uses = [FRAMEKEY, P0, R30];
25930 let Defs = [PC, R30, R29, R31];
25931 let isTaken = Inst{4};
25932 let DecoderNamespace = "SUBINSN_L2";
25933 }
25934 def SL2_return_t : HInst<
25935 (outs),
25936 (ins),
25937 "if (p0) dealloc_return",
25938 tc_fcab4871, TypeSUBINSN>, Enc_e3b0c4 {
25939 let Inst{12-0} = 0b1111101000100;
25940 let isPredicated = 1;
25941 let isTerminator = 1;
25942 let isIndirectBranch = 1;
25943 let accessSize = DoubleWordAccess;
25944 let AsmVariantName = "NonParsable";
25945 let mayLoad = 1;
25946 let cofMax1 = 1;
25947 let isRestrictNoSlot1Store = 1;
25948 let isReturn = 1;
25949 let Uses = [FRAMEKEY, P0, R30];
25950 let Defs = [PC, R30, R29, R31];
25951 let isTaken = Inst{4};
25952 let DecoderNamespace = "SUBINSN_L2";
25953 }
25954 def SL2_return_tnew : HInst<
25955 (outs),
25956 (ins),
25957 "if (p0.new) dealloc_return:nt",
25958 tc_fcab4871, TypeSUBINSN>, Enc_e3b0c4 {
25959 let Inst{12-0} = 0b1111101000110;
25960 let isPredicated = 1;
25961 let isTerminator = 1;
25962 let isIndirectBranch = 1;
25963 let accessSize = DoubleWordAccess;
25964 let AsmVariantName = "NonParsable";
25965 let isPredicatedNew = 1;
25966 let mayLoad = 1;
25967 let cofMax1 = 1;
25968 let isRestrictNoSlot1Store = 1;
25969 let isReturn = 1;
25970 let Uses = [FRAMEKEY, P0, R30];
25971 let Defs = [PC, R30, R29, R31];
25972 let isTaken = Inst{4};
25973 let DecoderNamespace = "SUBINSN_L2";
25974 }
25975 def SS1_storeb_io : HInst<
25976 (outs),
25977 (ins GeneralSubRegs:$Rs16, u4_0Imm:$Ii, GeneralSubRegs:$Rt16),
25978 "memb($Rs16+#$Ii) = $Rt16",
25979 tc_05b6c987, TypeSUBINSN>, Enc_b38ffc {
25980 let Inst{12-12} = 0b1;
25981 let addrMode = BaseImmOffset;
25982 let accessSize = ByteAccess;
25983 let AsmVariantName = "NonParsable";
25984 let mayStore = 1;
25985 let DecoderNamespace = "SUBINSN_S1";
25986 }
25987 def SS1_storew_io : HInst<
25988 (outs),
25989 (ins GeneralSubRegs:$Rs16, u4_2Imm:$Ii, GeneralSubRegs:$Rt16),
25990 "memw($Rs16+#$Ii) = $Rt16",
25991 tc_05b6c987, TypeSUBINSN>, Enc_f55a0c {
25992 let Inst{12-12} = 0b0;
25993 let addrMode = BaseImmOffset;
25994 let accessSize = WordAccess;
25995 let AsmVariantName = "NonParsable";
25996 let mayStore = 1;
25997 let DecoderNamespace = "SUBINSN_S1";
25998 }
25999 def SS2_allocframe : HInst<
26000 (outs),
26001 (ins u5_3Imm:$Ii),
26002 "allocframe(#$Ii)",
26003 tc_0fc1ae07, TypeSUBINSN>, Enc_6f70ca {
26004 let Inst{3-0} = 0b0000;
26005 let Inst{12-9} = 0b1110;
26006 let addrMode = BaseImmOffset;
26007 let accessSize = DoubleWordAccess;
26008 let AsmVariantName = "NonParsable";
26009 let mayStore = 1;
26010 let Uses = [FRAMEKEY, FRAMELIMIT, R30, R29, R31];
26011 let Defs = [R30, R29];
26012 let DecoderNamespace = "SUBINSN_S2";
26013 }
26014 def SS2_storebi0 : HInst<
26015 (outs),
26016 (ins GeneralSubRegs:$Rs16, u4_0Imm:$Ii),
26017 "memb($Rs16+#$Ii) = #0",
26018 tc_57288781, TypeSUBINSN>, Enc_84d359 {
26019 let Inst{12-8} = 0b10010;
26020 let addrMode = BaseImmOffset;
26021 let accessSize = ByteAccess;
26022 let AsmVariantName = "NonParsable";
26023 let mayStore = 1;
26024 let DecoderNamespace = "SUBINSN_S2";
26025 }
26026 def SS2_storebi1 : HInst<
26027 (outs),
26028 (ins GeneralSubRegs:$Rs16, u4_0Imm:$Ii),
26029 "memb($Rs16+#$Ii) = #1",
26030 tc_57288781, TypeSUBINSN>, Enc_84d359 {
26031 let Inst{12-8} = 0b10011;
26032 let addrMode = BaseImmOffset;
26033 let accessSize = ByteAccess;
26034 let AsmVariantName = "NonParsable";
26035 let mayStore = 1;
26036 let DecoderNamespace = "SUBINSN_S2";
26037 }
26038 def SS2_stored_sp : HInst<
26039 (outs),
26040 (ins s6_3Imm:$Ii, GeneralDoubleLow8Regs:$Rtt8),
26041 "memd(r29+#$Ii) = $Rtt8",
26042 tc_a788683e, TypeSUBINSN>, Enc_b8309d {
26043 let Inst{12-9} = 0b0101;
26044 let addrMode = BaseImmOffset;
26045 let accessSize = DoubleWordAccess;
26046 let AsmVariantName = "NonParsable";
26047 let mayStore = 1;
26048 let Uses = [R29];
26049 let DecoderNamespace = "SUBINSN_S2";
26050 }
26051 def SS2_storeh_io : HInst<
26052 (outs),
26053 (ins GeneralSubRegs:$Rs16, u3_1Imm:$Ii, GeneralSubRegs:$Rt16),
26054 "memh($Rs16+#$Ii) = $Rt16",
26055 tc_05b6c987, TypeSUBINSN>, Enc_625deb {
26056 let Inst{12-11} = 0b00;
26057 let addrMode = BaseImmOffset;
26058 let accessSize = HalfWordAccess;
26059 let AsmVariantName = "NonParsable";
26060 let mayStore = 1;
26061 let DecoderNamespace = "SUBINSN_S2";
26062 }
26063 def SS2_storew_sp : HInst<
26064 (outs),
26065 (ins u5_2Imm:$Ii, GeneralSubRegs:$Rt16),
26066 "memw(r29+#$Ii) = $Rt16",
26067 tc_a788683e, TypeSUBINSN>, Enc_87c142 {
26068 let Inst{12-9} = 0b0100;
26069 let addrMode = BaseImmOffset;
26070 let accessSize = WordAccess;
26071 let AsmVariantName = "NonParsable";
26072 let mayStore = 1;
26073 let Uses = [R29];
26074 let DecoderNamespace = "SUBINSN_S2";
26075 }
26076 def SS2_storewi0 : HInst<
26077 (outs),
26078 (ins GeneralSubRegs:$Rs16, u4_2Imm:$Ii),
26079 "memw($Rs16+#$Ii) = #0",
26080 tc_57288781, TypeSUBINSN>, Enc_a6ce9c {
26081 let Inst{12-8} = 0b10000;
26082 let addrMode = BaseImmOffset;
26083 let accessSize = WordAccess;
26084 let AsmVariantName = "NonParsable";
26085 let mayStore = 1;
26086 let DecoderNamespace = "SUBINSN_S2";
26087 }
26088 def SS2_storewi1 : HInst<
26089 (outs),
26090 (ins GeneralSubRegs:$Rs16, u4_2Imm:$Ii),
26091 "memw($Rs16+#$Ii) = #1",
26092 tc_57288781, TypeSUBINSN>, Enc_a6ce9c {
26093 let Inst{12-8} = 0b10001;
26094 let addrMode = BaseImmOffset;
26095 let accessSize = WordAccess;
26096 let AsmVariantName = "NonParsable";
26097 let mayStore = 1;
26098 let DecoderNamespace = "SUBINSN_S2";
26099 }
26100 def V6_MAP_equb : HInst<
26101 (outs HvxQR:$Qd4),
26102 (ins HvxVR:$Vu32, HvxVR:$Vv32),
26103 "$Qd4 = vcmp.eq($Vu32.ub,$Vv32.ub)",
26104 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26105 let hasNewValue = 1;
26106 let opNewValue = 0;
26107 let isPseudo = 1;
26108 let isCodeGenOnly = 1;
26109 let DecoderNamespace = "EXT_mmvec";
26110 }
26111 def V6_MAP_equb_and : HInst<
26112 (outs HvxQR:$Qx4),
26113 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26114 "$Qx4 &= vcmp.eq($Vu32.ub,$Vv32.ub)",
26115 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26116 let isPseudo = 1;
26117 let isCodeGenOnly = 1;
26118 let DecoderNamespace = "EXT_mmvec";
26119 let Constraints = "$Qx4 = $Qx4in";
26120 }
26121 def V6_MAP_equb_ior : HInst<
26122 (outs HvxQR:$Qx4),
26123 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26124 "$Qx4 |= vcmp.eq($Vu32.ub,$Vv32.ub)",
26125 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26126 let isAccumulator = 1;
26127 let isPseudo = 1;
26128 let isCodeGenOnly = 1;
26129 let DecoderNamespace = "EXT_mmvec";
26130 let Constraints = "$Qx4 = $Qx4in";
26131 }
26132 def V6_MAP_equb_xor : HInst<
26133 (outs HvxQR:$Qx4),
26134 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26135 "$Qx4 ^= vcmp.eq($Vu32.ub,$Vv32.ub)",
26136 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26137 let isPseudo = 1;
26138 let isCodeGenOnly = 1;
26139 let DecoderNamespace = "EXT_mmvec";
26140 let Constraints = "$Qx4 = $Qx4in";
26141 }
26142 def V6_MAP_equh : HInst<
26143 (outs HvxQR:$Qd4),
26144 (ins HvxVR:$Vu32, HvxVR:$Vv32),
26145 "$Qd4 = vcmp.eq($Vu32.uh,$Vv32.uh)",
26146 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26147 let hasNewValue = 1;
26148 let opNewValue = 0;
26149 let isPseudo = 1;
26150 let isCodeGenOnly = 1;
26151 let DecoderNamespace = "EXT_mmvec";
26152 }
26153 def V6_MAP_equh_and : HInst<
26154 (outs HvxQR:$Qx4),
26155 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26156 "$Qx4 &= vcmp.eq($Vu32.uh,$Vv32.uh)",
26157 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26158 let isPseudo = 1;
26159 let isCodeGenOnly = 1;
26160 let DecoderNamespace = "EXT_mmvec";
26161 let Constraints = "$Qx4 = $Qx4in";
26162 }
26163 def V6_MAP_equh_ior : HInst<
26164 (outs HvxQR:$Qx4),
26165 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26166 "$Qx4 |= vcmp.eq($Vu32.uh,$Vv32.uh)",
26167 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26168 let isAccumulator = 1;
26169 let isPseudo = 1;
26170 let isCodeGenOnly = 1;
26171 let DecoderNamespace = "EXT_mmvec";
26172 let Constraints = "$Qx4 = $Qx4in";
26173 }
26174 def V6_MAP_equh_xor : HInst<
26175 (outs HvxQR:$Qx4),
26176 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26177 "$Qx4 ^= vcmp.eq($Vu32.uh,$Vv32.uh)",
26178 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26179 let isPseudo = 1;
26180 let isCodeGenOnly = 1;
26181 let DecoderNamespace = "EXT_mmvec";
26182 let Constraints = "$Qx4 = $Qx4in";
26183 }
26184 def V6_MAP_equw : HInst<
26185 (outs HvxQR:$Qd4),
26186 (ins HvxVR:$Vu32, HvxVR:$Vv32),
26187 "$Qd4 = vcmp.eq($Vu32.uw,$Vv32.uw)",
26188 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26189 let hasNewValue = 1;
26190 let opNewValue = 0;
26191 let isPseudo = 1;
26192 let isCodeGenOnly = 1;
26193 let DecoderNamespace = "EXT_mmvec";
26194 }
26195 def V6_MAP_equw_and : HInst<
26196 (outs HvxQR:$Qx4),
26197 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26198 "$Qx4 &= vcmp.eq($Vu32.uw,$Vv32.uw)",
26199 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26200 let isPseudo = 1;
26201 let isCodeGenOnly = 1;
26202 let DecoderNamespace = "EXT_mmvec";
26203 let Constraints = "$Qx4 = $Qx4in";
26204 }
26205 def V6_MAP_equw_ior : HInst<
26206 (outs HvxQR:$Qx4),
26207 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26208 "$Qx4 |= vcmp.eq($Vu32.uw,$Vv32.uw)",
26209 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26210 let isAccumulator = 1;
26211 let isPseudo = 1;
26212 let isCodeGenOnly = 1;
26213 let DecoderNamespace = "EXT_mmvec";
26214 let Constraints = "$Qx4 = $Qx4in";
26215 }
26216 def V6_MAP_equw_xor : HInst<
26217 (outs HvxQR:$Qx4),
26218 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26219 "$Qx4 ^= vcmp.eq($Vu32.uw,$Vv32.uw)",
26220 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26221 let isPseudo = 1;
26222 let isCodeGenOnly = 1;
26223 let DecoderNamespace = "EXT_mmvec";
26224 let Constraints = "$Qx4 = $Qx4in";
26225 }
26226 def V6_extractw : HInst<
26227 (outs IntRegs:$Rd32),
26228 (ins HvxVR:$Vu32, IntRegs:$Rs32),
26229 "$Rd32 = vextract($Vu32,$Rs32)",
26230 tc_9777e6bf, TypeLD>, Enc_50e578, Requires<[UseHVXV60]> {
26231 let Inst{7-5} = 0b001;
26232 let Inst{13-13} = 0b0;
26233 let Inst{31-21} = 0b10010010000;
26234 let hasNewValue = 1;
26235 let opNewValue = 0;
26236 let isSolo = 1;
26237 let mayLoad = 1;
26238 let DecoderNamespace = "EXT_mmvec";
26239 }
26240 def V6_extractw_alt : HInst<
26241 (outs IntRegs:$Rd32),
26242 (ins HvxVR:$Vu32, IntRegs:$Rs32),
26243 "$Rd32.w = vextract($Vu32,$Rs32)",
26244 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26245 let hasNewValue = 1;
26246 let opNewValue = 0;
26247 let isPseudo = 1;
26248 let isCodeGenOnly = 1;
26249 let DecoderNamespace = "EXT_mmvec";
26250 }
26251 def V6_hi : HInst<
26252 (outs HvxVR:$Vd32),
26253 (ins HvxWR:$Vss32),
26254 "$Vd32 = hi($Vss32)",
26255 CVI_VA, TypeCVI_VA>, Requires<[UseHVXV60]> {
26256 let hasNewValue = 1;
26257 let opNewValue = 0;
26258 let isPseudo = 1;
26259 let DecoderNamespace = "EXT_mmvec";
26260 }
26261 def V6_ld0 : HInst<
26262 (outs HvxVR:$Vd32),
26263 (ins IntRegs:$Rt32),
26264 "$Vd32 = vmem($Rt32)",
26265 PSEUDO, TypeCVI_VM_LD>, Requires<[UseHVXV60]> {
26266 let hasNewValue = 1;
26267 let opNewValue = 0;
26268 let isPseudo = 1;
26269 let isCodeGenOnly = 1;
26270 let DecoderNamespace = "EXT_mmvec";
26271 }
26272 def V6_ldcnp0 : HInst<
26273 (outs HvxVR:$Vd32),
26274 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26275 "if (!$Pv4) $Vd32.cur = vmem($Rt32)",
26276 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26277 let hasNewValue = 1;
26278 let opNewValue = 0;
26279 let isPseudo = 1;
26280 let isCodeGenOnly = 1;
26281 let DecoderNamespace = "EXT_mmvec";
26282 }
26283 def V6_ldcnpnt0 : HInst<
26284 (outs HvxVR:$Vd32),
26285 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26286 "if (!$Pv4) $Vd32.cur = vmem($Rt32):nt",
26287 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26288 let hasNewValue = 1;
26289 let opNewValue = 0;
26290 let isPseudo = 1;
26291 let isCodeGenOnly = 1;
26292 let DecoderNamespace = "EXT_mmvec";
26293 }
26294 def V6_ldcp0 : HInst<
26295 (outs HvxVR:$Vd32),
26296 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26297 "if ($Pv4) $Vd32.cur = vmem($Rt32)",
26298 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26299 let hasNewValue = 1;
26300 let opNewValue = 0;
26301 let isPseudo = 1;
26302 let isCodeGenOnly = 1;
26303 let DecoderNamespace = "EXT_mmvec";
26304 }
26305 def V6_ldcpnt0 : HInst<
26306 (outs HvxVR:$Vd32),
26307 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26308 "if ($Pv4) $Vd32.cur = vmem($Rt32):nt",
26309 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26310 let hasNewValue = 1;
26311 let opNewValue = 0;
26312 let isPseudo = 1;
26313 let isCodeGenOnly = 1;
26314 let DecoderNamespace = "EXT_mmvec";
26315 }
26316 def V6_ldnp0 : HInst<
26317 (outs HvxVR:$Vd32),
26318 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26319 "if (!$Pv4) $Vd32 = vmem($Rt32)",
26320 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26321 let hasNewValue = 1;
26322 let opNewValue = 0;
26323 let isPseudo = 1;
26324 let isCodeGenOnly = 1;
26325 let DecoderNamespace = "EXT_mmvec";
26326 }
26327 def V6_ldnpnt0 : HInst<
26328 (outs HvxVR:$Vd32),
26329 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26330 "if (!$Pv4) $Vd32 = vmem($Rt32):nt",
26331 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26332 let hasNewValue = 1;
26333 let opNewValue = 0;
26334 let isPseudo = 1;
26335 let isCodeGenOnly = 1;
26336 let DecoderNamespace = "EXT_mmvec";
26337 }
26338 def V6_ldnt0 : HInst<
26339 (outs HvxVR:$Vd32),
26340 (ins IntRegs:$Rt32),
26341 "$Vd32 = vmem($Rt32):nt",
26342 PSEUDO, TypeCVI_VM_LD>, Requires<[UseHVXV60]> {
26343 let hasNewValue = 1;
26344 let opNewValue = 0;
26345 let isPseudo = 1;
26346 let isCodeGenOnly = 1;
26347 let DecoderNamespace = "EXT_mmvec";
26348 }
26349 def V6_ldntnt0 : HInst<
26350 (outs HvxVR:$Vd32),
26351 (ins IntRegs:$Rt32),
26352 "$Vd32 = vmem($Rt32):nt",
26353 PSEUDO, TypeMAPPING>, Requires<[HasV62]> {
26354 let hasNewValue = 1;
26355 let opNewValue = 0;
26356 let isPseudo = 1;
26357 let isCodeGenOnly = 1;
26358 let DecoderNamespace = "EXT_mmvec";
26359 }
26360 def V6_ldp0 : HInst<
26361 (outs HvxVR:$Vd32),
26362 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26363 "if ($Pv4) $Vd32 = vmem($Rt32)",
26364 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26365 let hasNewValue = 1;
26366 let opNewValue = 0;
26367 let isPseudo = 1;
26368 let isCodeGenOnly = 1;
26369 let DecoderNamespace = "EXT_mmvec";
26370 }
26371 def V6_ldpnt0 : HInst<
26372 (outs HvxVR:$Vd32),
26373 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26374 "if ($Pv4) $Vd32 = vmem($Rt32):nt",
26375 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26376 let hasNewValue = 1;
26377 let opNewValue = 0;
26378 let isPseudo = 1;
26379 let isCodeGenOnly = 1;
26380 let DecoderNamespace = "EXT_mmvec";
26381 }
26382 def V6_ldtnp0 : HInst<
26383 (outs HvxVR:$Vd32),
26384 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26385 "if (!$Pv4) $Vd32.tmp = vmem($Rt32)",
26386 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26387 let hasNewValue = 1;
26388 let opNewValue = 0;
26389 let isPseudo = 1;
26390 let isCodeGenOnly = 1;
26391 let DecoderNamespace = "EXT_mmvec";
26392 }
26393 def V6_ldtnpnt0 : HInst<
26394 (outs HvxVR:$Vd32),
26395 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26396 "if (!$Pv4) $Vd32.tmp = vmem($Rt32):nt",
26397 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26398 let hasNewValue = 1;
26399 let opNewValue = 0;
26400 let isPseudo = 1;
26401 let isCodeGenOnly = 1;
26402 let DecoderNamespace = "EXT_mmvec";
26403 }
26404 def V6_ldtp0 : HInst<
26405 (outs HvxVR:$Vd32),
26406 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26407 "if ($Pv4) $Vd32.tmp = vmem($Rt32)",
26408 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26409 let hasNewValue = 1;
26410 let opNewValue = 0;
26411 let isPseudo = 1;
26412 let isCodeGenOnly = 1;
26413 let DecoderNamespace = "EXT_mmvec";
26414 }
26415 def V6_ldtpnt0 : HInst<
26416 (outs HvxVR:$Vd32),
26417 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26418 "if ($Pv4) $Vd32.tmp = vmem($Rt32):nt",
26419 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26420 let hasNewValue = 1;
26421 let opNewValue = 0;
26422 let isPseudo = 1;
26423 let isCodeGenOnly = 1;
26424 let DecoderNamespace = "EXT_mmvec";
26425 }
26426 def V6_ldu0 : HInst<
26427 (outs HvxVR:$Vd32),
26428 (ins IntRegs:$Rt32),
26429 "$Vd32 = vmemu($Rt32)",
26430 PSEUDO, TypeCVI_VM_LD>, Requires<[UseHVXV60]> {
26431 let hasNewValue = 1;
26432 let opNewValue = 0;
26433 let isPseudo = 1;
26434 let isCodeGenOnly = 1;
26435 let DecoderNamespace = "EXT_mmvec";
26436 }
26437 def V6_lo : HInst<
26438 (outs HvxVR:$Vd32),
26439 (ins HvxWR:$Vss32),
26440 "$Vd32 = lo($Vss32)",
26441 CVI_VA, TypeCVI_VA>, Requires<[UseHVXV60]> {
26442 let hasNewValue = 1;
26443 let opNewValue = 0;
26444 let isPseudo = 1;
26445 let DecoderNamespace = "EXT_mmvec";
26446 }
26447 def V6_lvsplatb : HInst<
26448 (outs HvxVR:$Vd32),
26449 (ins IntRegs:$Rt32),
26450 "$Vd32.b = vsplat($Rt32)",
26451 tc_6b78cf13, TypeCVI_VX>, Enc_a5ed8a, Requires<[UseHVXV62]> {
26452 let Inst{13-5} = 0b000000010;
26453 let Inst{31-21} = 0b00011001110;
26454 let hasNewValue = 1;
26455 let opNewValue = 0;
26456 let DecoderNamespace = "EXT_mmvec";
26457 }
26458 def V6_lvsplath : HInst<
26459 (outs HvxVR:$Vd32),
26460 (ins IntRegs:$Rt32),
26461 "$Vd32.h = vsplat($Rt32)",
26462 tc_6b78cf13, TypeCVI_VX>, Enc_a5ed8a, Requires<[UseHVXV62]> {
26463 let Inst{13-5} = 0b000000001;
26464 let Inst{31-21} = 0b00011001110;
26465 let hasNewValue = 1;
26466 let opNewValue = 0;
26467 let DecoderNamespace = "EXT_mmvec";
26468 }
26469 def V6_lvsplatw : HInst<
26470 (outs HvxVR:$Vd32),
26471 (ins IntRegs:$Rt32),
26472 "$Vd32 = vsplat($Rt32)",
26473 tc_6b78cf13, TypeCVI_VX_LATE>, Enc_a5ed8a, Requires<[UseHVXV60]> {
26474 let Inst{13-5} = 0b000000001;
26475 let Inst{31-21} = 0b00011001101;
26476 let hasNewValue = 1;
26477 let opNewValue = 0;
26478 let DecoderNamespace = "EXT_mmvec";
26479 }
26480 def V6_pred_and : HInst<
26481 (outs HvxQR:$Qd4),
26482 (ins HvxQR:$Qs4, HvxQR:$Qt4),
26483 "$Qd4 = and($Qs4,$Qt4)",
26484 tc_97c165b9, TypeCVI_VA_DV>, Enc_134437, Requires<[UseHVXV60]> {
26485 let Inst{7-2} = 0b000000;
26486 let Inst{13-10} = 0b0000;
26487 let Inst{21-16} = 0b000011;
26488 let Inst{31-24} = 0b00011110;
26489 let hasNewValue = 1;
26490 let opNewValue = 0;
26491 let DecoderNamespace = "EXT_mmvec";
26492 }
26493 def V6_pred_and_n : HInst<
26494 (outs HvxQR:$Qd4),
26495 (ins HvxQR:$Qs4, HvxQR:$Qt4),
26496 "$Qd4 = and($Qs4,!$Qt4)",
26497 tc_97c165b9, TypeCVI_VA_DV>, Enc_134437, Requires<[UseHVXV60]> {
26498 let Inst{7-2} = 0b000101;
26499 let Inst{13-10} = 0b0000;
26500 let Inst{21-16} = 0b000011;
26501 let Inst{31-24} = 0b00011110;
26502 let hasNewValue = 1;
26503 let opNewValue = 0;
26504 let DecoderNamespace = "EXT_mmvec";
26505 }
26506 def V6_pred_not : HInst<
26507 (outs HvxQR:$Qd4),
26508 (ins HvxQR:$Qs4),
26509 "$Qd4 = not($Qs4)",
26510 tc_71337255, TypeCVI_VA>, Enc_bfbf03, Requires<[UseHVXV60]> {
26511 let Inst{7-2} = 0b000010;
26512 let Inst{13-10} = 0b0000;
26513 let Inst{31-16} = 0b0001111000000011;
26514 let hasNewValue = 1;
26515 let opNewValue = 0;
26516 let DecoderNamespace = "EXT_mmvec";
26517 }
26518 def V6_pred_or : HInst<
26519 (outs HvxQR:$Qd4),
26520 (ins HvxQR:$Qs4, HvxQR:$Qt4),
26521 "$Qd4 = or($Qs4,$Qt4)",
26522 tc_97c165b9, TypeCVI_VA_DV>, Enc_134437, Requires<[UseHVXV60]> {
26523 let Inst{7-2} = 0b000001;
26524 let Inst{13-10} = 0b0000;
26525 let Inst{21-16} = 0b000011;
26526 let Inst{31-24} = 0b00011110;
26527 let hasNewValue = 1;
26528 let opNewValue = 0;
26529 let DecoderNamespace = "EXT_mmvec";
26530 }
26531 def V6_pred_or_n : HInst<
26532 (outs HvxQR:$Qd4),
26533 (ins HvxQR:$Qs4, HvxQR:$Qt4),
26534 "$Qd4 = or($Qs4,!$Qt4)",
26535 tc_97c165b9, TypeCVI_VA_DV>, Enc_134437, Requires<[UseHVXV60]> {
26536 let Inst{7-2} = 0b000100;
26537 let Inst{13-10} = 0b0000;
26538 let Inst{21-16} = 0b000011;
26539 let Inst{31-24} = 0b00011110;
26540 let hasNewValue = 1;
26541 let opNewValue = 0;
26542 let DecoderNamespace = "EXT_mmvec";
26543 }
26544 def V6_pred_scalar2 : HInst<
26545 (outs HvxQR:$Qd4),
26546 (ins IntRegs:$Rt32),
26547 "$Qd4 = vsetq($Rt32)",
26548 tc_4105d6b5, TypeCVI_VP>, Enc_7222b7, Requires<[UseHVXV60]> {
26549 let Inst{13-2} = 0b000000010001;
26550 let Inst{31-21} = 0b00011001101;
26551 let hasNewValue = 1;
26552 let opNewValue = 0;
26553 let DecoderNamespace = "EXT_mmvec";
26554 }
26555 def V6_pred_scalar2v2 : HInst<
26556 (outs HvxQR:$Qd4),
26557 (ins IntRegs:$Rt32),
26558 "$Qd4 = vsetq2($Rt32)",
26559 tc_4105d6b5, TypeCVI_VP>, Enc_7222b7, Requires<[UseHVXV62]> {
26560 let Inst{13-2} = 0b000000010011;
26561 let Inst{31-21} = 0b00011001101;
26562 let hasNewValue = 1;
26563 let opNewValue = 0;
26564 let DecoderNamespace = "EXT_mmvec";
26565 }
26566 def V6_pred_xor : HInst<
26567 (outs HvxQR:$Qd4),
26568 (ins HvxQR:$Qs4, HvxQR:$Qt4),
26569 "$Qd4 = xor($Qs4,$Qt4)",
26570 tc_97c165b9, TypeCVI_VA_DV>, Enc_134437, Requires<[UseHVXV60]> {
26571 let Inst{7-2} = 0b000011;
26572 let Inst{13-10} = 0b0000;
26573 let Inst{21-16} = 0b000011;
26574 let Inst{31-24} = 0b00011110;
26575 let hasNewValue = 1;
26576 let opNewValue = 0;
26577 let DecoderNamespace = "EXT_mmvec";
26578 }
26579 def V6_shuffeqh : HInst<
26580 (outs HvxQR:$Qd4),
26581 (ins HvxQR:$Qs4, HvxQR:$Qt4),
26582 "$Qd4.b = vshuffe($Qs4.h,$Qt4.h)",
26583 tc_97c165b9, TypeCVI_VA_DV>, Enc_134437, Requires<[UseHVXV62]> {
26584 let Inst{7-2} = 0b000110;
26585 let Inst{13-10} = 0b0000;
26586 let Inst{21-16} = 0b000011;
26587 let Inst{31-24} = 0b00011110;
26588 let hasNewValue = 1;
26589 let opNewValue = 0;
26590 let DecoderNamespace = "EXT_mmvec";
26591 }
26592 def V6_shuffeqw : HInst<
26593 (outs HvxQR:$Qd4),
26594 (ins HvxQR:$Qs4, HvxQR:$Qt4),
26595 "$Qd4.h = vshuffe($Qs4.w,$Qt4.w)",
26596 tc_97c165b9, TypeCVI_VA_DV>, Enc_134437, Requires<[UseHVXV62]> {
26597 let Inst{7-2} = 0b000111;
26598 let Inst{13-10} = 0b0000;
26599 let Inst{21-16} = 0b000011;
26600 let Inst{31-24} = 0b00011110;
26601 let hasNewValue = 1;
26602 let opNewValue = 0;
26603 let DecoderNamespace = "EXT_mmvec";
26604 }
26605 def V6_st0 : HInst<
26606 (outs),
26607 (ins IntRegs:$Rt32, HvxVR:$Vs32),
26608 "vmem($Rt32) = $Vs32",
26609 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26610 let isPseudo = 1;
26611 let isCodeGenOnly = 1;
26612 let DecoderNamespace = "EXT_mmvec";
26613 }
26614 def V6_stn0 : HInst<
26615 (outs),
26616 (ins IntRegs:$Rt32, HvxVR:$Os8),
26617 "vmem($Rt32) = $Os8.new",
26618 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26619 let isPseudo = 1;
26620 let isCodeGenOnly = 1;
26621 let DecoderNamespace = "EXT_mmvec";
26622 let opNewValue = 1;
26623 }
26624 def V6_stnnt0 : HInst<
26625 (outs),
26626 (ins IntRegs:$Rt32, HvxVR:$Os8),
26627 "vmem($Rt32):nt = $Os8.new",
26628 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26629 let isPseudo = 1;
26630 let isCodeGenOnly = 1;
26631 let DecoderNamespace = "EXT_mmvec";
26632 let opNewValue = 1;
26633 }
26634 def V6_stnp0 : HInst<
26635 (outs),
26636 (ins PredRegs:$Pv4, IntRegs:$Rt32, HvxVR:$Vs32),
26637 "if (!$Pv4) vmem($Rt32) = $Vs32",
26638 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26639 let isPseudo = 1;
26640 let isCodeGenOnly = 1;
26641 let DecoderNamespace = "EXT_mmvec";
26642 }
26643 def V6_stnpnt0 : HInst<
26644 (outs),
26645 (ins PredRegs:$Pv4, IntRegs:$Rt32, HvxVR:$Vs32),
26646 "if (!$Pv4) vmem($Rt32):nt = $Vs32",
26647 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26648 let isPseudo = 1;
26649 let isCodeGenOnly = 1;
26650 let DecoderNamespace = "EXT_mmvec";
26651 }
26652 def V6_stnq0 : HInst<
26653 (outs),
26654 (ins HvxQR:$Qv4, IntRegs:$Rt32, HvxVR:$Vs32),
26655 "if (!$Qv4) vmem($Rt32) = $Vs32",
26656 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26657 let isPseudo = 1;
26658 let isCodeGenOnly = 1;
26659 let DecoderNamespace = "EXT_mmvec";
26660 }
26661 def V6_stnqnt0 : HInst<
26662 (outs),
26663 (ins HvxQR:$Qv4, IntRegs:$Rt32, HvxVR:$Vs32),
26664 "if (!$Qv4) vmem($Rt32):nt = $Vs32",
26665 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26666 let isPseudo = 1;
26667 let isCodeGenOnly = 1;
26668 let DecoderNamespace = "EXT_mmvec";
26669 }
26670 def V6_stnt0 : HInst<
26671 (outs),
26672 (ins IntRegs:$Rt32, HvxVR:$Vs32),
26673 "vmem($Rt32):nt = $Vs32",
26674 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26675 let isPseudo = 1;
26676 let isCodeGenOnly = 1;
26677 let DecoderNamespace = "EXT_mmvec";
26678 }
26679 def V6_stp0 : HInst<
26680 (outs),
26681 (ins PredRegs:$Pv4, IntRegs:$Rt32, HvxVR:$Vs32),
26682 "if ($Pv4) vmem($Rt32) = $Vs32",
26683 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26684 let isPseudo = 1;
26685 let isCodeGenOnly = 1;
26686 let DecoderNamespace = "EXT_mmvec";
26687 }
26688 def V6_stpnt0 : HInst<
26689 (outs),
26690 (ins PredRegs:$Pv4, IntRegs:$Rt32, HvxVR:$Vs32),
26691 "if ($Pv4) vmem($Rt32):nt = $Vs32",
26692 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26693 let isPseudo = 1;
26694 let isCodeGenOnly = 1;
26695 let DecoderNamespace = "EXT_mmvec";
26696 }
26697 def V6_stq0 : HInst<
26698 (outs),
26699 (ins HvxQR:$Qv4, IntRegs:$Rt32, HvxVR:$Vs32),
26700 "if ($Qv4) vmem($Rt32) = $Vs32",
26701 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26702 let isPseudo = 1;
26703 let isCodeGenOnly = 1;
26704 let DecoderNamespace = "EXT_mmvec";
26705 }
26706 def V6_stqnt0 : HInst<
26707 (outs),
26708 (ins HvxQR:$Qv4, IntRegs:$Rt32, HvxVR:$Vs32),
26709 "if ($Qv4) vmem($Rt32):nt = $Vs32",
26710 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26711 let isPseudo = 1;
26712 let isCodeGenOnly = 1;
26713 let DecoderNamespace = "EXT_mmvec";
26714 }
26715 def V6_stu0 : HInst<
26716 (outs),
26717 (ins IntRegs:$Rt32, HvxVR:$Vs32),
26718 "vmemu($Rt32) = $Vs32",
26719 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26720 let isPseudo = 1;
26721 let isCodeGenOnly = 1;
26722 let DecoderNamespace = "EXT_mmvec";
26723 }
26724 def V6_stunp0 : HInst<
26725 (outs),
26726 (ins PredRegs:$Pv4, IntRegs:$Rt32, HvxVR:$Vs32),
26727 "if (!$Pv4) vmemu($Rt32) = $Vs32",
26728 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26729 let isPseudo = 1;
26730 let isCodeGenOnly = 1;
26731 let DecoderNamespace = "EXT_mmvec";
26732 }
26733 def V6_stup0 : HInst<
26734 (outs),
26735 (ins PredRegs:$Pv4, IntRegs:$Rt32, HvxVR:$Vs32),
26736 "if ($Pv4) vmemu($Rt32) = $Vs32",
26737 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26738 let isPseudo = 1;
26739 let isCodeGenOnly = 1;
26740 let DecoderNamespace = "EXT_mmvec";
26741 }
26742 def V6_vL32Ub_ai : HInst<
26743 (outs HvxVR:$Vd32),
26744 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
26745 "$Vd32 = vmemu($Rt32+#$Ii)",
26746 tc_35e92f8e, TypeCVI_VM_VP_LDU>, Enc_f3f408, Requires<[UseHVXV60]> {
26747 let Inst{7-5} = 0b111;
26748 let Inst{12-11} = 0b00;
26749 let Inst{31-21} = 0b00101000000;
26750 let hasNewValue = 1;
26751 let opNewValue = 0;
26752 let addrMode = BaseImmOffset;
26753 let accessSize = HVXVectorAccess;
26754 let isCVLoad = 1;
26755 let mayLoad = 1;
26756 let isRestrictNoSlot1Store = 1;
26757 let DecoderNamespace = "EXT_mmvec";
26758 }
26759 def V6_vL32Ub_pi : HInst<
26760 (outs HvxVR:$Vd32, IntRegs:$Rx32),
26761 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
26762 "$Vd32 = vmemu($Rx32++#$Ii)",
26763 tc_4fd8566e, TypeCVI_VM_VP_LDU>, Enc_a255dc, Requires<[UseHVXV60]> {
26764 let Inst{7-5} = 0b111;
26765 let Inst{13-11} = 0b000;
26766 let Inst{31-21} = 0b00101001000;
26767 let hasNewValue = 1;
26768 let opNewValue = 0;
26769 let addrMode = PostInc;
26770 let accessSize = HVXVectorAccess;
26771 let isCVLoad = 1;
26772 let mayLoad = 1;
26773 let isRestrictNoSlot1Store = 1;
26774 let BaseOpcode = "V6_vL32b_pi";
26775 let DecoderNamespace = "EXT_mmvec";
26776 let Constraints = "$Rx32 = $Rx32in";
26777 }
26778 def V6_vL32Ub_ppu : HInst<
26779 (outs HvxVR:$Vd32, IntRegs:$Rx32),
26780 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
26781 "$Vd32 = vmemu($Rx32++$Mu2)",
26782 tc_4fd8566e, TypeCVI_VM_VP_LDU>, Enc_2ebe3b, Requires<[UseHVXV60]> {
26783 let Inst{12-5} = 0b00000111;
26784 let Inst{31-21} = 0b00101011000;
26785 let hasNewValue = 1;
26786 let opNewValue = 0;
26787 let addrMode = PostInc;
26788 let accessSize = HVXVectorAccess;
26789 let isCVLoad = 1;
26790 let mayLoad = 1;
26791 let isRestrictNoSlot1Store = 1;
26792 let DecoderNamespace = "EXT_mmvec";
26793 let Constraints = "$Rx32 = $Rx32in";
26794 }
26795 def V6_vL32b_ai : HInst<
26796 (outs HvxVR:$Vd32),
26797 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
26798 "$Vd32 = vmem($Rt32+#$Ii)",
26799 tc_b712833a, TypeCVI_VM_LD>, Enc_f3f408, Requires<[UseHVXV60]>, PredRel {
26800 let Inst{7-5} = 0b000;
26801 let Inst{12-11} = 0b00;
26802 let Inst{31-21} = 0b00101000000;
26803 let hasNewValue = 1;
26804 let opNewValue = 0;
26805 let addrMode = BaseImmOffset;
26806 let accessSize = HVXVectorAccess;
26807 let isCVLoad = 1;
26808 let mayLoad = 1;
26809 let isRestrictNoSlot1Store = 1;
26810 let BaseOpcode = "V6_vL32b_ai";
26811 let isCVLoadable = 1;
26812 let isPredicable = 1;
26813 let DecoderNamespace = "EXT_mmvec";
26814 }
26815 def V6_vL32b_cur_ai : HInst<
26816 (outs HvxVR:$Vd32),
26817 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
26818 "$Vd32.cur = vmem($Rt32+#$Ii)",
26819 tc_b712833a, TypeCVI_VM_LD>, Enc_f3f408, Requires<[UseHVXV60]>, PredRel {
26820 let Inst{7-5} = 0b001;
26821 let Inst{12-11} = 0b00;
26822 let Inst{31-21} = 0b00101000000;
26823 let hasNewValue = 1;
26824 let opNewValue = 0;
26825 let addrMode = BaseImmOffset;
26826 let accessSize = HVXVectorAccess;
26827 let isCVLoad = 1;
26828 let CVINew = 1;
26829 let mayLoad = 1;
26830 let isRestrictNoSlot1Store = 1;
26831 let BaseOpcode = "V6_vL32b_cur_ai";
26832 let isPredicable = 1;
26833 let DecoderNamespace = "EXT_mmvec";
26834 }
26835 def V6_vL32b_cur_npred_ai : HInst<
26836 (outs HvxVR:$Vd32),
26837 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
26838 "if (!$Pv4) $Vd32.cur = vmem($Rt32+#$Ii)",
26839 tc_5cbf490b, TypeCVI_VM_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
26840 let Inst{7-5} = 0b101;
26841 let Inst{31-21} = 0b00101000100;
26842 let isPredicated = 1;
26843 let isPredicatedFalse = 1;
26844 let hasNewValue = 1;
26845 let opNewValue = 0;
26846 let addrMode = BaseImmOffset;
26847 let accessSize = HVXVectorAccess;
26848 let isCVLoad = 1;
26849 let CVINew = 1;
26850 let mayLoad = 1;
26851 let isRestrictNoSlot1Store = 1;
26852 let BaseOpcode = "V6_vL32b_cur_ai";
26853 let DecoderNamespace = "EXT_mmvec";
26854 }
26855 def V6_vL32b_cur_npred_pi : HInst<
26856 (outs HvxVR:$Vd32, IntRegs:$Rx32),
26857 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
26858 "if (!$Pv4) $Vd32.cur = vmem($Rx32++#$Ii)",
26859 tc_da979fb3, TypeCVI_VM_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
26860 let Inst{7-5} = 0b101;
26861 let Inst{13-13} = 0b0;
26862 let Inst{31-21} = 0b00101001100;
26863 let isPredicated = 1;
26864 let isPredicatedFalse = 1;
26865 let hasNewValue = 1;
26866 let opNewValue = 0;
26867 let addrMode = PostInc;
26868 let accessSize = HVXVectorAccess;
26869 let isCVLoad = 1;
26870 let CVINew = 1;
26871 let mayLoad = 1;
26872 let isRestrictNoSlot1Store = 1;
26873 let BaseOpcode = "V6_vL32b_cur_pi";
26874 let DecoderNamespace = "EXT_mmvec";
26875 let Constraints = "$Rx32 = $Rx32in";
26876 }
26877 def V6_vL32b_cur_npred_ppu : HInst<
26878 (outs HvxVR:$Vd32, IntRegs:$Rx32),
26879 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
26880 "if (!$Pv4) $Vd32.cur = vmem($Rx32++$Mu2)",
26881 tc_da979fb3, TypeCVI_VM_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
26882 let Inst{10-5} = 0b000101;
26883 let Inst{31-21} = 0b00101011100;
26884 let isPredicated = 1;
26885 let isPredicatedFalse = 1;
26886 let hasNewValue = 1;
26887 let opNewValue = 0;
26888 let addrMode = PostInc;
26889 let accessSize = HVXVectorAccess;
26890 let isCVLoad = 1;
26891 let CVINew = 1;
26892 let mayLoad = 1;
26893 let isRestrictNoSlot1Store = 1;
26894 let BaseOpcode = "V6_vL32b_cur_ppu";
26895 let DecoderNamespace = "EXT_mmvec";
26896 let Constraints = "$Rx32 = $Rx32in";
26897 }
26898 def V6_vL32b_cur_pi : HInst<
26899 (outs HvxVR:$Vd32, IntRegs:$Rx32),
26900 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
26901 "$Vd32.cur = vmem($Rx32++#$Ii)",
26902 tc_eb669007, TypeCVI_VM_LD>, Enc_a255dc, Requires<[UseHVXV60]>, PredRel {
26903 let Inst{7-5} = 0b001;
26904 let Inst{13-11} = 0b000;
26905 let Inst{31-21} = 0b00101001000;
26906 let hasNewValue = 1;
26907 let opNewValue = 0;
26908 let addrMode = PostInc;
26909 let accessSize = HVXVectorAccess;
26910 let isCVLoad = 1;
26911 let CVINew = 1;
26912 let mayLoad = 1;
26913 let isRestrictNoSlot1Store = 1;
26914 let BaseOpcode = "V6_vL32b_cur_pi";
26915 let isPredicable = 1;
26916 let DecoderNamespace = "EXT_mmvec";
26917 let Constraints = "$Rx32 = $Rx32in";
26918 }
26919 def V6_vL32b_cur_ppu : HInst<
26920 (outs HvxVR:$Vd32, IntRegs:$Rx32),
26921 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
26922 "$Vd32.cur = vmem($Rx32++$Mu2)",
26923 tc_eb669007, TypeCVI_VM_LD>, Enc_2ebe3b, Requires<[UseHVXV60]>, PredRel {
26924 let Inst{12-5} = 0b00000001;
26925 let Inst{31-21} = 0b00101011000;
26926 let hasNewValue = 1;
26927 let opNewValue = 0;
26928 let addrMode = PostInc;
26929 let accessSize = HVXVectorAccess;
26930 let isCVLoad = 1;
26931 let CVINew = 1;
26932 let mayLoad = 1;
26933 let isRestrictNoSlot1Store = 1;
26934 let BaseOpcode = "V6_vL32b_cur_ppu";
26935 let isPredicable = 1;
26936 let DecoderNamespace = "EXT_mmvec";
26937 let Constraints = "$Rx32 = $Rx32in";
26938 }
26939 def V6_vL32b_cur_pred_ai : HInst<
26940 (outs HvxVR:$Vd32),
26941 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
26942 "if ($Pv4) $Vd32.cur = vmem($Rt32+#$Ii)",
26943 tc_5cbf490b, TypeCVI_VM_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
26944 let Inst{7-5} = 0b100;
26945 let Inst{31-21} = 0b00101000100;
26946 let isPredicated = 1;
26947 let hasNewValue = 1;
26948 let opNewValue = 0;
26949 let addrMode = BaseImmOffset;
26950 let accessSize = HVXVectorAccess;
26951 let isCVLoad = 1;
26952 let CVINew = 1;
26953 let mayLoad = 1;
26954 let isRestrictNoSlot1Store = 1;
26955 let BaseOpcode = "V6_vL32b_cur_ai";
26956 let DecoderNamespace = "EXT_mmvec";
26957 }
26958 def V6_vL32b_cur_pred_pi : HInst<
26959 (outs HvxVR:$Vd32, IntRegs:$Rx32),
26960 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
26961 "if ($Pv4) $Vd32.cur = vmem($Rx32++#$Ii)",
26962 tc_da979fb3, TypeCVI_VM_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
26963 let Inst{7-5} = 0b100;
26964 let Inst{13-13} = 0b0;
26965 let Inst{31-21} = 0b00101001100;
26966 let isPredicated = 1;
26967 let hasNewValue = 1;
26968 let opNewValue = 0;
26969 let addrMode = PostInc;
26970 let accessSize = HVXVectorAccess;
26971 let isCVLoad = 1;
26972 let CVINew = 1;
26973 let mayLoad = 1;
26974 let isRestrictNoSlot1Store = 1;
26975 let BaseOpcode = "V6_vL32b_cur_pi";
26976 let DecoderNamespace = "EXT_mmvec";
26977 let Constraints = "$Rx32 = $Rx32in";
26978 }
26979 def V6_vL32b_cur_pred_ppu : HInst<
26980 (outs HvxVR:$Vd32, IntRegs:$Rx32),
26981 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
26982 "if ($Pv4) $Vd32.cur = vmem($Rx32++$Mu2)",
26983 tc_da979fb3, TypeCVI_VM_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
26984 let Inst{10-5} = 0b000100;
26985 let Inst{31-21} = 0b00101011100;
26986 let isPredicated = 1;
26987 let hasNewValue = 1;
26988 let opNewValue = 0;
26989 let addrMode = PostInc;
26990 let accessSize = HVXVectorAccess;
26991 let isCVLoad = 1;
26992 let CVINew = 1;
26993 let mayLoad = 1;
26994 let isRestrictNoSlot1Store = 1;
26995 let BaseOpcode = "V6_vL32b_cur_ppu";
26996 let DecoderNamespace = "EXT_mmvec";
26997 let Constraints = "$Rx32 = $Rx32in";
26998 }
26999 def V6_vL32b_npred_ai : HInst<
27000 (outs HvxVR:$Vd32),
27001 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27002 "if (!$Pv4) $Vd32 = vmem($Rt32+#$Ii)",
27003 tc_5cbf490b, TypeCVI_VM_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27004 let Inst{7-5} = 0b011;
27005 let Inst{31-21} = 0b00101000100;
27006 let isPredicated = 1;
27007 let isPredicatedFalse = 1;
27008 let hasNewValue = 1;
27009 let opNewValue = 0;
27010 let addrMode = BaseImmOffset;
27011 let accessSize = HVXVectorAccess;
27012 let isCVLoad = 1;
27013 let mayLoad = 1;
27014 let isRestrictNoSlot1Store = 1;
27015 let BaseOpcode = "V6_vL32b_ai";
27016 let DecoderNamespace = "EXT_mmvec";
27017 }
27018 def V6_vL32b_npred_pi : HInst<
27019 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27020 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27021 "if (!$Pv4) $Vd32 = vmem($Rx32++#$Ii)",
27022 tc_da979fb3, TypeCVI_VM_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27023 let Inst{7-5} = 0b011;
27024 let Inst{13-13} = 0b0;
27025 let Inst{31-21} = 0b00101001100;
27026 let isPredicated = 1;
27027 let isPredicatedFalse = 1;
27028 let hasNewValue = 1;
27029 let opNewValue = 0;
27030 let addrMode = PostInc;
27031 let accessSize = HVXVectorAccess;
27032 let isCVLoad = 1;
27033 let mayLoad = 1;
27034 let isRestrictNoSlot1Store = 1;
27035 let BaseOpcode = "V6_vL32b_pi";
27036 let DecoderNamespace = "EXT_mmvec";
27037 let Constraints = "$Rx32 = $Rx32in";
27038 }
27039 def V6_vL32b_npred_ppu : HInst<
27040 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27041 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27042 "if (!$Pv4) $Vd32 = vmem($Rx32++$Mu2)",
27043 tc_da979fb3, TypeCVI_VM_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27044 let Inst{10-5} = 0b000011;
27045 let Inst{31-21} = 0b00101011100;
27046 let isPredicated = 1;
27047 let isPredicatedFalse = 1;
27048 let hasNewValue = 1;
27049 let opNewValue = 0;
27050 let addrMode = PostInc;
27051 let accessSize = HVXVectorAccess;
27052 let isCVLoad = 1;
27053 let mayLoad = 1;
27054 let isRestrictNoSlot1Store = 1;
27055 let BaseOpcode = "V6_vL32b_ppu";
27056 let DecoderNamespace = "EXT_mmvec";
27057 let Constraints = "$Rx32 = $Rx32in";
27058 }
27059 def V6_vL32b_nt_ai : HInst<
27060 (outs HvxVR:$Vd32),
27061 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
27062 "$Vd32 = vmem($Rt32+#$Ii):nt",
27063 tc_b712833a, TypeCVI_VM_LD>, Enc_f3f408, Requires<[UseHVXV60]>, PredRel {
27064 let Inst{7-5} = 0b000;
27065 let Inst{12-11} = 0b00;
27066 let Inst{31-21} = 0b00101000010;
27067 let hasNewValue = 1;
27068 let opNewValue = 0;
27069 let addrMode = BaseImmOffset;
27070 let accessSize = HVXVectorAccess;
27071 let isCVLoad = 1;
27072 let mayLoad = 1;
27073 let isNonTemporal = 1;
27074 let isRestrictNoSlot1Store = 1;
27075 let BaseOpcode = "V6_vL32b_nt_ai";
27076 let isCVLoadable = 1;
27077 let isPredicable = 1;
27078 let DecoderNamespace = "EXT_mmvec";
27079 }
27080 def V6_vL32b_nt_cur_ai : HInst<
27081 (outs HvxVR:$Vd32),
27082 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
27083 "$Vd32.cur = vmem($Rt32+#$Ii):nt",
27084 tc_b712833a, TypeCVI_VM_LD>, Enc_f3f408, Requires<[UseHVXV60]>, PredRel {
27085 let Inst{7-5} = 0b001;
27086 let Inst{12-11} = 0b00;
27087 let Inst{31-21} = 0b00101000010;
27088 let hasNewValue = 1;
27089 let opNewValue = 0;
27090 let addrMode = BaseImmOffset;
27091 let accessSize = HVXVectorAccess;
27092 let isCVLoad = 1;
27093 let CVINew = 1;
27094 let mayLoad = 1;
27095 let isNonTemporal = 1;
27096 let isRestrictNoSlot1Store = 1;
27097 let BaseOpcode = "V6_vL32b_nt_cur_ai";
27098 let isPredicable = 1;
27099 let DecoderNamespace = "EXT_mmvec";
27100 }
27101 def V6_vL32b_nt_cur_npred_ai : HInst<
27102 (outs HvxVR:$Vd32),
27103 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27104 "if (!$Pv4) $Vd32.cur = vmem($Rt32+#$Ii):nt",
27105 tc_5cbf490b, TypeCVI_VM_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27106 let Inst{7-5} = 0b101;
27107 let Inst{31-21} = 0b00101000110;
27108 let isPredicated = 1;
27109 let isPredicatedFalse = 1;
27110 let hasNewValue = 1;
27111 let opNewValue = 0;
27112 let addrMode = BaseImmOffset;
27113 let accessSize = HVXVectorAccess;
27114 let isCVLoad = 1;
27115 let CVINew = 1;
27116 let mayLoad = 1;
27117 let isNonTemporal = 1;
27118 let isRestrictNoSlot1Store = 1;
27119 let BaseOpcode = "V6_vL32b_nt_cur_ai";
27120 let DecoderNamespace = "EXT_mmvec";
27121 }
27122 def V6_vL32b_nt_cur_npred_pi : HInst<
27123 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27124 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27125 "if (!$Pv4) $Vd32.cur = vmem($Rx32++#$Ii):nt",
27126 tc_da979fb3, TypeCVI_VM_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27127 let Inst{7-5} = 0b101;
27128 let Inst{13-13} = 0b0;
27129 let Inst{31-21} = 0b00101001110;
27130 let isPredicated = 1;
27131 let isPredicatedFalse = 1;
27132 let hasNewValue = 1;
27133 let opNewValue = 0;
27134 let addrMode = PostInc;
27135 let accessSize = HVXVectorAccess;
27136 let isCVLoad = 1;
27137 let CVINew = 1;
27138 let mayLoad = 1;
27139 let isNonTemporal = 1;
27140 let isRestrictNoSlot1Store = 1;
27141 let BaseOpcode = "V6_vL32b_nt_cur_pi";
27142 let DecoderNamespace = "EXT_mmvec";
27143 let Constraints = "$Rx32 = $Rx32in";
27144 }
27145 def V6_vL32b_nt_cur_npred_ppu : HInst<
27146 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27147 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27148 "if (!$Pv4) $Vd32.cur = vmem($Rx32++$Mu2):nt",
27149 tc_da979fb3, TypeCVI_VM_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27150 let Inst{10-5} = 0b000101;
27151 let Inst{31-21} = 0b00101011110;
27152 let isPredicated = 1;
27153 let isPredicatedFalse = 1;
27154 let hasNewValue = 1;
27155 let opNewValue = 0;
27156 let addrMode = PostInc;
27157 let accessSize = HVXVectorAccess;
27158 let isCVLoad = 1;
27159 let CVINew = 1;
27160 let mayLoad = 1;
27161 let isNonTemporal = 1;
27162 let isRestrictNoSlot1Store = 1;
27163 let BaseOpcode = "V6_vL32b_nt_cur_ppu";
27164 let DecoderNamespace = "EXT_mmvec";
27165 let Constraints = "$Rx32 = $Rx32in";
27166 }
27167 def V6_vL32b_nt_cur_pi : HInst<
27168 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27169 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
27170 "$Vd32.cur = vmem($Rx32++#$Ii):nt",
27171 tc_eb669007, TypeCVI_VM_LD>, Enc_a255dc, Requires<[UseHVXV60]>, PredRel {
27172 let Inst{7-5} = 0b001;
27173 let Inst{13-11} = 0b000;
27174 let Inst{31-21} = 0b00101001010;
27175 let hasNewValue = 1;
27176 let opNewValue = 0;
27177 let addrMode = PostInc;
27178 let accessSize = HVXVectorAccess;
27179 let isCVLoad = 1;
27180 let CVINew = 1;
27181 let mayLoad = 1;
27182 let isNonTemporal = 1;
27183 let isRestrictNoSlot1Store = 1;
27184 let BaseOpcode = "V6_vL32b_nt_cur_pi";
27185 let isPredicable = 1;
27186 let DecoderNamespace = "EXT_mmvec";
27187 let Constraints = "$Rx32 = $Rx32in";
27188 }
27189 def V6_vL32b_nt_cur_ppu : HInst<
27190 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27191 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
27192 "$Vd32.cur = vmem($Rx32++$Mu2):nt",
27193 tc_eb669007, TypeCVI_VM_LD>, Enc_2ebe3b, Requires<[UseHVXV60]>, PredRel {
27194 let Inst{12-5} = 0b00000001;
27195 let Inst{31-21} = 0b00101011010;
27196 let hasNewValue = 1;
27197 let opNewValue = 0;
27198 let addrMode = PostInc;
27199 let accessSize = HVXVectorAccess;
27200 let isCVLoad = 1;
27201 let CVINew = 1;
27202 let mayLoad = 1;
27203 let isNonTemporal = 1;
27204 let isRestrictNoSlot1Store = 1;
27205 let BaseOpcode = "V6_vL32b_nt_cur_ppu";
27206 let isPredicable = 1;
27207 let DecoderNamespace = "EXT_mmvec";
27208 let Constraints = "$Rx32 = $Rx32in";
27209 }
27210 def V6_vL32b_nt_cur_pred_ai : HInst<
27211 (outs HvxVR:$Vd32),
27212 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27213 "if ($Pv4) $Vd32.cur = vmem($Rt32+#$Ii):nt",
27214 tc_5cbf490b, TypeCVI_VM_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27215 let Inst{7-5} = 0b100;
27216 let Inst{31-21} = 0b00101000110;
27217 let isPredicated = 1;
27218 let hasNewValue = 1;
27219 let opNewValue = 0;
27220 let addrMode = BaseImmOffset;
27221 let accessSize = HVXVectorAccess;
27222 let isCVLoad = 1;
27223 let CVINew = 1;
27224 let mayLoad = 1;
27225 let isNonTemporal = 1;
27226 let isRestrictNoSlot1Store = 1;
27227 let BaseOpcode = "V6_vL32b_nt_cur_ai";
27228 let DecoderNamespace = "EXT_mmvec";
27229 }
27230 def V6_vL32b_nt_cur_pred_pi : HInst<
27231 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27232 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27233 "if ($Pv4) $Vd32.cur = vmem($Rx32++#$Ii):nt",
27234 tc_da979fb3, TypeCVI_VM_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27235 let Inst{7-5} = 0b100;
27236 let Inst{13-13} = 0b0;
27237 let Inst{31-21} = 0b00101001110;
27238 let isPredicated = 1;
27239 let hasNewValue = 1;
27240 let opNewValue = 0;
27241 let addrMode = PostInc;
27242 let accessSize = HVXVectorAccess;
27243 let isCVLoad = 1;
27244 let CVINew = 1;
27245 let mayLoad = 1;
27246 let isNonTemporal = 1;
27247 let isRestrictNoSlot1Store = 1;
27248 let BaseOpcode = "V6_vL32b_nt_cur_pi";
27249 let DecoderNamespace = "EXT_mmvec";
27250 let Constraints = "$Rx32 = $Rx32in";
27251 }
27252 def V6_vL32b_nt_cur_pred_ppu : HInst<
27253 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27254 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27255 "if ($Pv4) $Vd32.cur = vmem($Rx32++$Mu2):nt",
27256 tc_da979fb3, TypeCVI_VM_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27257 let Inst{10-5} = 0b000100;
27258 let Inst{31-21} = 0b00101011110;
27259 let isPredicated = 1;
27260 let hasNewValue = 1;
27261 let opNewValue = 0;
27262 let addrMode = PostInc;
27263 let accessSize = HVXVectorAccess;
27264 let isCVLoad = 1;
27265 let CVINew = 1;
27266 let mayLoad = 1;
27267 let isNonTemporal = 1;
27268 let isRestrictNoSlot1Store = 1;
27269 let BaseOpcode = "V6_vL32b_nt_cur_ppu";
27270 let DecoderNamespace = "EXT_mmvec";
27271 let Constraints = "$Rx32 = $Rx32in";
27272 }
27273 def V6_vL32b_nt_npred_ai : HInst<
27274 (outs HvxVR:$Vd32),
27275 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27276 "if (!$Pv4) $Vd32 = vmem($Rt32+#$Ii):nt",
27277 tc_5cbf490b, TypeCVI_VM_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27278 let Inst{7-5} = 0b011;
27279 let Inst{31-21} = 0b00101000110;
27280 let isPredicated = 1;
27281 let isPredicatedFalse = 1;
27282 let hasNewValue = 1;
27283 let opNewValue = 0;
27284 let addrMode = BaseImmOffset;
27285 let accessSize = HVXVectorAccess;
27286 let isCVLoad = 1;
27287 let mayLoad = 1;
27288 let isNonTemporal = 1;
27289 let isRestrictNoSlot1Store = 1;
27290 let BaseOpcode = "V6_vL32b_nt_ai";
27291 let DecoderNamespace = "EXT_mmvec";
27292 }
27293 def V6_vL32b_nt_npred_pi : HInst<
27294 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27295 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27296 "if (!$Pv4) $Vd32 = vmem($Rx32++#$Ii):nt",
27297 tc_da979fb3, TypeCVI_VM_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27298 let Inst{7-5} = 0b011;
27299 let Inst{13-13} = 0b0;
27300 let Inst{31-21} = 0b00101001110;
27301 let isPredicated = 1;
27302 let isPredicatedFalse = 1;
27303 let hasNewValue = 1;
27304 let opNewValue = 0;
27305 let addrMode = PostInc;
27306 let accessSize = HVXVectorAccess;
27307 let isCVLoad = 1;
27308 let mayLoad = 1;
27309 let isNonTemporal = 1;
27310 let isRestrictNoSlot1Store = 1;
27311 let BaseOpcode = "V6_vL32b_nt_pi";
27312 let DecoderNamespace = "EXT_mmvec";
27313 let Constraints = "$Rx32 = $Rx32in";
27314 }
27315 def V6_vL32b_nt_npred_ppu : HInst<
27316 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27317 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27318 "if (!$Pv4) $Vd32 = vmem($Rx32++$Mu2):nt",
27319 tc_da979fb3, TypeCVI_VM_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27320 let Inst{10-5} = 0b000011;
27321 let Inst{31-21} = 0b00101011110;
27322 let isPredicated = 1;
27323 let isPredicatedFalse = 1;
27324 let hasNewValue = 1;
27325 let opNewValue = 0;
27326 let addrMode = PostInc;
27327 let accessSize = HVXVectorAccess;
27328 let isCVLoad = 1;
27329 let mayLoad = 1;
27330 let isNonTemporal = 1;
27331 let isRestrictNoSlot1Store = 1;
27332 let BaseOpcode = "V6_vL32b_nt_ppu";
27333 let DecoderNamespace = "EXT_mmvec";
27334 let Constraints = "$Rx32 = $Rx32in";
27335 }
27336 def V6_vL32b_nt_pi : HInst<
27337 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27338 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
27339 "$Vd32 = vmem($Rx32++#$Ii):nt",
27340 tc_eb669007, TypeCVI_VM_LD>, Enc_a255dc, Requires<[UseHVXV60]>, PredRel {
27341 let Inst{7-5} = 0b000;
27342 let Inst{13-11} = 0b000;
27343 let Inst{31-21} = 0b00101001010;
27344 let hasNewValue = 1;
27345 let opNewValue = 0;
27346 let addrMode = PostInc;
27347 let accessSize = HVXVectorAccess;
27348 let isCVLoad = 1;
27349 let mayLoad = 1;
27350 let isNonTemporal = 1;
27351 let isRestrictNoSlot1Store = 1;
27352 let BaseOpcode = "V6_vL32b_nt_pi";
27353 let isCVLoadable = 1;
27354 let isPredicable = 1;
27355 let DecoderNamespace = "EXT_mmvec";
27356 let Constraints = "$Rx32 = $Rx32in";
27357 }
27358 def V6_vL32b_nt_ppu : HInst<
27359 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27360 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
27361 "$Vd32 = vmem($Rx32++$Mu2):nt",
27362 tc_eb669007, TypeCVI_VM_LD>, Enc_2ebe3b, Requires<[UseHVXV60]>, PredRel {
27363 let Inst{12-5} = 0b00000000;
27364 let Inst{31-21} = 0b00101011010;
27365 let hasNewValue = 1;
27366 let opNewValue = 0;
27367 let addrMode = PostInc;
27368 let accessSize = HVXVectorAccess;
27369 let isCVLoad = 1;
27370 let mayLoad = 1;
27371 let isNonTemporal = 1;
27372 let isRestrictNoSlot1Store = 1;
27373 let BaseOpcode = "V6_vL32b_nt_ppu";
27374 let isCVLoadable = 1;
27375 let isPredicable = 1;
27376 let DecoderNamespace = "EXT_mmvec";
27377 let Constraints = "$Rx32 = $Rx32in";
27378 }
27379 def V6_vL32b_nt_pred_ai : HInst<
27380 (outs HvxVR:$Vd32),
27381 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27382 "if ($Pv4) $Vd32 = vmem($Rt32+#$Ii):nt",
27383 tc_5cbf490b, TypeCVI_VM_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27384 let Inst{7-5} = 0b010;
27385 let Inst{31-21} = 0b00101000110;
27386 let isPredicated = 1;
27387 let hasNewValue = 1;
27388 let opNewValue = 0;
27389 let addrMode = BaseImmOffset;
27390 let accessSize = HVXVectorAccess;
27391 let isCVLoad = 1;
27392 let mayLoad = 1;
27393 let isNonTemporal = 1;
27394 let isRestrictNoSlot1Store = 1;
27395 let BaseOpcode = "V6_vL32b_nt_ai";
27396 let DecoderNamespace = "EXT_mmvec";
27397 }
27398 def V6_vL32b_nt_pred_pi : HInst<
27399 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27400 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27401 "if ($Pv4) $Vd32 = vmem($Rx32++#$Ii):nt",
27402 tc_da979fb3, TypeCVI_VM_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27403 let Inst{7-5} = 0b010;
27404 let Inst{13-13} = 0b0;
27405 let Inst{31-21} = 0b00101001110;
27406 let isPredicated = 1;
27407 let hasNewValue = 1;
27408 let opNewValue = 0;
27409 let addrMode = PostInc;
27410 let accessSize = HVXVectorAccess;
27411 let isCVLoad = 1;
27412 let mayLoad = 1;
27413 let isNonTemporal = 1;
27414 let isRestrictNoSlot1Store = 1;
27415 let BaseOpcode = "V6_vL32b_nt_pi";
27416 let DecoderNamespace = "EXT_mmvec";
27417 let Constraints = "$Rx32 = $Rx32in";
27418 }
27419 def V6_vL32b_nt_pred_ppu : HInst<
27420 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27421 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27422 "if ($Pv4) $Vd32 = vmem($Rx32++$Mu2):nt",
27423 tc_da979fb3, TypeCVI_VM_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27424 let Inst{10-5} = 0b000010;
27425 let Inst{31-21} = 0b00101011110;
27426 let isPredicated = 1;
27427 let hasNewValue = 1;
27428 let opNewValue = 0;
27429 let addrMode = PostInc;
27430 let accessSize = HVXVectorAccess;
27431 let isCVLoad = 1;
27432 let mayLoad = 1;
27433 let isNonTemporal = 1;
27434 let isRestrictNoSlot1Store = 1;
27435 let BaseOpcode = "V6_vL32b_nt_ppu";
27436 let DecoderNamespace = "EXT_mmvec";
27437 let Constraints = "$Rx32 = $Rx32in";
27438 }
27439 def V6_vL32b_nt_tmp_ai : HInst<
27440 (outs HvxVR:$Vd32),
27441 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
27442 "$Vd32.tmp = vmem($Rt32+#$Ii):nt",
27443 tc_77a4c701, TypeCVI_VM_TMP_LD>, Enc_f3f408, Requires<[UseHVXV60]>, PredRel {
27444 let Inst{7-5} = 0b010;
27445 let Inst{12-11} = 0b00;
27446 let Inst{31-21} = 0b00101000010;
27447 let hasNewValue = 1;
27448 let opNewValue = 0;
27449 let addrMode = BaseImmOffset;
27450 let accessSize = HVXVectorAccess;
27451 let isCVLoad = 1;
27452 let mayLoad = 1;
27453 let isNonTemporal = 1;
27454 let isRestrictNoSlot1Store = 1;
27455 let BaseOpcode = "V6_vL32b_nt_tmp_ai";
27456 let isPredicable = 1;
27457 let DecoderNamespace = "EXT_mmvec";
27458 }
27459 def V6_vL32b_nt_tmp_npred_ai : HInst<
27460 (outs HvxVR:$Vd32),
27461 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27462 "if (!$Pv4) $Vd32.tmp = vmem($Rt32+#$Ii):nt",
27463 tc_51cd3aab, TypeCVI_VM_TMP_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27464 let Inst{7-5} = 0b111;
27465 let Inst{31-21} = 0b00101000110;
27466 let isPredicated = 1;
27467 let isPredicatedFalse = 1;
27468 let hasNewValue = 1;
27469 let opNewValue = 0;
27470 let addrMode = BaseImmOffset;
27471 let accessSize = HVXVectorAccess;
27472 let isCVLoad = 1;
27473 let mayLoad = 1;
27474 let isNonTemporal = 1;
27475 let isRestrictNoSlot1Store = 1;
27476 let BaseOpcode = "V6_vL32b_nt_tmp_ai";
27477 let DecoderNamespace = "EXT_mmvec";
27478 }
27479 def V6_vL32b_nt_tmp_npred_pi : HInst<
27480 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27481 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27482 "if (!$Pv4) $Vd32.tmp = vmem($Rx32++#$Ii):nt",
27483 tc_38208312, TypeCVI_VM_TMP_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27484 let Inst{7-5} = 0b111;
27485 let Inst{13-13} = 0b0;
27486 let Inst{31-21} = 0b00101001110;
27487 let isPredicated = 1;
27488 let isPredicatedFalse = 1;
27489 let hasNewValue = 1;
27490 let opNewValue = 0;
27491 let addrMode = PostInc;
27492 let accessSize = HVXVectorAccess;
27493 let isCVLoad = 1;
27494 let mayLoad = 1;
27495 let isNonTemporal = 1;
27496 let isRestrictNoSlot1Store = 1;
27497 let BaseOpcode = "V6_vL32b_nt_tmp_pi";
27498 let DecoderNamespace = "EXT_mmvec";
27499 let Constraints = "$Rx32 = $Rx32in";
27500 }
27501 def V6_vL32b_nt_tmp_npred_ppu : HInst<
27502 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27503 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27504 "if (!$Pv4) $Vd32.tmp = vmem($Rx32++$Mu2):nt",
27505 tc_38208312, TypeCVI_VM_TMP_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27506 let Inst{10-5} = 0b000111;
27507 let Inst{31-21} = 0b00101011110;
27508 let isPredicated = 1;
27509 let isPredicatedFalse = 1;
27510 let hasNewValue = 1;
27511 let opNewValue = 0;
27512 let addrMode = PostInc;
27513 let accessSize = HVXVectorAccess;
27514 let isCVLoad = 1;
27515 let mayLoad = 1;
27516 let isNonTemporal = 1;
27517 let isRestrictNoSlot1Store = 1;
27518 let BaseOpcode = "V6_vL32b_nt_tmp_ppu";
27519 let DecoderNamespace = "EXT_mmvec";
27520 let Constraints = "$Rx32 = $Rx32in";
27521 }
27522 def V6_vL32b_nt_tmp_pi : HInst<
27523 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27524 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
27525 "$Vd32.tmp = vmem($Rx32++#$Ii):nt",
27526 tc_9c267309, TypeCVI_VM_TMP_LD>, Enc_a255dc, Requires<[UseHVXV60]>, PredRel {
27527 let Inst{7-5} = 0b010;
27528 let Inst{13-11} = 0b000;
27529 let Inst{31-21} = 0b00101001010;
27530 let hasNewValue = 1;
27531 let opNewValue = 0;
27532 let addrMode = PostInc;
27533 let accessSize = HVXVectorAccess;
27534 let isCVLoad = 1;
27535 let mayLoad = 1;
27536 let isNonTemporal = 1;
27537 let isRestrictNoSlot1Store = 1;
27538 let BaseOpcode = "V6_vL32b_nt_tmp_pi";
27539 let isPredicable = 1;
27540 let DecoderNamespace = "EXT_mmvec";
27541 let Constraints = "$Rx32 = $Rx32in";
27542 }
27543 def V6_vL32b_nt_tmp_ppu : HInst<
27544 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27545 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
27546 "$Vd32.tmp = vmem($Rx32++$Mu2):nt",
27547 tc_9c267309, TypeCVI_VM_TMP_LD>, Enc_2ebe3b, Requires<[UseHVXV60]>, PredRel {
27548 let Inst{12-5} = 0b00000010;
27549 let Inst{31-21} = 0b00101011010;
27550 let hasNewValue = 1;
27551 let opNewValue = 0;
27552 let addrMode = PostInc;
27553 let accessSize = HVXVectorAccess;
27554 let isCVLoad = 1;
27555 let mayLoad = 1;
27556 let isNonTemporal = 1;
27557 let isRestrictNoSlot1Store = 1;
27558 let BaseOpcode = "V6_vL32b_nt_tmp_ppu";
27559 let isPredicable = 1;
27560 let DecoderNamespace = "EXT_mmvec";
27561 let Constraints = "$Rx32 = $Rx32in";
27562 }
27563 def V6_vL32b_nt_tmp_pred_ai : HInst<
27564 (outs HvxVR:$Vd32),
27565 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27566 "if ($Pv4) $Vd32.tmp = vmem($Rt32+#$Ii):nt",
27567 tc_51cd3aab, TypeCVI_VM_TMP_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27568 let Inst{7-5} = 0b110;
27569 let Inst{31-21} = 0b00101000110;
27570 let isPredicated = 1;
27571 let hasNewValue = 1;
27572 let opNewValue = 0;
27573 let addrMode = BaseImmOffset;
27574 let accessSize = HVXVectorAccess;
27575 let isCVLoad = 1;
27576 let mayLoad = 1;
27577 let isNonTemporal = 1;
27578 let isRestrictNoSlot1Store = 1;
27579 let BaseOpcode = "V6_vL32b_nt_tmp_ai";
27580 let DecoderNamespace = "EXT_mmvec";
27581 }
27582 def V6_vL32b_nt_tmp_pred_pi : HInst<
27583 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27584 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27585 "if ($Pv4) $Vd32.tmp = vmem($Rx32++#$Ii):nt",
27586 tc_38208312, TypeCVI_VM_TMP_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27587 let Inst{7-5} = 0b110;
27588 let Inst{13-13} = 0b0;
27589 let Inst{31-21} = 0b00101001110;
27590 let isPredicated = 1;
27591 let hasNewValue = 1;
27592 let opNewValue = 0;
27593 let addrMode = PostInc;
27594 let accessSize = HVXVectorAccess;
27595 let isCVLoad = 1;
27596 let mayLoad = 1;
27597 let isNonTemporal = 1;
27598 let isRestrictNoSlot1Store = 1;
27599 let BaseOpcode = "V6_vL32b_nt_tmp_pi";
27600 let DecoderNamespace = "EXT_mmvec";
27601 let Constraints = "$Rx32 = $Rx32in";
27602 }
27603 def V6_vL32b_nt_tmp_pred_ppu : HInst<
27604 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27605 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27606 "if ($Pv4) $Vd32.tmp = vmem($Rx32++$Mu2):nt",
27607 tc_38208312, TypeCVI_VM_TMP_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27608 let Inst{10-5} = 0b000110;
27609 let Inst{31-21} = 0b00101011110;
27610 let isPredicated = 1;
27611 let hasNewValue = 1;
27612 let opNewValue = 0;
27613 let addrMode = PostInc;
27614 let accessSize = HVXVectorAccess;
27615 let isCVLoad = 1;
27616 let mayLoad = 1;
27617 let isNonTemporal = 1;
27618 let isRestrictNoSlot1Store = 1;
27619 let BaseOpcode = "V6_vL32b_nt_tmp_ppu";
27620 let DecoderNamespace = "EXT_mmvec";
27621 let Constraints = "$Rx32 = $Rx32in";
27622 }
27623 def V6_vL32b_pi : HInst<
27624 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27625 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
27626 "$Vd32 = vmem($Rx32++#$Ii)",
27627 tc_eb669007, TypeCVI_VM_LD>, Enc_a255dc, Requires<[UseHVXV60]>, PredRel {
27628 let Inst{7-5} = 0b000;
27629 let Inst{13-11} = 0b000;
27630 let Inst{31-21} = 0b00101001000;
27631 let hasNewValue = 1;
27632 let opNewValue = 0;
27633 let addrMode = PostInc;
27634 let accessSize = HVXVectorAccess;
27635 let isCVLoad = 1;
27636 let mayLoad = 1;
27637 let isRestrictNoSlot1Store = 1;
27638 let BaseOpcode = "V6_vL32b_pi";
27639 let isCVLoadable = 1;
27640 let isPredicable = 1;
27641 let DecoderNamespace = "EXT_mmvec";
27642 let Constraints = "$Rx32 = $Rx32in";
27643 }
27644 def V6_vL32b_ppu : HInst<
27645 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27646 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
27647 "$Vd32 = vmem($Rx32++$Mu2)",
27648 tc_eb669007, TypeCVI_VM_LD>, Enc_2ebe3b, Requires<[UseHVXV60]>, PredRel {
27649 let Inst{12-5} = 0b00000000;
27650 let Inst{31-21} = 0b00101011000;
27651 let hasNewValue = 1;
27652 let opNewValue = 0;
27653 let addrMode = PostInc;
27654 let accessSize = HVXVectorAccess;
27655 let isCVLoad = 1;
27656 let mayLoad = 1;
27657 let isRestrictNoSlot1Store = 1;
27658 let BaseOpcode = "V6_vL32b_ppu";
27659 let isCVLoadable = 1;
27660 let isPredicable = 1;
27661 let DecoderNamespace = "EXT_mmvec";
27662 let Constraints = "$Rx32 = $Rx32in";
27663 }
27664 def V6_vL32b_pred_ai : HInst<
27665 (outs HvxVR:$Vd32),
27666 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27667 "if ($Pv4) $Vd32 = vmem($Rt32+#$Ii)",
27668 tc_5cbf490b, TypeCVI_VM_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27669 let Inst{7-5} = 0b010;
27670 let Inst{31-21} = 0b00101000100;
27671 let isPredicated = 1;
27672 let hasNewValue = 1;
27673 let opNewValue = 0;
27674 let addrMode = BaseImmOffset;
27675 let accessSize = HVXVectorAccess;
27676 let isCVLoad = 1;
27677 let mayLoad = 1;
27678 let isRestrictNoSlot1Store = 1;
27679 let BaseOpcode = "V6_vL32b_ai";
27680 let DecoderNamespace = "EXT_mmvec";
27681 }
27682 def V6_vL32b_pred_pi : HInst<
27683 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27684 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27685 "if ($Pv4) $Vd32 = vmem($Rx32++#$Ii)",
27686 tc_da979fb3, TypeCVI_VM_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27687 let Inst{7-5} = 0b010;
27688 let Inst{13-13} = 0b0;
27689 let Inst{31-21} = 0b00101001100;
27690 let isPredicated = 1;
27691 let hasNewValue = 1;
27692 let opNewValue = 0;
27693 let addrMode = PostInc;
27694 let accessSize = HVXVectorAccess;
27695 let isCVLoad = 1;
27696 let mayLoad = 1;
27697 let isRestrictNoSlot1Store = 1;
27698 let BaseOpcode = "V6_vL32b_pi";
27699 let DecoderNamespace = "EXT_mmvec";
27700 let Constraints = "$Rx32 = $Rx32in";
27701 }
27702 def V6_vL32b_pred_ppu : HInst<
27703 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27704 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27705 "if ($Pv4) $Vd32 = vmem($Rx32++$Mu2)",
27706 tc_da979fb3, TypeCVI_VM_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27707 let Inst{10-5} = 0b000010;
27708 let Inst{31-21} = 0b00101011100;
27709 let isPredicated = 1;
27710 let hasNewValue = 1;
27711 let opNewValue = 0;
27712 let addrMode = PostInc;
27713 let accessSize = HVXVectorAccess;
27714 let isCVLoad = 1;
27715 let mayLoad = 1;
27716 let isRestrictNoSlot1Store = 1;
27717 let BaseOpcode = "V6_vL32b_ppu";
27718 let DecoderNamespace = "EXT_mmvec";
27719 let Constraints = "$Rx32 = $Rx32in";
27720 }
27721 def V6_vL32b_tmp_ai : HInst<
27722 (outs HvxVR:$Vd32),
27723 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
27724 "$Vd32.tmp = vmem($Rt32+#$Ii)",
27725 tc_77a4c701, TypeCVI_VM_TMP_LD>, Enc_f3f408, Requires<[UseHVXV60]>, PredRel {
27726 let Inst{7-5} = 0b010;
27727 let Inst{12-11} = 0b00;
27728 let Inst{31-21} = 0b00101000000;
27729 let hasNewValue = 1;
27730 let opNewValue = 0;
27731 let addrMode = BaseImmOffset;
27732 let accessSize = HVXVectorAccess;
27733 let isCVLoad = 1;
27734 let mayLoad = 1;
27735 let isRestrictNoSlot1Store = 1;
27736 let BaseOpcode = "V6_vL32b_tmp_ai";
27737 let isPredicable = 1;
27738 let DecoderNamespace = "EXT_mmvec";
27739 }
27740 def V6_vL32b_tmp_npred_ai : HInst<
27741 (outs HvxVR:$Vd32),
27742 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27743 "if (!$Pv4) $Vd32.tmp = vmem($Rt32+#$Ii)",
27744 tc_51cd3aab, TypeCVI_VM_TMP_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27745 let Inst{7-5} = 0b111;
27746 let Inst{31-21} = 0b00101000100;
27747 let isPredicated = 1;
27748 let isPredicatedFalse = 1;
27749 let hasNewValue = 1;
27750 let opNewValue = 0;
27751 let addrMode = BaseImmOffset;
27752 let accessSize = HVXVectorAccess;
27753 let isCVLoad = 1;
27754 let mayLoad = 1;
27755 let isRestrictNoSlot1Store = 1;
27756 let BaseOpcode = "V6_vL32b_tmp_ai";
27757 let DecoderNamespace = "EXT_mmvec";
27758 }
27759 def V6_vL32b_tmp_npred_pi : HInst<
27760 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27761 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27762 "if (!$Pv4) $Vd32.tmp = vmem($Rx32++#$Ii)",
27763 tc_38208312, TypeCVI_VM_TMP_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27764 let Inst{7-5} = 0b111;
27765 let Inst{13-13} = 0b0;
27766 let Inst{31-21} = 0b00101001100;
27767 let isPredicated = 1;
27768 let isPredicatedFalse = 1;
27769 let hasNewValue = 1;
27770 let opNewValue = 0;
27771 let addrMode = PostInc;
27772 let accessSize = HVXVectorAccess;
27773 let isCVLoad = 1;
27774 let mayLoad = 1;
27775 let isRestrictNoSlot1Store = 1;
27776 let BaseOpcode = "V6_vL32b_tmp_pi";
27777 let DecoderNamespace = "EXT_mmvec";
27778 let Constraints = "$Rx32 = $Rx32in";
27779 }
27780 def V6_vL32b_tmp_npred_ppu : HInst<
27781 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27782 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27783 "if (!$Pv4) $Vd32.tmp = vmem($Rx32++$Mu2)",
27784 tc_38208312, TypeCVI_VM_TMP_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27785 let Inst{10-5} = 0b000111;
27786 let Inst{31-21} = 0b00101011100;
27787 let isPredicated = 1;
27788 let isPredicatedFalse = 1;
27789 let hasNewValue = 1;
27790 let opNewValue = 0;
27791 let addrMode = PostInc;
27792 let accessSize = HVXVectorAccess;
27793 let isCVLoad = 1;
27794 let mayLoad = 1;
27795 let isRestrictNoSlot1Store = 1;
27796 let BaseOpcode = "V6_vL32b_tmp_ppu";
27797 let DecoderNamespace = "EXT_mmvec";
27798 let Constraints = "$Rx32 = $Rx32in";
27799 }
27800 def V6_vL32b_tmp_pi : HInst<
27801 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27802 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
27803 "$Vd32.tmp = vmem($Rx32++#$Ii)",
27804 tc_9c267309, TypeCVI_VM_TMP_LD>, Enc_a255dc, Requires<[UseHVXV60]>, PredRel {
27805 let Inst{7-5} = 0b010;
27806 let Inst{13-11} = 0b000;
27807 let Inst{31-21} = 0b00101001000;
27808 let hasNewValue = 1;
27809 let opNewValue = 0;
27810 let addrMode = PostInc;
27811 let accessSize = HVXVectorAccess;
27812 let isCVLoad = 1;
27813 let mayLoad = 1;
27814 let isRestrictNoSlot1Store = 1;
27815 let BaseOpcode = "V6_vL32b_tmp_pi";
27816 let isPredicable = 1;
27817 let DecoderNamespace = "EXT_mmvec";
27818 let Constraints = "$Rx32 = $Rx32in";
27819 }
27820 def V6_vL32b_tmp_ppu : HInst<
27821 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27822 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
27823 "$Vd32.tmp = vmem($Rx32++$Mu2)",
27824 tc_9c267309, TypeCVI_VM_TMP_LD>, Enc_2ebe3b, Requires<[UseHVXV60]>, PredRel {
27825 let Inst{12-5} = 0b00000010;
27826 let Inst{31-21} = 0b00101011000;
27827 let hasNewValue = 1;
27828 let opNewValue = 0;
27829 let addrMode = PostInc;
27830 let accessSize = HVXVectorAccess;
27831 let isCVLoad = 1;
27832 let mayLoad = 1;
27833 let isRestrictNoSlot1Store = 1;
27834 let BaseOpcode = "V6_vL32b_tmp_ppu";
27835 let isPredicable = 1;
27836 let DecoderNamespace = "EXT_mmvec";
27837 let Constraints = "$Rx32 = $Rx32in";
27838 }
27839 def V6_vL32b_tmp_pred_ai : HInst<
27840 (outs HvxVR:$Vd32),
27841 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27842 "if ($Pv4) $Vd32.tmp = vmem($Rt32+#$Ii)",
27843 tc_51cd3aab, TypeCVI_VM_TMP_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27844 let Inst{7-5} = 0b110;
27845 let Inst{31-21} = 0b00101000100;
27846 let isPredicated = 1;
27847 let hasNewValue = 1;
27848 let opNewValue = 0;
27849 let addrMode = BaseImmOffset;
27850 let accessSize = HVXVectorAccess;
27851 let isCVLoad = 1;
27852 let mayLoad = 1;
27853 let isRestrictNoSlot1Store = 1;
27854 let BaseOpcode = "V6_vL32b_tmp_ai";
27855 let DecoderNamespace = "EXT_mmvec";
27856 }
27857 def V6_vL32b_tmp_pred_pi : HInst<
27858 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27859 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27860 "if ($Pv4) $Vd32.tmp = vmem($Rx32++#$Ii)",
27861 tc_38208312, TypeCVI_VM_TMP_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27862 let Inst{7-5} = 0b110;
27863 let Inst{13-13} = 0b0;
27864 let Inst{31-21} = 0b00101001100;
27865 let isPredicated = 1;
27866 let hasNewValue = 1;
27867 let opNewValue = 0;
27868 let addrMode = PostInc;
27869 let accessSize = HVXVectorAccess;
27870 let isCVLoad = 1;
27871 let mayLoad = 1;
27872 let isRestrictNoSlot1Store = 1;
27873 let BaseOpcode = "V6_vL32b_tmp_pi";
27874 let DecoderNamespace = "EXT_mmvec";
27875 let Constraints = "$Rx32 = $Rx32in";
27876 }
27877 def V6_vL32b_tmp_pred_ppu : HInst<
27878 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27879 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27880 "if ($Pv4) $Vd32.tmp = vmem($Rx32++$Mu2)",
27881 tc_38208312, TypeCVI_VM_TMP_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27882 let Inst{10-5} = 0b000110;
27883 let Inst{31-21} = 0b00101011100;
27884 let isPredicated = 1;
27885 let hasNewValue = 1;
27886 let opNewValue = 0;
27887 let addrMode = PostInc;
27888 let accessSize = HVXVectorAccess;
27889 let isCVLoad = 1;
27890 let mayLoad = 1;
27891 let isRestrictNoSlot1Store = 1;
27892 let BaseOpcode = "V6_vL32b_tmp_ppu";
27893 let DecoderNamespace = "EXT_mmvec";
27894 let Constraints = "$Rx32 = $Rx32in";
27895 }
27896 def V6_vS32Ub_ai : HInst<
27897 (outs),
27898 (ins IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
27899 "vmemu($Rt32+#$Ii) = $Vs32",
27900 tc_354299ad, TypeCVI_VM_STU>, Enc_c9e3bc, Requires<[UseHVXV60]>, NewValueRel {
27901 let Inst{7-5} = 0b111;
27902 let Inst{12-11} = 0b00;
27903 let Inst{31-21} = 0b00101000001;
27904 let addrMode = BaseImmOffset;
27905 let accessSize = HVXVectorAccess;
27906 let mayStore = 1;
27907 let BaseOpcode = "V6_vS32Ub_ai";
27908 let isPredicable = 1;
27909 let DecoderNamespace = "EXT_mmvec";
27910 }
27911 def V6_vS32Ub_npred_ai : HInst<
27912 (outs),
27913 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
27914 "if (!$Pv4) vmemu($Rt32+#$Ii) = $Vs32",
27915 tc_d642eff3, TypeCVI_VM_STU>, Enc_27b757, Requires<[UseHVXV60]>, NewValueRel {
27916 let Inst{7-5} = 0b111;
27917 let Inst{31-21} = 0b00101000101;
27918 let isPredicated = 1;
27919 let isPredicatedFalse = 1;
27920 let addrMode = BaseImmOffset;
27921 let accessSize = HVXVectorAccess;
27922 let mayStore = 1;
27923 let BaseOpcode = "V6_vS32Ub_ai";
27924 let DecoderNamespace = "EXT_mmvec";
27925 }
27926 def V6_vS32Ub_npred_pi : HInst<
27927 (outs IntRegs:$Rx32),
27928 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
27929 "if (!$Pv4) vmemu($Rx32++#$Ii) = $Vs32",
27930 tc_6fd9ad30, TypeCVI_VM_STU>, Enc_865390, Requires<[UseHVXV60]>, NewValueRel {
27931 let Inst{7-5} = 0b111;
27932 let Inst{13-13} = 0b0;
27933 let Inst{31-21} = 0b00101001101;
27934 let isPredicated = 1;
27935 let isPredicatedFalse = 1;
27936 let addrMode = PostInc;
27937 let accessSize = HVXVectorAccess;
27938 let mayStore = 1;
27939 let BaseOpcode = "V6_vS32Ub_pi";
27940 let DecoderNamespace = "EXT_mmvec";
27941 let Constraints = "$Rx32 = $Rx32in";
27942 }
27943 def V6_vS32Ub_npred_ppu : HInst<
27944 (outs IntRegs:$Rx32),
27945 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
27946 "if (!$Pv4) vmemu($Rx32++$Mu2) = $Vs32",
27947 tc_6fd9ad30, TypeCVI_VM_STU>, Enc_1ef990, Requires<[UseHVXV60]>, NewValueRel {
27948 let Inst{10-5} = 0b000111;
27949 let Inst{31-21} = 0b00101011101;
27950 let isPredicated = 1;
27951 let isPredicatedFalse = 1;
27952 let addrMode = PostInc;
27953 let accessSize = HVXVectorAccess;
27954 let mayStore = 1;
27955 let BaseOpcode = "V6_vS32Ub_ppu";
27956 let DecoderNamespace = "EXT_mmvec";
27957 let Constraints = "$Rx32 = $Rx32in";
27958 }
27959 def V6_vS32Ub_pi : HInst<
27960 (outs IntRegs:$Rx32),
27961 (ins IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
27962 "vmemu($Rx32++#$Ii) = $Vs32",
27963 tc_7fa82b08, TypeCVI_VM_STU>, Enc_b62ef7, Requires<[UseHVXV60]>, NewValueRel {
27964 let Inst{7-5} = 0b111;
27965 let Inst{13-11} = 0b000;
27966 let Inst{31-21} = 0b00101001001;
27967 let addrMode = PostInc;
27968 let accessSize = HVXVectorAccess;
27969 let mayStore = 1;
27970 let BaseOpcode = "V6_vS32Ub_pi";
27971 let isPredicable = 1;
27972 let DecoderNamespace = "EXT_mmvec";
27973 let Constraints = "$Rx32 = $Rx32in";
27974 }
27975 def V6_vS32Ub_ppu : HInst<
27976 (outs IntRegs:$Rx32),
27977 (ins IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
27978 "vmemu($Rx32++$Mu2) = $Vs32",
27979 tc_7fa82b08, TypeCVI_VM_STU>, Enc_d15d19, Requires<[UseHVXV60]>, NewValueRel {
27980 let Inst{12-5} = 0b00000111;
27981 let Inst{31-21} = 0b00101011001;
27982 let addrMode = PostInc;
27983 let accessSize = HVXVectorAccess;
27984 let mayStore = 1;
27985 let BaseOpcode = "V6_vS32Ub_ppu";
27986 let isPredicable = 1;
27987 let DecoderNamespace = "EXT_mmvec";
27988 let Constraints = "$Rx32 = $Rx32in";
27989 }
27990 def V6_vS32Ub_pred_ai : HInst<
27991 (outs),
27992 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
27993 "if ($Pv4) vmemu($Rt32+#$Ii) = $Vs32",
27994 tc_d642eff3, TypeCVI_VM_STU>, Enc_27b757, Requires<[UseHVXV60]>, NewValueRel {
27995 let Inst{7-5} = 0b110;
27996 let Inst{31-21} = 0b00101000101;
27997 let isPredicated = 1;
27998 let addrMode = BaseImmOffset;
27999 let accessSize = HVXVectorAccess;
28000 let mayStore = 1;
28001 let BaseOpcode = "V6_vS32Ub_ai";
28002 let DecoderNamespace = "EXT_mmvec";
28003 }
28004 def V6_vS32Ub_pred_pi : HInst<
28005 (outs IntRegs:$Rx32),
28006 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28007 "if ($Pv4) vmemu($Rx32++#$Ii) = $Vs32",
28008 tc_6fd9ad30, TypeCVI_VM_STU>, Enc_865390, Requires<[UseHVXV60]>, NewValueRel {
28009 let Inst{7-5} = 0b110;
28010 let Inst{13-13} = 0b0;
28011 let Inst{31-21} = 0b00101001101;
28012 let isPredicated = 1;
28013 let addrMode = PostInc;
28014 let accessSize = HVXVectorAccess;
28015 let mayStore = 1;
28016 let BaseOpcode = "V6_vS32Ub_pi";
28017 let DecoderNamespace = "EXT_mmvec";
28018 let Constraints = "$Rx32 = $Rx32in";
28019 }
28020 def V6_vS32Ub_pred_ppu : HInst<
28021 (outs IntRegs:$Rx32),
28022 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28023 "if ($Pv4) vmemu($Rx32++$Mu2) = $Vs32",
28024 tc_6fd9ad30, TypeCVI_VM_STU>, Enc_1ef990, Requires<[UseHVXV60]>, NewValueRel {
28025 let Inst{10-5} = 0b000110;
28026 let Inst{31-21} = 0b00101011101;
28027 let isPredicated = 1;
28028 let addrMode = PostInc;
28029 let accessSize = HVXVectorAccess;
28030 let mayStore = 1;
28031 let BaseOpcode = "V6_vS32Ub_ppu";
28032 let DecoderNamespace = "EXT_mmvec";
28033 let Constraints = "$Rx32 = $Rx32in";
28034 }
28035 def V6_vS32b_ai : HInst<
28036 (outs),
28037 (ins IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28038 "vmem($Rt32+#$Ii) = $Vs32",
28039 tc_e3748cdf, TypeCVI_VM_ST>, Enc_c9e3bc, Requires<[UseHVXV60]>, NewValueRel {
28040 let Inst{7-5} = 0b000;
28041 let Inst{12-11} = 0b00;
28042 let Inst{31-21} = 0b00101000001;
28043 let addrMode = BaseImmOffset;
28044 let accessSize = HVXVectorAccess;
28045 let mayStore = 1;
28046 let BaseOpcode = "V6_vS32b_ai";
28047 let isNVStorable = 1;
28048 let isPredicable = 1;
28049 let DecoderNamespace = "EXT_mmvec";
28050 }
28051 def V6_vS32b_new_ai : HInst<
28052 (outs),
28053 (ins IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Os8),
28054 "vmem($Rt32+#$Ii) = $Os8.new",
28055 tc_1b93bdc6, TypeCVI_VM_NEW_ST>, Enc_f77fbc, Requires<[UseHVXV60]>, NewValueRel {
28056 let Inst{7-3} = 0b00100;
28057 let Inst{12-11} = 0b00;
28058 let Inst{31-21} = 0b00101000001;
28059 let addrMode = BaseImmOffset;
28060 let accessSize = HVXVectorAccess;
28061 let isNVStore = 1;
28062 let CVINew = 1;
28063 let isNewValue = 1;
28064 let mayStore = 1;
28065 let BaseOpcode = "V6_vS32b_ai";
28066 let isPredicable = 1;
28067 let DecoderNamespace = "EXT_mmvec";
28068 let opNewValue = 2;
28069 }
28070 def V6_vS32b_new_npred_ai : HInst<
28071 (outs),
28072 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Os8),
28073 "if (!$Pv4) vmem($Rt32+#$Ii) = $Os8.new",
28074 tc_d5090f3e, TypeCVI_VM_NEW_ST>, Enc_f7430e, Requires<[UseHVXV60]>, NewValueRel {
28075 let Inst{7-3} = 0b01101;
28076 let Inst{31-21} = 0b00101000101;
28077 let isPredicated = 1;
28078 let isPredicatedFalse = 1;
28079 let addrMode = BaseImmOffset;
28080 let accessSize = HVXVectorAccess;
28081 let isNVStore = 1;
28082 let CVINew = 1;
28083 let isNewValue = 1;
28084 let mayStore = 1;
28085 let BaseOpcode = "V6_vS32b_ai";
28086 let DecoderNamespace = "EXT_mmvec";
28087 let opNewValue = 3;
28088 }
28089 def V6_vS32b_new_npred_pi : HInst<
28090 (outs IntRegs:$Rx32),
28091 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Os8),
28092 "if (!$Pv4) vmem($Rx32++#$Ii) = $Os8.new",
28093 tc_8b6a873f, TypeCVI_VM_NEW_ST>, Enc_784502, Requires<[UseHVXV60]>, NewValueRel {
28094 let Inst{7-3} = 0b01101;
28095 let Inst{13-13} = 0b0;
28096 let Inst{31-21} = 0b00101001101;
28097 let isPredicated = 1;
28098 let isPredicatedFalse = 1;
28099 let addrMode = PostInc;
28100 let accessSize = HVXVectorAccess;
28101 let isNVStore = 1;
28102 let CVINew = 1;
28103 let isNewValue = 1;
28104 let mayStore = 1;
28105 let BaseOpcode = "V6_vS32b_pi";
28106 let DecoderNamespace = "EXT_mmvec";
28107 let opNewValue = 4;
28108 let Constraints = "$Rx32 = $Rx32in";
28109 }
28110 def V6_vS32b_new_npred_ppu : HInst<
28111 (outs IntRegs:$Rx32),
28112 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Os8),
28113 "if (!$Pv4) vmem($Rx32++$Mu2) = $Os8.new",
28114 tc_8b6a873f, TypeCVI_VM_NEW_ST>, Enc_372c9d, Requires<[UseHVXV60]>, NewValueRel {
28115 let Inst{10-3} = 0b00001101;
28116 let Inst{31-21} = 0b00101011101;
28117 let isPredicated = 1;
28118 let isPredicatedFalse = 1;
28119 let addrMode = PostInc;
28120 let accessSize = HVXVectorAccess;
28121 let isNVStore = 1;
28122 let CVINew = 1;
28123 let isNewValue = 1;
28124 let mayStore = 1;
28125 let BaseOpcode = "V6_vS32b_ppu";
28126 let DecoderNamespace = "EXT_mmvec";
28127 let opNewValue = 4;
28128 let Constraints = "$Rx32 = $Rx32in";
28129 }
28130 def V6_vS32b_new_pi : HInst<
28131 (outs IntRegs:$Rx32),
28132 (ins IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Os8),
28133 "vmem($Rx32++#$Ii) = $Os8.new",
28134 tc_db5b9e2f, TypeCVI_VM_NEW_ST>, Enc_1aaec1, Requires<[UseHVXV60]>, NewValueRel {
28135 let Inst{7-3} = 0b00100;
28136 let Inst{13-11} = 0b000;
28137 let Inst{31-21} = 0b00101001001;
28138 let addrMode = PostInc;
28139 let accessSize = HVXVectorAccess;
28140 let isNVStore = 1;
28141 let CVINew = 1;
28142 let isNewValue = 1;
28143 let mayStore = 1;
28144 let BaseOpcode = "V6_vS32b_pi";
28145 let isPredicable = 1;
28146 let DecoderNamespace = "EXT_mmvec";
28147 let opNewValue = 3;
28148 let Constraints = "$Rx32 = $Rx32in";
28149 }
28150 def V6_vS32b_new_ppu : HInst<
28151 (outs IntRegs:$Rx32),
28152 (ins IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Os8),
28153 "vmem($Rx32++$Mu2) = $Os8.new",
28154 tc_db5b9e2f, TypeCVI_VM_NEW_ST>, Enc_cf1927, Requires<[UseHVXV60]>, NewValueRel {
28155 let Inst{12-3} = 0b0000000100;
28156 let Inst{31-21} = 0b00101011001;
28157 let addrMode = PostInc;
28158 let accessSize = HVXVectorAccess;
28159 let isNVStore = 1;
28160 let CVINew = 1;
28161 let isNewValue = 1;
28162 let mayStore = 1;
28163 let BaseOpcode = "V6_vS32b_ppu";
28164 let isPredicable = 1;
28165 let DecoderNamespace = "EXT_mmvec";
28166 let opNewValue = 3;
28167 let Constraints = "$Rx32 = $Rx32in";
28168 }
28169 def V6_vS32b_new_pred_ai : HInst<
28170 (outs),
28171 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Os8),
28172 "if ($Pv4) vmem($Rt32+#$Ii) = $Os8.new",
28173 tc_d5090f3e, TypeCVI_VM_NEW_ST>, Enc_f7430e, Requires<[UseHVXV60]>, NewValueRel {
28174 let Inst{7-3} = 0b01000;
28175 let Inst{31-21} = 0b00101000101;
28176 let isPredicated = 1;
28177 let addrMode = BaseImmOffset;
28178 let accessSize = HVXVectorAccess;
28179 let isNVStore = 1;
28180 let CVINew = 1;
28181 let isNewValue = 1;
28182 let mayStore = 1;
28183 let BaseOpcode = "V6_vS32b_ai";
28184 let DecoderNamespace = "EXT_mmvec";
28185 let opNewValue = 3;
28186 }
28187 def V6_vS32b_new_pred_pi : HInst<
28188 (outs IntRegs:$Rx32),
28189 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Os8),
28190 "if ($Pv4) vmem($Rx32++#$Ii) = $Os8.new",
28191 tc_8b6a873f, TypeCVI_VM_NEW_ST>, Enc_784502, Requires<[UseHVXV60]>, NewValueRel {
28192 let Inst{7-3} = 0b01000;
28193 let Inst{13-13} = 0b0;
28194 let Inst{31-21} = 0b00101001101;
28195 let isPredicated = 1;
28196 let addrMode = PostInc;
28197 let accessSize = HVXVectorAccess;
28198 let isNVStore = 1;
28199 let CVINew = 1;
28200 let isNewValue = 1;
28201 let mayStore = 1;
28202 let BaseOpcode = "V6_vS32b_pi";
28203 let DecoderNamespace = "EXT_mmvec";
28204 let opNewValue = 4;
28205 let Constraints = "$Rx32 = $Rx32in";
28206 }
28207 def V6_vS32b_new_pred_ppu : HInst<
28208 (outs IntRegs:$Rx32),
28209 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Os8),
28210 "if ($Pv4) vmem($Rx32++$Mu2) = $Os8.new",
28211 tc_8b6a873f, TypeCVI_VM_NEW_ST>, Enc_372c9d, Requires<[UseHVXV60]>, NewValueRel {
28212 let Inst{10-3} = 0b00001000;
28213 let Inst{31-21} = 0b00101011101;
28214 let isPredicated = 1;
28215 let addrMode = PostInc;
28216 let accessSize = HVXVectorAccess;
28217 let isNVStore = 1;
28218 let CVINew = 1;
28219 let isNewValue = 1;
28220 let mayStore = 1;
28221 let BaseOpcode = "V6_vS32b_ppu";
28222 let DecoderNamespace = "EXT_mmvec";
28223 let opNewValue = 4;
28224 let Constraints = "$Rx32 = $Rx32in";
28225 }
28226 def V6_vS32b_npred_ai : HInst<
28227 (outs),
28228 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28229 "if (!$Pv4) vmem($Rt32+#$Ii) = $Vs32",
28230 tc_85d237e3, TypeCVI_VM_ST>, Enc_27b757, Requires<[UseHVXV60]>, NewValueRel {
28231 let Inst{7-5} = 0b001;
28232 let Inst{31-21} = 0b00101000101;
28233 let isPredicated = 1;
28234 let isPredicatedFalse = 1;
28235 let addrMode = BaseImmOffset;
28236 let accessSize = HVXVectorAccess;
28237 let mayStore = 1;
28238 let BaseOpcode = "V6_vS32b_ai";
28239 let isNVStorable = 1;
28240 let DecoderNamespace = "EXT_mmvec";
28241 }
28242 def V6_vS32b_npred_pi : HInst<
28243 (outs IntRegs:$Rx32),
28244 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28245 "if (!$Pv4) vmem($Rx32++#$Ii) = $Vs32",
28246 tc_0317c6ca, TypeCVI_VM_ST>, Enc_865390, Requires<[UseHVXV60]>, NewValueRel {
28247 let Inst{7-5} = 0b001;
28248 let Inst{13-13} = 0b0;
28249 let Inst{31-21} = 0b00101001101;
28250 let isPredicated = 1;
28251 let isPredicatedFalse = 1;
28252 let addrMode = PostInc;
28253 let accessSize = HVXVectorAccess;
28254 let mayStore = 1;
28255 let BaseOpcode = "V6_vS32b_pi";
28256 let isNVStorable = 1;
28257 let DecoderNamespace = "EXT_mmvec";
28258 let Constraints = "$Rx32 = $Rx32in";
28259 }
28260 def V6_vS32b_npred_ppu : HInst<
28261 (outs IntRegs:$Rx32),
28262 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28263 "if (!$Pv4) vmem($Rx32++$Mu2) = $Vs32",
28264 tc_0317c6ca, TypeCVI_VM_ST>, Enc_1ef990, Requires<[UseHVXV60]>, NewValueRel {
28265 let Inst{10-5} = 0b000001;
28266 let Inst{31-21} = 0b00101011101;
28267 let isPredicated = 1;
28268 let isPredicatedFalse = 1;
28269 let addrMode = PostInc;
28270 let accessSize = HVXVectorAccess;
28271 let mayStore = 1;
28272 let BaseOpcode = "V6_vS32b_ppu";
28273 let isNVStorable = 1;
28274 let DecoderNamespace = "EXT_mmvec";
28275 let Constraints = "$Rx32 = $Rx32in";
28276 }
28277 def V6_vS32b_nqpred_ai : HInst<
28278 (outs),
28279 (ins HvxQR:$Qv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28280 "if (!$Qv4) vmem($Rt32+#$Ii) = $Vs32",
28281 tc_aedb9f9e, TypeCVI_VM_ST>, Enc_2ea740, Requires<[UseHVXV60]> {
28282 let Inst{7-5} = 0b001;
28283 let Inst{31-21} = 0b00101000100;
28284 let addrMode = BaseImmOffset;
28285 let accessSize = HVXVectorAccess;
28286 let mayStore = 1;
28287 let DecoderNamespace = "EXT_mmvec";
28288 }
28289 def V6_vS32b_nqpred_pi : HInst<
28290 (outs IntRegs:$Rx32),
28291 (ins HvxQR:$Qv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28292 "if (!$Qv4) vmem($Rx32++#$Ii) = $Vs32",
28293 tc_99093773, TypeCVI_VM_ST>, Enc_0b51ce, Requires<[UseHVXV60]> {
28294 let Inst{7-5} = 0b001;
28295 let Inst{13-13} = 0b0;
28296 let Inst{31-21} = 0b00101001100;
28297 let addrMode = PostInc;
28298 let accessSize = HVXVectorAccess;
28299 let mayStore = 1;
28300 let DecoderNamespace = "EXT_mmvec";
28301 let Constraints = "$Rx32 = $Rx32in";
28302 }
28303 def V6_vS32b_nqpred_ppu : HInst<
28304 (outs IntRegs:$Rx32),
28305 (ins HvxQR:$Qv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28306 "if (!$Qv4) vmem($Rx32++$Mu2) = $Vs32",
28307 tc_99093773, TypeCVI_VM_ST>, Enc_4dff07, Requires<[UseHVXV60]> {
28308 let Inst{10-5} = 0b000001;
28309 let Inst{31-21} = 0b00101011100;
28310 let addrMode = PostInc;
28311 let accessSize = HVXVectorAccess;
28312 let mayStore = 1;
28313 let DecoderNamespace = "EXT_mmvec";
28314 let Constraints = "$Rx32 = $Rx32in";
28315 }
28316 def V6_vS32b_nt_ai : HInst<
28317 (outs),
28318 (ins IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28319 "vmem($Rt32+#$Ii):nt = $Vs32",
28320 tc_e3748cdf, TypeCVI_VM_ST>, Enc_c9e3bc, Requires<[UseHVXV60]>, NewValueRel {
28321 let Inst{7-5} = 0b000;
28322 let Inst{12-11} = 0b00;
28323 let Inst{31-21} = 0b00101000011;
28324 let addrMode = BaseImmOffset;
28325 let accessSize = HVXVectorAccess;
28326 let isNonTemporal = 1;
28327 let mayStore = 1;
28328 let BaseOpcode = "V6_vS32b_ai";
28329 let isNVStorable = 1;
28330 let isPredicable = 1;
28331 let DecoderNamespace = "EXT_mmvec";
28332 }
28333 def V6_vS32b_nt_new_ai : HInst<
28334 (outs),
28335 (ins IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Os8),
28336 "vmem($Rt32+#$Ii):nt = $Os8.new",
28337 tc_1b93bdc6, TypeCVI_VM_NEW_ST>, Enc_f77fbc, Requires<[UseHVXV60]>, NewValueRel {
28338 let Inst{7-3} = 0b00100;
28339 let Inst{12-11} = 0b00;
28340 let Inst{31-21} = 0b00101000011;
28341 let addrMode = BaseImmOffset;
28342 let accessSize = HVXVectorAccess;
28343 let isNVStore = 1;
28344 let CVINew = 1;
28345 let isNewValue = 1;
28346 let isNonTemporal = 1;
28347 let mayStore = 1;
28348 let BaseOpcode = "V6_vS32b_ai";
28349 let isPredicable = 1;
28350 let DecoderNamespace = "EXT_mmvec";
28351 let opNewValue = 2;
28352 }
28353 def V6_vS32b_nt_new_npred_ai : HInst<
28354 (outs),
28355 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Os8),
28356 "if (!$Pv4) vmem($Rt32+#$Ii):nt = $Os8.new",
28357 tc_d5090f3e, TypeCVI_VM_NEW_ST>, Enc_f7430e, Requires<[UseHVXV60]>, NewValueRel {
28358 let Inst{7-3} = 0b01111;
28359 let Inst{31-21} = 0b00101000111;
28360 let isPredicated = 1;
28361 let isPredicatedFalse = 1;
28362 let addrMode = BaseImmOffset;
28363 let accessSize = HVXVectorAccess;
28364 let isNVStore = 1;
28365 let CVINew = 1;
28366 let isNewValue = 1;
28367 let isNonTemporal = 1;
28368 let mayStore = 1;
28369 let BaseOpcode = "V6_vS32b_ai";
28370 let DecoderNamespace = "EXT_mmvec";
28371 let opNewValue = 3;
28372 }
28373 def V6_vS32b_nt_new_npred_pi : HInst<
28374 (outs IntRegs:$Rx32),
28375 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Os8),
28376 "if (!$Pv4) vmem($Rx32++#$Ii):nt = $Os8.new",
28377 tc_8b6a873f, TypeCVI_VM_NEW_ST>, Enc_784502, Requires<[UseHVXV60]>, NewValueRel {
28378 let Inst{7-3} = 0b01111;
28379 let Inst{13-13} = 0b0;
28380 let Inst{31-21} = 0b00101001111;
28381 let isPredicated = 1;
28382 let isPredicatedFalse = 1;
28383 let addrMode = PostInc;
28384 let accessSize = HVXVectorAccess;
28385 let isNVStore = 1;
28386 let CVINew = 1;
28387 let isNewValue = 1;
28388 let isNonTemporal = 1;
28389 let mayStore = 1;
28390 let BaseOpcode = "V6_vS32b_pi";
28391 let DecoderNamespace = "EXT_mmvec";
28392 let opNewValue = 4;
28393 let Constraints = "$Rx32 = $Rx32in";
28394 }
28395 def V6_vS32b_nt_new_npred_ppu : HInst<
28396 (outs IntRegs:$Rx32),
28397 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Os8),
28398 "if (!$Pv4) vmem($Rx32++$Mu2):nt = $Os8.new",
28399 tc_8b6a873f, TypeCVI_VM_NEW_ST>, Enc_372c9d, Requires<[UseHVXV60]>, NewValueRel {
28400 let Inst{10-3} = 0b00001111;
28401 let Inst{31-21} = 0b00101011111;
28402 let isPredicated = 1;
28403 let isPredicatedFalse = 1;
28404 let addrMode = PostInc;
28405 let accessSize = HVXVectorAccess;
28406 let isNVStore = 1;
28407 let CVINew = 1;
28408 let isNewValue = 1;
28409 let isNonTemporal = 1;
28410 let mayStore = 1;
28411 let BaseOpcode = "V6_vS32b_ppu";
28412 let DecoderNamespace = "EXT_mmvec";
28413 let opNewValue = 4;
28414 let Constraints = "$Rx32 = $Rx32in";
28415 }
28416 def V6_vS32b_nt_new_pi : HInst<
28417 (outs IntRegs:$Rx32),
28418 (ins IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Os8),
28419 "vmem($Rx32++#$Ii):nt = $Os8.new",
28420 tc_db5b9e2f, TypeCVI_VM_NEW_ST>, Enc_1aaec1, Requires<[UseHVXV60]>, NewValueRel {
28421 let Inst{7-3} = 0b00100;
28422 let Inst{13-11} = 0b000;
28423 let Inst{31-21} = 0b00101001011;
28424 let addrMode = PostInc;
28425 let accessSize = HVXVectorAccess;
28426 let isNVStore = 1;
28427 let CVINew = 1;
28428 let isNewValue = 1;
28429 let isNonTemporal = 1;
28430 let mayStore = 1;
28431 let BaseOpcode = "V6_vS32b_pi";
28432 let isPredicable = 1;
28433 let DecoderNamespace = "EXT_mmvec";
28434 let opNewValue = 3;
28435 let Constraints = "$Rx32 = $Rx32in";
28436 }
28437 def V6_vS32b_nt_new_ppu : HInst<
28438 (outs IntRegs:$Rx32),
28439 (ins IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Os8),
28440 "vmem($Rx32++$Mu2):nt = $Os8.new",
28441 tc_db5b9e2f, TypeCVI_VM_NEW_ST>, Enc_cf1927, Requires<[UseHVXV60]>, NewValueRel {
28442 let Inst{12-3} = 0b0000000100;
28443 let Inst{31-21} = 0b00101011011;
28444 let addrMode = PostInc;
28445 let accessSize = HVXVectorAccess;
28446 let isNVStore = 1;
28447 let CVINew = 1;
28448 let isNewValue = 1;
28449 let isNonTemporal = 1;
28450 let mayStore = 1;
28451 let BaseOpcode = "V6_vS32b_ppu";
28452 let isPredicable = 1;
28453 let DecoderNamespace = "EXT_mmvec";
28454 let opNewValue = 3;
28455 let Constraints = "$Rx32 = $Rx32in";
28456 }
28457 def V6_vS32b_nt_new_pred_ai : HInst<
28458 (outs),
28459 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Os8),
28460 "if ($Pv4) vmem($Rt32+#$Ii):nt = $Os8.new",
28461 tc_d5090f3e, TypeCVI_VM_NEW_ST>, Enc_f7430e, Requires<[UseHVXV60]>, NewValueRel {
28462 let Inst{7-3} = 0b01010;
28463 let Inst{31-21} = 0b00101000111;
28464 let isPredicated = 1;
28465 let addrMode = BaseImmOffset;
28466 let accessSize = HVXVectorAccess;
28467 let isNVStore = 1;
28468 let CVINew = 1;
28469 let isNewValue = 1;
28470 let isNonTemporal = 1;
28471 let mayStore = 1;
28472 let BaseOpcode = "V6_vS32b_ai";
28473 let DecoderNamespace = "EXT_mmvec";
28474 let opNewValue = 3;
28475 }
28476 def V6_vS32b_nt_new_pred_pi : HInst<
28477 (outs IntRegs:$Rx32),
28478 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Os8),
28479 "if ($Pv4) vmem($Rx32++#$Ii):nt = $Os8.new",
28480 tc_8b6a873f, TypeCVI_VM_NEW_ST>, Enc_784502, Requires<[UseHVXV60]>, NewValueRel {
28481 let Inst{7-3} = 0b01010;
28482 let Inst{13-13} = 0b0;
28483 let Inst{31-21} = 0b00101001111;
28484 let isPredicated = 1;
28485 let addrMode = PostInc;
28486 let accessSize = HVXVectorAccess;
28487 let isNVStore = 1;
28488 let CVINew = 1;
28489 let isNewValue = 1;
28490 let isNonTemporal = 1;
28491 let mayStore = 1;
28492 let BaseOpcode = "V6_vS32b_pi";
28493 let DecoderNamespace = "EXT_mmvec";
28494 let opNewValue = 4;
28495 let Constraints = "$Rx32 = $Rx32in";
28496 }
28497 def V6_vS32b_nt_new_pred_ppu : HInst<
28498 (outs IntRegs:$Rx32),
28499 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Os8),
28500 "if ($Pv4) vmem($Rx32++$Mu2):nt = $Os8.new",
28501 tc_8b6a873f, TypeCVI_VM_NEW_ST>, Enc_372c9d, Requires<[UseHVXV60]>, NewValueRel {
28502 let Inst{10-3} = 0b00001010;
28503 let Inst{31-21} = 0b00101011111;
28504 let isPredicated = 1;
28505 let addrMode = PostInc;
28506 let accessSize = HVXVectorAccess;
28507 let isNVStore = 1;
28508 let CVINew = 1;
28509 let isNewValue = 1;
28510 let isNonTemporal = 1;
28511 let mayStore = 1;
28512 let BaseOpcode = "V6_vS32b_ppu";
28513 let DecoderNamespace = "EXT_mmvec";
28514 let opNewValue = 4;
28515 let Constraints = "$Rx32 = $Rx32in";
28516 }
28517 def V6_vS32b_nt_npred_ai : HInst<
28518 (outs),
28519 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28520 "if (!$Pv4) vmem($Rt32+#$Ii):nt = $Vs32",
28521 tc_85d237e3, TypeCVI_VM_ST>, Enc_27b757, Requires<[UseHVXV60]>, NewValueRel {
28522 let Inst{7-5} = 0b001;
28523 let Inst{31-21} = 0b00101000111;
28524 let isPredicated = 1;
28525 let isPredicatedFalse = 1;
28526 let addrMode = BaseImmOffset;
28527 let accessSize = HVXVectorAccess;
28528 let isNonTemporal = 1;
28529 let mayStore = 1;
28530 let BaseOpcode = "V6_vS32b_ai";
28531 let isNVStorable = 1;
28532 let DecoderNamespace = "EXT_mmvec";
28533 }
28534 def V6_vS32b_nt_npred_pi : HInst<
28535 (outs IntRegs:$Rx32),
28536 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28537 "if (!$Pv4) vmem($Rx32++#$Ii):nt = $Vs32",
28538 tc_0317c6ca, TypeCVI_VM_ST>, Enc_865390, Requires<[UseHVXV60]>, NewValueRel {
28539 let Inst{7-5} = 0b001;
28540 let Inst{13-13} = 0b0;
28541 let Inst{31-21} = 0b00101001111;
28542 let isPredicated = 1;
28543 let isPredicatedFalse = 1;
28544 let addrMode = PostInc;
28545 let accessSize = HVXVectorAccess;
28546 let isNonTemporal = 1;
28547 let mayStore = 1;
28548 let BaseOpcode = "V6_vS32b_pi";
28549 let isNVStorable = 1;
28550 let DecoderNamespace = "EXT_mmvec";
28551 let Constraints = "$Rx32 = $Rx32in";
28552 }
28553 def V6_vS32b_nt_npred_ppu : HInst<
28554 (outs IntRegs:$Rx32),
28555 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28556 "if (!$Pv4) vmem($Rx32++$Mu2):nt = $Vs32",
28557 tc_0317c6ca, TypeCVI_VM_ST>, Enc_1ef990, Requires<[UseHVXV60]>, NewValueRel {
28558 let Inst{10-5} = 0b000001;
28559 let Inst{31-21} = 0b00101011111;
28560 let isPredicated = 1;
28561 let isPredicatedFalse = 1;
28562 let addrMode = PostInc;
28563 let accessSize = HVXVectorAccess;
28564 let isNonTemporal = 1;
28565 let mayStore = 1;
28566 let BaseOpcode = "V6_vS32b_ppu";
28567 let isNVStorable = 1;
28568 let DecoderNamespace = "EXT_mmvec";
28569 let Constraints = "$Rx32 = $Rx32in";
28570 }
28571 def V6_vS32b_nt_nqpred_ai : HInst<
28572 (outs),
28573 (ins HvxQR:$Qv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28574 "if (!$Qv4) vmem($Rt32+#$Ii):nt = $Vs32",
28575 tc_aedb9f9e, TypeCVI_VM_ST>, Enc_2ea740, Requires<[UseHVXV60]> {
28576 let Inst{7-5} = 0b001;
28577 let Inst{31-21} = 0b00101000110;
28578 let addrMode = BaseImmOffset;
28579 let accessSize = HVXVectorAccess;
28580 let isNonTemporal = 1;
28581 let mayStore = 1;
28582 let DecoderNamespace = "EXT_mmvec";
28583 }
28584 def V6_vS32b_nt_nqpred_pi : HInst<
28585 (outs IntRegs:$Rx32),
28586 (ins HvxQR:$Qv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28587 "if (!$Qv4) vmem($Rx32++#$Ii):nt = $Vs32",
28588 tc_99093773, TypeCVI_VM_ST>, Enc_0b51ce, Requires<[UseHVXV60]> {
28589 let Inst{7-5} = 0b001;
28590 let Inst{13-13} = 0b0;
28591 let Inst{31-21} = 0b00101001110;
28592 let addrMode = PostInc;
28593 let accessSize = HVXVectorAccess;
28594 let isNonTemporal = 1;
28595 let mayStore = 1;
28596 let DecoderNamespace = "EXT_mmvec";
28597 let Constraints = "$Rx32 = $Rx32in";
28598 }
28599 def V6_vS32b_nt_nqpred_ppu : HInst<
28600 (outs IntRegs:$Rx32),
28601 (ins HvxQR:$Qv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28602 "if (!$Qv4) vmem($Rx32++$Mu2):nt = $Vs32",
28603 tc_99093773, TypeCVI_VM_ST>, Enc_4dff07, Requires<[UseHVXV60]> {
28604 let Inst{10-5} = 0b000001;
28605 let Inst{31-21} = 0b00101011110;
28606 let addrMode = PostInc;
28607 let accessSize = HVXVectorAccess;
28608 let isNonTemporal = 1;
28609 let mayStore = 1;
28610 let DecoderNamespace = "EXT_mmvec";
28611 let Constraints = "$Rx32 = $Rx32in";
28612 }
28613 def V6_vS32b_nt_pi : HInst<
28614 (outs IntRegs:$Rx32),
28615 (ins IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28616 "vmem($Rx32++#$Ii):nt = $Vs32",
28617 tc_a4c9df3b, TypeCVI_VM_ST>, Enc_b62ef7, Requires<[UseHVXV60]>, NewValueRel {
28618 let Inst{7-5} = 0b000;
28619 let Inst{13-11} = 0b000;
28620 let Inst{31-21} = 0b00101001011;
28621 let addrMode = PostInc;
28622 let accessSize = HVXVectorAccess;
28623 let isNonTemporal = 1;
28624 let mayStore = 1;
28625 let BaseOpcode = "V6_vS32b_pi";
28626 let isNVStorable = 1;
28627 let isPredicable = 1;
28628 let DecoderNamespace = "EXT_mmvec";
28629 let Constraints = "$Rx32 = $Rx32in";
28630 }
28631 def V6_vS32b_nt_ppu : HInst<
28632 (outs IntRegs:$Rx32),
28633 (ins IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28634 "vmem($Rx32++$Mu2):nt = $Vs32",
28635 tc_a4c9df3b, TypeCVI_VM_ST>, Enc_d15d19, Requires<[UseHVXV60]>, NewValueRel {
28636 let Inst{12-5} = 0b00000000;
28637 let Inst{31-21} = 0b00101011011;
28638 let addrMode = PostInc;
28639 let accessSize = HVXVectorAccess;
28640 let isNonTemporal = 1;
28641 let mayStore = 1;
28642 let BaseOpcode = "V6_vS32b_ppu";
28643 let isNVStorable = 1;
28644 let isPredicable = 1;
28645 let DecoderNamespace = "EXT_mmvec";
28646 let Constraints = "$Rx32 = $Rx32in";
28647 }
28648 def V6_vS32b_nt_pred_ai : HInst<
28649 (outs),
28650 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28651 "if ($Pv4) vmem($Rt32+#$Ii):nt = $Vs32",
28652 tc_85d237e3, TypeCVI_VM_ST>, Enc_27b757, Requires<[UseHVXV60]>, NewValueRel {
28653 let Inst{7-5} = 0b000;
28654 let Inst{31-21} = 0b00101000111;
28655 let isPredicated = 1;
28656 let addrMode = BaseImmOffset;
28657 let accessSize = HVXVectorAccess;
28658 let isNonTemporal = 1;
28659 let mayStore = 1;
28660 let BaseOpcode = "V6_vS32b_ai";
28661 let isNVStorable = 1;
28662 let DecoderNamespace = "EXT_mmvec";
28663 }
28664 def V6_vS32b_nt_pred_pi : HInst<
28665 (outs IntRegs:$Rx32),
28666 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28667 "if ($Pv4) vmem($Rx32++#$Ii):nt = $Vs32",
28668 tc_0317c6ca, TypeCVI_VM_ST>, Enc_865390, Requires<[UseHVXV60]>, NewValueRel {
28669 let Inst{7-5} = 0b000;
28670 let Inst{13-13} = 0b0;
28671 let Inst{31-21} = 0b00101001111;
28672 let isPredicated = 1;
28673 let addrMode = PostInc;
28674 let accessSize = HVXVectorAccess;
28675 let isNonTemporal = 1;
28676 let mayStore = 1;
28677 let BaseOpcode = "V6_vS32b_pi";
28678 let isNVStorable = 1;
28679 let DecoderNamespace = "EXT_mmvec";
28680 let Constraints = "$Rx32 = $Rx32in";
28681 }
28682 def V6_vS32b_nt_pred_ppu : HInst<
28683 (outs IntRegs:$Rx32),
28684 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28685 "if ($Pv4) vmem($Rx32++$Mu2):nt = $Vs32",
28686 tc_0317c6ca, TypeCVI_VM_ST>, Enc_1ef990, Requires<[UseHVXV60]>, NewValueRel {
28687 let Inst{10-5} = 0b000000;
28688 let Inst{31-21} = 0b00101011111;
28689 let isPredicated = 1;
28690 let addrMode = PostInc;
28691 let accessSize = HVXVectorAccess;
28692 let isNonTemporal = 1;
28693 let mayStore = 1;
28694 let BaseOpcode = "V6_vS32b_ppu";
28695 let isNVStorable = 1;
28696 let DecoderNamespace = "EXT_mmvec";
28697 let Constraints = "$Rx32 = $Rx32in";
28698 }
28699 def V6_vS32b_nt_qpred_ai : HInst<
28700 (outs),
28701 (ins HvxQR:$Qv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28702 "if ($Qv4) vmem($Rt32+#$Ii):nt = $Vs32",
28703 tc_aedb9f9e, TypeCVI_VM_ST>, Enc_2ea740, Requires<[UseHVXV60]> {
28704 let Inst{7-5} = 0b000;
28705 let Inst{31-21} = 0b00101000110;
28706 let addrMode = BaseImmOffset;
28707 let accessSize = HVXVectorAccess;
28708 let isNonTemporal = 1;
28709 let mayStore = 1;
28710 let DecoderNamespace = "EXT_mmvec";
28711 }
28712 def V6_vS32b_nt_qpred_pi : HInst<
28713 (outs IntRegs:$Rx32),
28714 (ins HvxQR:$Qv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28715 "if ($Qv4) vmem($Rx32++#$Ii):nt = $Vs32",
28716 tc_99093773, TypeCVI_VM_ST>, Enc_0b51ce, Requires<[UseHVXV60]> {
28717 let Inst{7-5} = 0b000;
28718 let Inst{13-13} = 0b0;
28719 let Inst{31-21} = 0b00101001110;
28720 let addrMode = PostInc;
28721 let accessSize = HVXVectorAccess;
28722 let isNonTemporal = 1;
28723 let mayStore = 1;
28724 let DecoderNamespace = "EXT_mmvec";
28725 let Constraints = "$Rx32 = $Rx32in";
28726 }
28727 def V6_vS32b_nt_qpred_ppu : HInst<
28728 (outs IntRegs:$Rx32),
28729 (ins HvxQR:$Qv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28730 "if ($Qv4) vmem($Rx32++$Mu2):nt = $Vs32",
28731 tc_99093773, TypeCVI_VM_ST>, Enc_4dff07, Requires<[UseHVXV60]> {
28732 let Inst{10-5} = 0b000000;
28733 let Inst{31-21} = 0b00101011110;
28734 let addrMode = PostInc;
28735 let accessSize = HVXVectorAccess;
28736 let isNonTemporal = 1;
28737 let mayStore = 1;
28738 let DecoderNamespace = "EXT_mmvec";
28739 let Constraints = "$Rx32 = $Rx32in";
28740 }
28741 def V6_vS32b_pi : HInst<
28742 (outs IntRegs:$Rx32),
28743 (ins IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28744 "vmem($Rx32++#$Ii) = $Vs32",
28745 tc_a4c9df3b, TypeCVI_VM_ST>, Enc_b62ef7, Requires<[UseHVXV60]>, NewValueRel {
28746 let Inst{7-5} = 0b000;
28747 let Inst{13-11} = 0b000;
28748 let Inst{31-21} = 0b00101001001;
28749 let addrMode = PostInc;
28750 let accessSize = HVXVectorAccess;
28751 let mayStore = 1;
28752 let BaseOpcode = "V6_vS32b_pi";
28753 let isNVStorable = 1;
28754 let isPredicable = 1;
28755 let DecoderNamespace = "EXT_mmvec";
28756 let Constraints = "$Rx32 = $Rx32in";
28757 }
28758 def V6_vS32b_ppu : HInst<
28759 (outs IntRegs:$Rx32),
28760 (ins IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28761 "vmem($Rx32++$Mu2) = $Vs32",
28762 tc_a4c9df3b, TypeCVI_VM_ST>, Enc_d15d19, Requires<[UseHVXV60]>, NewValueRel {
28763 let Inst{12-5} = 0b00000000;
28764 let Inst{31-21} = 0b00101011001;
28765 let addrMode = PostInc;
28766 let accessSize = HVXVectorAccess;
28767 let mayStore = 1;
28768 let isNVStorable = 1;
28769 let isPredicable = 1;
28770 let DecoderNamespace = "EXT_mmvec";
28771 let Constraints = "$Rx32 = $Rx32in";
28772 }
28773 def V6_vS32b_pred_ai : HInst<
28774 (outs),
28775 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28776 "if ($Pv4) vmem($Rt32+#$Ii) = $Vs32",
28777 tc_85d237e3, TypeCVI_VM_ST>, Enc_27b757, Requires<[UseHVXV60]>, NewValueRel {
28778 let Inst{7-5} = 0b000;
28779 let Inst{31-21} = 0b00101000101;
28780 let isPredicated = 1;
28781 let addrMode = BaseImmOffset;
28782 let accessSize = HVXVectorAccess;
28783 let mayStore = 1;
28784 let BaseOpcode = "V6_vS32b_ai";
28785 let isNVStorable = 1;
28786 let DecoderNamespace = "EXT_mmvec";
28787 }
28788 def V6_vS32b_pred_pi : HInst<
28789 (outs IntRegs:$Rx32),
28790 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28791 "if ($Pv4) vmem($Rx32++#$Ii) = $Vs32",
28792 tc_0317c6ca, TypeCVI_VM_ST>, Enc_865390, Requires<[UseHVXV60]>, NewValueRel {
28793 let Inst{7-5} = 0b000;
28794 let Inst{13-13} = 0b0;
28795 let Inst{31-21} = 0b00101001101;
28796 let isPredicated = 1;
28797 let addrMode = PostInc;
28798 let accessSize = HVXVectorAccess;
28799 let mayStore = 1;
28800 let BaseOpcode = "V6_vS32b_pi";
28801 let isNVStorable = 1;
28802 let DecoderNamespace = "EXT_mmvec";
28803 let Constraints = "$Rx32 = $Rx32in";
28804 }
28805 def V6_vS32b_pred_ppu : HInst<
28806 (outs IntRegs:$Rx32),
28807 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28808 "if ($Pv4) vmem($Rx32++$Mu2) = $Vs32",
28809 tc_0317c6ca, TypeCVI_VM_ST>, Enc_1ef990, Requires<[UseHVXV60]>, NewValueRel {
28810 let Inst{10-5} = 0b000000;
28811 let Inst{31-21} = 0b00101011101;
28812 let isPredicated = 1;
28813 let addrMode = PostInc;
28814 let accessSize = HVXVectorAccess;
28815 let mayStore = 1;
28816 let BaseOpcode = "V6_vS32b_ppu";
28817 let isNVStorable = 1;
28818 let DecoderNamespace = "EXT_mmvec";
28819 let Constraints = "$Rx32 = $Rx32in";
28820 }
28821 def V6_vS32b_qpred_ai : HInst<
28822 (outs),
28823 (ins HvxQR:$Qv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28824 "if ($Qv4) vmem($Rt32+#$Ii) = $Vs32",
28825 tc_aedb9f9e, TypeCVI_VM_ST>, Enc_2ea740, Requires<[UseHVXV60]> {
28826 let Inst{7-5} = 0b000;
28827 let Inst{31-21} = 0b00101000100;
28828 let addrMode = BaseImmOffset;
28829 let accessSize = HVXVectorAccess;
28830 let mayStore = 1;
28831 let DecoderNamespace = "EXT_mmvec";
28832 }
28833 def V6_vS32b_qpred_pi : HInst<
28834 (outs IntRegs:$Rx32),
28835 (ins HvxQR:$Qv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28836 "if ($Qv4) vmem($Rx32++#$Ii) = $Vs32",
28837 tc_99093773, TypeCVI_VM_ST>, Enc_0b51ce, Requires<[UseHVXV60]> {
28838 let Inst{7-5} = 0b000;
28839 let Inst{13-13} = 0b0;
28840 let Inst{31-21} = 0b00101001100;
28841 let addrMode = PostInc;
28842 let accessSize = HVXVectorAccess;
28843 let mayStore = 1;
28844 let DecoderNamespace = "EXT_mmvec";
28845 let Constraints = "$Rx32 = $Rx32in";
28846 }
28847 def V6_vS32b_qpred_ppu : HInst<
28848 (outs IntRegs:$Rx32),
28849 (ins HvxQR:$Qv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28850 "if ($Qv4) vmem($Rx32++$Mu2) = $Vs32",
28851 tc_99093773, TypeCVI_VM_ST>, Enc_4dff07, Requires<[UseHVXV60]> {
28852 let Inst{10-5} = 0b000000;
28853 let Inst{31-21} = 0b00101011100;
28854 let addrMode = PostInc;
28855 let accessSize = HVXVectorAccess;
28856 let mayStore = 1;
28857 let DecoderNamespace = "EXT_mmvec";
28858 let Constraints = "$Rx32 = $Rx32in";
28859 }
28860 def V6_vS32b_srls_ai : HInst<
28861 (outs),
28862 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
28863 "vmem($Rt32+#$Ii):scatter_release",
28864 tc_29841470, TypeCVI_SCATTER_NEW_RST>, Enc_ff3442, Requires<[UseHVXV65]> {
28865 let Inst{7-0} = 0b00101000;
28866 let Inst{12-11} = 0b00;
28867 let Inst{31-21} = 0b00101000001;
28868 let addrMode = BaseImmOffset;
28869 let accessSize = HVXVectorAccess;
28870 let CVINew = 1;
28871 let mayStore = 1;
28872 let DecoderNamespace = "EXT_mmvec";
28873 }
28874 def V6_vS32b_srls_pi : HInst<
28875 (outs IntRegs:$Rx32),
28876 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
28877 "vmem($Rx32++#$Ii):scatter_release",
28878 tc_5c03dc63, TypeCVI_SCATTER_NEW_RST>, Enc_6c9ee0, Requires<[UseHVXV65]> {
28879 let Inst{7-0} = 0b00101000;
28880 let Inst{13-11} = 0b000;
28881 let Inst{31-21} = 0b00101001001;
28882 let addrMode = PostInc;
28883 let accessSize = HVXVectorAccess;
28884 let CVINew = 1;
28885 let mayStore = 1;
28886 let DecoderNamespace = "EXT_mmvec";
28887 let Constraints = "$Rx32 = $Rx32in";
28888 }
28889 def V6_vS32b_srls_ppu : HInst<
28890 (outs IntRegs:$Rx32),
28891 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
28892 "vmem($Rx32++$Mu2):scatter_release",
28893 tc_5c03dc63, TypeCVI_SCATTER_NEW_RST>, Enc_44661f, Requires<[UseHVXV65]> {
28894 let Inst{12-0} = 0b0000000101000;
28895 let Inst{31-21} = 0b00101011001;
28896 let addrMode = PostInc;
28897 let accessSize = HVXVectorAccess;
28898 let CVINew = 1;
28899 let mayStore = 1;
28900 let DecoderNamespace = "EXT_mmvec";
28901 let Constraints = "$Rx32 = $Rx32in";
28902 }
28903 def V6_vabsb : HInst<
28904 (outs HvxVR:$Vd32),
28905 (ins HvxVR:$Vu32),
28906 "$Vd32.b = vabs($Vu32.b)",
28907 tc_71337255, TypeCVI_VA>, Enc_e7581c, Requires<[UseHVXV65]> {
28908 let Inst{7-5} = 0b100;
28909 let Inst{13-13} = 0b0;
28910 let Inst{31-16} = 0b0001111000000001;
28911 let hasNewValue = 1;
28912 let opNewValue = 0;
28913 let DecoderNamespace = "EXT_mmvec";
28914 }
28915 def V6_vabsb_alt : HInst<
28916 (outs HvxVR:$Vd32),
28917 (ins HvxVR:$Vu32),
28918 "$Vd32 = vabsb($Vu32)",
28919 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
28920 let hasNewValue = 1;
28921 let opNewValue = 0;
28922 let isPseudo = 1;
28923 let isCodeGenOnly = 1;
28924 let DecoderNamespace = "EXT_mmvec";
28925 }
28926 def V6_vabsb_sat : HInst<
28927 (outs HvxVR:$Vd32),
28928 (ins HvxVR:$Vu32),
28929 "$Vd32.b = vabs($Vu32.b):sat",
28930 tc_71337255, TypeCVI_VA>, Enc_e7581c, Requires<[UseHVXV65]> {
28931 let Inst{7-5} = 0b101;
28932 let Inst{13-13} = 0b0;
28933 let Inst{31-16} = 0b0001111000000001;
28934 let hasNewValue = 1;
28935 let opNewValue = 0;
28936 let DecoderNamespace = "EXT_mmvec";
28937 }
28938 def V6_vabsb_sat_alt : HInst<
28939 (outs HvxVR:$Vd32),
28940 (ins HvxVR:$Vu32),
28941 "$Vd32 = vabsb($Vu32):sat",
28942 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
28943 let hasNewValue = 1;
28944 let opNewValue = 0;
28945 let isPseudo = 1;
28946 let isCodeGenOnly = 1;
28947 let DecoderNamespace = "EXT_mmvec";
28948 }
28949 def V6_vabsdiffh : HInst<
28950 (outs HvxVR:$Vd32),
28951 (ins HvxVR:$Vu32, HvxVR:$Vv32),
28952 "$Vd32.uh = vabsdiff($Vu32.h,$Vv32.h)",
28953 tc_908a4c8c, TypeCVI_VX>, Enc_45364e, Requires<[UseHVXV60]> {
28954 let Inst{7-5} = 0b001;
28955 let Inst{13-13} = 0b0;
28956 let Inst{31-21} = 0b00011100110;
28957 let hasNewValue = 1;
28958 let opNewValue = 0;
28959 let DecoderNamespace = "EXT_mmvec";
28960 }
28961 def V6_vabsdiffh_alt : HInst<
28962 (outs HvxVR:$Vd32),
28963 (ins HvxVR:$Vu32, HvxVR:$Vv32),
28964 "$Vd32 = vabsdiffh($Vu32,$Vv32)",
28965 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
28966 let hasNewValue = 1;
28967 let opNewValue = 0;
28968 let isPseudo = 1;
28969 let isCodeGenOnly = 1;
28970 let DecoderNamespace = "EXT_mmvec";
28971 }
28972 def V6_vabsdiffub : HInst<
28973 (outs HvxVR:$Vd32),
28974 (ins HvxVR:$Vu32, HvxVR:$Vv32),
28975 "$Vd32.ub = vabsdiff($Vu32.ub,$Vv32.ub)",
28976 tc_908a4c8c, TypeCVI_VX>, Enc_45364e, Requires<[UseHVXV60]> {
28977 let Inst{7-5} = 0b000;
28978 let Inst{13-13} = 0b0;
28979 let Inst{31-21} = 0b00011100110;
28980 let hasNewValue = 1;
28981 let opNewValue = 0;
28982 let DecoderNamespace = "EXT_mmvec";
28983 }
28984 def V6_vabsdiffub_alt : HInst<
28985 (outs HvxVR:$Vd32),
28986 (ins HvxVR:$Vu32, HvxVR:$Vv32),
28987 "$Vd32 = vabsdiffub($Vu32,$Vv32)",
28988 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
28989 let hasNewValue = 1;
28990 let opNewValue = 0;
28991 let isPseudo = 1;
28992 let isCodeGenOnly = 1;
28993 let DecoderNamespace = "EXT_mmvec";
28994 }
28995 def V6_vabsdiffuh : HInst<
28996 (outs HvxVR:$Vd32),
28997 (ins HvxVR:$Vu32, HvxVR:$Vv32),
28998 "$Vd32.uh = vabsdiff($Vu32.uh,$Vv32.uh)",
28999 tc_908a4c8c, TypeCVI_VX>, Enc_45364e, Requires<[UseHVXV60]> {
29000 let Inst{7-5} = 0b010;
29001 let Inst{13-13} = 0b0;
29002 let Inst{31-21} = 0b00011100110;
29003 let hasNewValue = 1;
29004 let opNewValue = 0;
29005 let DecoderNamespace = "EXT_mmvec";
29006 }
29007 def V6_vabsdiffuh_alt : HInst<
29008 (outs HvxVR:$Vd32),
29009 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29010 "$Vd32 = vabsdiffuh($Vu32,$Vv32)",
29011 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29012 let hasNewValue = 1;
29013 let opNewValue = 0;
29014 let isPseudo = 1;
29015 let isCodeGenOnly = 1;
29016 let DecoderNamespace = "EXT_mmvec";
29017 }
29018 def V6_vabsdiffw : HInst<
29019 (outs HvxVR:$Vd32),
29020 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29021 "$Vd32.uw = vabsdiff($Vu32.w,$Vv32.w)",
29022 tc_908a4c8c, TypeCVI_VX>, Enc_45364e, Requires<[UseHVXV60]> {
29023 let Inst{7-5} = 0b011;
29024 let Inst{13-13} = 0b0;
29025 let Inst{31-21} = 0b00011100110;
29026 let hasNewValue = 1;
29027 let opNewValue = 0;
29028 let DecoderNamespace = "EXT_mmvec";
29029 }
29030 def V6_vabsdiffw_alt : HInst<
29031 (outs HvxVR:$Vd32),
29032 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29033 "$Vd32 = vabsdiffw($Vu32,$Vv32)",
29034 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29035 let hasNewValue = 1;
29036 let opNewValue = 0;
29037 let isPseudo = 1;
29038 let isCodeGenOnly = 1;
29039 let DecoderNamespace = "EXT_mmvec";
29040 }
29041 def V6_vabsh : HInst<
29042 (outs HvxVR:$Vd32),
29043 (ins HvxVR:$Vu32),
29044 "$Vd32.h = vabs($Vu32.h)",
29045 tc_71337255, TypeCVI_VA>, Enc_e7581c, Requires<[UseHVXV60]> {
29046 let Inst{7-5} = 0b000;
29047 let Inst{13-13} = 0b0;
29048 let Inst{31-16} = 0b0001111000000000;
29049 let hasNewValue = 1;
29050 let opNewValue = 0;
29051 let DecoderNamespace = "EXT_mmvec";
29052 }
29053 def V6_vabsh_alt : HInst<
29054 (outs HvxVR:$Vd32),
29055 (ins HvxVR:$Vu32),
29056 "$Vd32 = vabsh($Vu32)",
29057 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29058 let hasNewValue = 1;
29059 let opNewValue = 0;
29060 let isPseudo = 1;
29061 let isCodeGenOnly = 1;
29062 let DecoderNamespace = "EXT_mmvec";
29063 }
29064 def V6_vabsh_sat : HInst<
29065 (outs HvxVR:$Vd32),
29066 (ins HvxVR:$Vu32),
29067 "$Vd32.h = vabs($Vu32.h):sat",
29068 tc_71337255, TypeCVI_VA>, Enc_e7581c, Requires<[UseHVXV60]> {
29069 let Inst{7-5} = 0b001;
29070 let Inst{13-13} = 0b0;
29071 let Inst{31-16} = 0b0001111000000000;
29072 let hasNewValue = 1;
29073 let opNewValue = 0;
29074 let DecoderNamespace = "EXT_mmvec";
29075 }
29076 def V6_vabsh_sat_alt : HInst<
29077 (outs HvxVR:$Vd32),
29078 (ins HvxVR:$Vu32),
29079 "$Vd32 = vabsh($Vu32):sat",
29080 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29081 let hasNewValue = 1;
29082 let opNewValue = 0;
29083 let isPseudo = 1;
29084 let isCodeGenOnly = 1;
29085 let DecoderNamespace = "EXT_mmvec";
29086 }
29087 def V6_vabsub_alt : HInst<
29088 (outs HvxVR:$Vd32),
29089 (ins HvxVR:$Vu32),
29090 "$Vd32.ub = vabs($Vu32.b)",
29091 tc_71337255, TypeMAPPING>, Requires<[UseHVXV65]> {
29092 let hasNewValue = 1;
29093 let opNewValue = 0;
29094 let isPseudo = 1;
29095 let isCodeGenOnly = 1;
29096 let DecoderNamespace = "EXT_mmvec";
29097 }
29098 def V6_vabsuh_alt : HInst<
29099 (outs HvxVR:$Vd32),
29100 (ins HvxVR:$Vu32),
29101 "$Vd32.uh = vabs($Vu32.h)",
29102 tc_71337255, TypeMAPPING>, Requires<[UseHVXV65]> {
29103 let hasNewValue = 1;
29104 let opNewValue = 0;
29105 let isPseudo = 1;
29106 let isCodeGenOnly = 1;
29107 let DecoderNamespace = "EXT_mmvec";
29108 }
29109 def V6_vabsuw_alt : HInst<
29110 (outs HvxVR:$Vd32),
29111 (ins HvxVR:$Vu32),
29112 "$Vd32.uw = vabs($Vu32.w)",
29113 tc_71337255, TypeMAPPING>, Requires<[UseHVXV65]> {
29114 let hasNewValue = 1;
29115 let opNewValue = 0;
29116 let isPseudo = 1;
29117 let isCodeGenOnly = 1;
29118 let DecoderNamespace = "EXT_mmvec";
29119 }
29120 def V6_vabsw : HInst<
29121 (outs HvxVR:$Vd32),
29122 (ins HvxVR:$Vu32),
29123 "$Vd32.w = vabs($Vu32.w)",
29124 tc_71337255, TypeCVI_VA>, Enc_e7581c, Requires<[UseHVXV60]> {
29125 let Inst{7-5} = 0b010;
29126 let Inst{13-13} = 0b0;
29127 let Inst{31-16} = 0b0001111000000000;
29128 let hasNewValue = 1;
29129 let opNewValue = 0;
29130 let DecoderNamespace = "EXT_mmvec";
29131 }
29132 def V6_vabsw_alt : HInst<
29133 (outs HvxVR:$Vd32),
29134 (ins HvxVR:$Vu32),
29135 "$Vd32 = vabsw($Vu32)",
29136 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29137 let hasNewValue = 1;
29138 let opNewValue = 0;
29139 let isPseudo = 1;
29140 let isCodeGenOnly = 1;
29141 let DecoderNamespace = "EXT_mmvec";
29142 }
29143 def V6_vabsw_sat : HInst<
29144 (outs HvxVR:$Vd32),
29145 (ins HvxVR:$Vu32),
29146 "$Vd32.w = vabs($Vu32.w):sat",
29147 tc_71337255, TypeCVI_VA>, Enc_e7581c, Requires<[UseHVXV60]> {
29148 let Inst{7-5} = 0b011;
29149 let Inst{13-13} = 0b0;
29150 let Inst{31-16} = 0b0001111000000000;
29151 let hasNewValue = 1;
29152 let opNewValue = 0;
29153 let DecoderNamespace = "EXT_mmvec";
29154 }
29155 def V6_vabsw_sat_alt : HInst<
29156 (outs HvxVR:$Vd32),
29157 (ins HvxVR:$Vu32),
29158 "$Vd32 = vabsw($Vu32):sat",
29159 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29160 let hasNewValue = 1;
29161 let opNewValue = 0;
29162 let isPseudo = 1;
29163 let isCodeGenOnly = 1;
29164 let DecoderNamespace = "EXT_mmvec";
29165 }
29166 def V6_vaddb : HInst<
29167 (outs HvxVR:$Vd32),
29168 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29169 "$Vd32.b = vadd($Vu32.b,$Vv32.b)",
29170 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
29171 let Inst{7-5} = 0b110;
29172 let Inst{13-13} = 0b0;
29173 let Inst{31-21} = 0b00011111101;
29174 let hasNewValue = 1;
29175 let opNewValue = 0;
29176 let DecoderNamespace = "EXT_mmvec";
29177 }
29178 def V6_vaddb_alt : HInst<
29179 (outs HvxVR:$Vd32),
29180 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29181 "$Vd32 = vaddb($Vu32,$Vv32)",
29182 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29183 let hasNewValue = 1;
29184 let opNewValue = 0;
29185 let isPseudo = 1;
29186 let isCodeGenOnly = 1;
29187 let DecoderNamespace = "EXT_mmvec";
29188 }
29189 def V6_vaddb_dv : HInst<
29190 (outs HvxWR:$Vdd32),
29191 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29192 "$Vdd32.b = vadd($Vuu32.b,$Vvv32.b)",
29193 tc_97c165b9, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
29194 let Inst{7-5} = 0b100;
29195 let Inst{13-13} = 0b0;
29196 let Inst{31-21} = 0b00011100011;
29197 let hasNewValue = 1;
29198 let opNewValue = 0;
29199 let DecoderNamespace = "EXT_mmvec";
29200 }
29201 def V6_vaddb_dv_alt : HInst<
29202 (outs HvxWR:$Vdd32),
29203 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29204 "$Vdd32 = vaddb($Vuu32,$Vvv32)",
29205 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29206 let hasNewValue = 1;
29207 let opNewValue = 0;
29208 let isPseudo = 1;
29209 let isCodeGenOnly = 1;
29210 let DecoderNamespace = "EXT_mmvec";
29211 }
29212 def V6_vaddbnq : HInst<
29213 (outs HvxVR:$Vx32),
29214 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29215 "if (!$Qv4) $Vx32.b += $Vu32.b",
29216 tc_a3127e12, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
29217 let Inst{7-5} = 0b011;
29218 let Inst{13-13} = 0b1;
29219 let Inst{21-16} = 0b000001;
29220 let Inst{31-24} = 0b00011110;
29221 let hasNewValue = 1;
29222 let opNewValue = 0;
29223 let isAccumulator = 1;
29224 let DecoderNamespace = "EXT_mmvec";
29225 let Constraints = "$Vx32 = $Vx32in";
29226 }
29227 def V6_vaddbnq_alt : HInst<
29228 (outs HvxVR:$Vx32),
29229 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29230 "if (!$Qv4.b) $Vx32.b += $Vu32.b",
29231 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29232 let hasNewValue = 1;
29233 let opNewValue = 0;
29234 let isAccumulator = 1;
29235 let isPseudo = 1;
29236 let isCodeGenOnly = 1;
29237 let DecoderNamespace = "EXT_mmvec";
29238 let Constraints = "$Vx32 = $Vx32in";
29239 }
29240 def V6_vaddbq : HInst<
29241 (outs HvxVR:$Vx32),
29242 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29243 "if ($Qv4) $Vx32.b += $Vu32.b",
29244 tc_a3127e12, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
29245 let Inst{7-5} = 0b000;
29246 let Inst{13-13} = 0b1;
29247 let Inst{21-16} = 0b000001;
29248 let Inst{31-24} = 0b00011110;
29249 let hasNewValue = 1;
29250 let opNewValue = 0;
29251 let isAccumulator = 1;
29252 let DecoderNamespace = "EXT_mmvec";
29253 let Constraints = "$Vx32 = $Vx32in";
29254 }
29255 def V6_vaddbq_alt : HInst<
29256 (outs HvxVR:$Vx32),
29257 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29258 "if ($Qv4.b) $Vx32.b += $Vu32.b",
29259 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29260 let hasNewValue = 1;
29261 let opNewValue = 0;
29262 let isAccumulator = 1;
29263 let isPseudo = 1;
29264 let isCodeGenOnly = 1;
29265 let DecoderNamespace = "EXT_mmvec";
29266 let Constraints = "$Vx32 = $Vx32in";
29267 }
29268 def V6_vaddbsat : HInst<
29269 (outs HvxVR:$Vd32),
29270 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29271 "$Vd32.b = vadd($Vu32.b,$Vv32.b):sat",
29272 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
29273 let Inst{7-5} = 0b000;
29274 let Inst{13-13} = 0b0;
29275 let Inst{31-21} = 0b00011111000;
29276 let hasNewValue = 1;
29277 let opNewValue = 0;
29278 let DecoderNamespace = "EXT_mmvec";
29279 }
29280 def V6_vaddbsat_alt : HInst<
29281 (outs HvxVR:$Vd32),
29282 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29283 "$Vd32 = vaddb($Vu32,$Vv32):sat",
29284 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
29285 let hasNewValue = 1;
29286 let opNewValue = 0;
29287 let isPseudo = 1;
29288 let isCodeGenOnly = 1;
29289 let DecoderNamespace = "EXT_mmvec";
29290 }
29291 def V6_vaddbsat_dv : HInst<
29292 (outs HvxWR:$Vdd32),
29293 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29294 "$Vdd32.b = vadd($Vuu32.b,$Vvv32.b):sat",
29295 tc_97c165b9, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV62]> {
29296 let Inst{7-5} = 0b000;
29297 let Inst{13-13} = 0b0;
29298 let Inst{31-21} = 0b00011110101;
29299 let hasNewValue = 1;
29300 let opNewValue = 0;
29301 let DecoderNamespace = "EXT_mmvec";
29302 }
29303 def V6_vaddbsat_dv_alt : HInst<
29304 (outs HvxWR:$Vdd32),
29305 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29306 "$Vdd32 = vaddb($Vuu32,$Vvv32):sat",
29307 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
29308 let hasNewValue = 1;
29309 let opNewValue = 0;
29310 let isPseudo = 1;
29311 let isCodeGenOnly = 1;
29312 let DecoderNamespace = "EXT_mmvec";
29313 }
29314 def V6_vaddcarry : HInst<
29315 (outs HvxVR:$Vd32, HvxQR:$Qx4),
29316 (ins HvxVR:$Vu32, HvxVR:$Vv32, HvxQR:$Qx4in),
29317 "$Vd32.w = vadd($Vu32.w,$Vv32.w,$Qx4):carry",
29318 tc_5a9fc4ec, TypeCVI_VA>, Enc_b43b67, Requires<[UseHVXV62]> {
29319 let Inst{7-7} = 0b0;
29320 let Inst{13-13} = 0b1;
29321 let Inst{31-21} = 0b00011100101;
29322 let hasNewValue = 1;
29323 let opNewValue = 0;
29324 let DecoderNamespace = "EXT_mmvec";
29325 let Constraints = "$Qx4 = $Qx4in";
29326 }
29327 def V6_vaddclbh : HInst<
29328 (outs HvxVR:$Vd32),
29329 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29330 "$Vd32.h = vadd(vclb($Vu32.h),$Vv32.h)",
29331 tc_45453b98, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV62]> {
29332 let Inst{7-5} = 0b000;
29333 let Inst{13-13} = 0b1;
29334 let Inst{31-21} = 0b00011111000;
29335 let hasNewValue = 1;
29336 let opNewValue = 0;
29337 let DecoderNamespace = "EXT_mmvec";
29338 }
29339 def V6_vaddclbw : HInst<
29340 (outs HvxVR:$Vd32),
29341 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29342 "$Vd32.w = vadd(vclb($Vu32.w),$Vv32.w)",
29343 tc_45453b98, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV62]> {
29344 let Inst{7-5} = 0b001;
29345 let Inst{13-13} = 0b1;
29346 let Inst{31-21} = 0b00011111000;
29347 let hasNewValue = 1;
29348 let opNewValue = 0;
29349 let DecoderNamespace = "EXT_mmvec";
29350 }
29351 def V6_vaddh : HInst<
29352 (outs HvxVR:$Vd32),
29353 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29354 "$Vd32.h = vadd($Vu32.h,$Vv32.h)",
29355 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
29356 let Inst{7-5} = 0b111;
29357 let Inst{13-13} = 0b0;
29358 let Inst{31-21} = 0b00011111101;
29359 let hasNewValue = 1;
29360 let opNewValue = 0;
29361 let DecoderNamespace = "EXT_mmvec";
29362 }
29363 def V6_vaddh_alt : HInst<
29364 (outs HvxVR:$Vd32),
29365 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29366 "$Vd32 = vaddh($Vu32,$Vv32)",
29367 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29368 let hasNewValue = 1;
29369 let opNewValue = 0;
29370 let isPseudo = 1;
29371 let isCodeGenOnly = 1;
29372 let DecoderNamespace = "EXT_mmvec";
29373 }
29374 def V6_vaddh_dv : HInst<
29375 (outs HvxWR:$Vdd32),
29376 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29377 "$Vdd32.h = vadd($Vuu32.h,$Vvv32.h)",
29378 tc_97c165b9, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
29379 let Inst{7-5} = 0b101;
29380 let Inst{13-13} = 0b0;
29381 let Inst{31-21} = 0b00011100011;
29382 let hasNewValue = 1;
29383 let opNewValue = 0;
29384 let DecoderNamespace = "EXT_mmvec";
29385 }
29386 def V6_vaddh_dv_alt : HInst<
29387 (outs HvxWR:$Vdd32),
29388 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29389 "$Vdd32 = vaddh($Vuu32,$Vvv32)",
29390 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29391 let hasNewValue = 1;
29392 let opNewValue = 0;
29393 let isPseudo = 1;
29394 let isCodeGenOnly = 1;
29395 let DecoderNamespace = "EXT_mmvec";
29396 }
29397 def V6_vaddhnq : HInst<
29398 (outs HvxVR:$Vx32),
29399 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29400 "if (!$Qv4) $Vx32.h += $Vu32.h",
29401 tc_a3127e12, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
29402 let Inst{7-5} = 0b100;
29403 let Inst{13-13} = 0b1;
29404 let Inst{21-16} = 0b000001;
29405 let Inst{31-24} = 0b00011110;
29406 let hasNewValue = 1;
29407 let opNewValue = 0;
29408 let isAccumulator = 1;
29409 let DecoderNamespace = "EXT_mmvec";
29410 let Constraints = "$Vx32 = $Vx32in";
29411 }
29412 def V6_vaddhnq_alt : HInst<
29413 (outs HvxVR:$Vx32),
29414 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29415 "if (!$Qv4.h) $Vx32.h += $Vu32.h",
29416 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29417 let hasNewValue = 1;
29418 let opNewValue = 0;
29419 let isAccumulator = 1;
29420 let isPseudo = 1;
29421 let isCodeGenOnly = 1;
29422 let DecoderNamespace = "EXT_mmvec";
29423 let Constraints = "$Vx32 = $Vx32in";
29424 }
29425 def V6_vaddhq : HInst<
29426 (outs HvxVR:$Vx32),
29427 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29428 "if ($Qv4) $Vx32.h += $Vu32.h",
29429 tc_a3127e12, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
29430 let Inst{7-5} = 0b001;
29431 let Inst{13-13} = 0b1;
29432 let Inst{21-16} = 0b000001;
29433 let Inst{31-24} = 0b00011110;
29434 let hasNewValue = 1;
29435 let opNewValue = 0;
29436 let isAccumulator = 1;
29437 let DecoderNamespace = "EXT_mmvec";
29438 let Constraints = "$Vx32 = $Vx32in";
29439 }
29440 def V6_vaddhq_alt : HInst<
29441 (outs HvxVR:$Vx32),
29442 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29443 "if ($Qv4.h) $Vx32.h += $Vu32.h",
29444 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29445 let hasNewValue = 1;
29446 let opNewValue = 0;
29447 let isAccumulator = 1;
29448 let isPseudo = 1;
29449 let isCodeGenOnly = 1;
29450 let DecoderNamespace = "EXT_mmvec";
29451 let Constraints = "$Vx32 = $Vx32in";
29452 }
29453 def V6_vaddhsat : HInst<
29454 (outs HvxVR:$Vd32),
29455 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29456 "$Vd32.h = vadd($Vu32.h,$Vv32.h):sat",
29457 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
29458 let Inst{7-5} = 0b011;
29459 let Inst{13-13} = 0b0;
29460 let Inst{31-21} = 0b00011100010;
29461 let hasNewValue = 1;
29462 let opNewValue = 0;
29463 let DecoderNamespace = "EXT_mmvec";
29464 }
29465 def V6_vaddhsat_alt : HInst<
29466 (outs HvxVR:$Vd32),
29467 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29468 "$Vd32 = vaddh($Vu32,$Vv32):sat",
29469 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29470 let hasNewValue = 1;
29471 let opNewValue = 0;
29472 let isPseudo = 1;
29473 let isCodeGenOnly = 1;
29474 let DecoderNamespace = "EXT_mmvec";
29475 }
29476 def V6_vaddhsat_dv : HInst<
29477 (outs HvxWR:$Vdd32),
29478 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29479 "$Vdd32.h = vadd($Vuu32.h,$Vvv32.h):sat",
29480 tc_97c165b9, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
29481 let Inst{7-5} = 0b001;
29482 let Inst{13-13} = 0b0;
29483 let Inst{31-21} = 0b00011100100;
29484 let hasNewValue = 1;
29485 let opNewValue = 0;
29486 let DecoderNamespace = "EXT_mmvec";
29487 }
29488 def V6_vaddhsat_dv_alt : HInst<
29489 (outs HvxWR:$Vdd32),
29490 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29491 "$Vdd32 = vaddh($Vuu32,$Vvv32):sat",
29492 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29493 let hasNewValue = 1;
29494 let opNewValue = 0;
29495 let isPseudo = 1;
29496 let isCodeGenOnly = 1;
29497 let DecoderNamespace = "EXT_mmvec";
29498 }
29499 def V6_vaddhw : HInst<
29500 (outs HvxWR:$Vdd32),
29501 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29502 "$Vdd32.w = vadd($Vu32.h,$Vv32.h)",
29503 tc_eda67dcd, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
29504 let Inst{7-5} = 0b100;
29505 let Inst{13-13} = 0b0;
29506 let Inst{31-21} = 0b00011100101;
29507 let hasNewValue = 1;
29508 let opNewValue = 0;
29509 let DecoderNamespace = "EXT_mmvec";
29510 }
29511 def V6_vaddhw_acc : HInst<
29512 (outs HvxWR:$Vxx32),
29513 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
29514 "$Vxx32.w += vadd($Vu32.h,$Vv32.h)",
29515 tc_e172d86a, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV62]> {
29516 let Inst{7-5} = 0b010;
29517 let Inst{13-13} = 0b1;
29518 let Inst{31-21} = 0b00011100001;
29519 let hasNewValue = 1;
29520 let opNewValue = 0;
29521 let isAccumulator = 1;
29522 let DecoderNamespace = "EXT_mmvec";
29523 let Constraints = "$Vxx32 = $Vxx32in";
29524 }
29525 def V6_vaddhw_acc_alt : HInst<
29526 (outs HvxWR:$Vxx32),
29527 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
29528 "$Vxx32 += vaddh($Vu32,$Vv32)",
29529 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
29530 let hasNewValue = 1;
29531 let opNewValue = 0;
29532 let isAccumulator = 1;
29533 let isPseudo = 1;
29534 let isCodeGenOnly = 1;
29535 let DecoderNamespace = "EXT_mmvec";
29536 let Constraints = "$Vxx32 = $Vxx32in";
29537 }
29538 def V6_vaddhw_alt : HInst<
29539 (outs HvxWR:$Vdd32),
29540 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29541 "$Vdd32 = vaddh($Vu32,$Vv32)",
29542 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29543 let hasNewValue = 1;
29544 let opNewValue = 0;
29545 let isPseudo = 1;
29546 let isCodeGenOnly = 1;
29547 let DecoderNamespace = "EXT_mmvec";
29548 }
29549 def V6_vaddubh : HInst<
29550 (outs HvxWR:$Vdd32),
29551 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29552 "$Vdd32.h = vadd($Vu32.ub,$Vv32.ub)",
29553 tc_eda67dcd, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
29554 let Inst{7-5} = 0b010;
29555 let Inst{13-13} = 0b0;
29556 let Inst{31-21} = 0b00011100101;
29557 let hasNewValue = 1;
29558 let opNewValue = 0;
29559 let DecoderNamespace = "EXT_mmvec";
29560 }
29561 def V6_vaddubh_acc : HInst<
29562 (outs HvxWR:$Vxx32),
29563 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
29564 "$Vxx32.h += vadd($Vu32.ub,$Vv32.ub)",
29565 tc_e172d86a, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV62]> {
29566 let Inst{7-5} = 0b101;
29567 let Inst{13-13} = 0b1;
29568 let Inst{31-21} = 0b00011100010;
29569 let hasNewValue = 1;
29570 let opNewValue = 0;
29571 let isAccumulator = 1;
29572 let DecoderNamespace = "EXT_mmvec";
29573 let Constraints = "$Vxx32 = $Vxx32in";
29574 }
29575 def V6_vaddubh_acc_alt : HInst<
29576 (outs HvxWR:$Vxx32),
29577 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
29578 "$Vxx32 += vaddub($Vu32,$Vv32)",
29579 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
29580 let hasNewValue = 1;
29581 let opNewValue = 0;
29582 let isAccumulator = 1;
29583 let isPseudo = 1;
29584 let isCodeGenOnly = 1;
29585 let DecoderNamespace = "EXT_mmvec";
29586 let Constraints = "$Vxx32 = $Vxx32in";
29587 }
29588 def V6_vaddubh_alt : HInst<
29589 (outs HvxWR:$Vdd32),
29590 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29591 "$Vdd32 = vaddub($Vu32,$Vv32)",
29592 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29593 let hasNewValue = 1;
29594 let opNewValue = 0;
29595 let isPseudo = 1;
29596 let isCodeGenOnly = 1;
29597 let DecoderNamespace = "EXT_mmvec";
29598 }
29599 def V6_vaddubsat : HInst<
29600 (outs HvxVR:$Vd32),
29601 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29602 "$Vd32.ub = vadd($Vu32.ub,$Vv32.ub):sat",
29603 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
29604 let Inst{7-5} = 0b001;
29605 let Inst{13-13} = 0b0;
29606 let Inst{31-21} = 0b00011100010;
29607 let hasNewValue = 1;
29608 let opNewValue = 0;
29609 let DecoderNamespace = "EXT_mmvec";
29610 }
29611 def V6_vaddubsat_alt : HInst<
29612 (outs HvxVR:$Vd32),
29613 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29614 "$Vd32 = vaddub($Vu32,$Vv32):sat",
29615 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29616 let hasNewValue = 1;
29617 let opNewValue = 0;
29618 let isPseudo = 1;
29619 let isCodeGenOnly = 1;
29620 let DecoderNamespace = "EXT_mmvec";
29621 }
29622 def V6_vaddubsat_dv : HInst<
29623 (outs HvxWR:$Vdd32),
29624 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29625 "$Vdd32.ub = vadd($Vuu32.ub,$Vvv32.ub):sat",
29626 tc_97c165b9, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
29627 let Inst{7-5} = 0b111;
29628 let Inst{13-13} = 0b0;
29629 let Inst{31-21} = 0b00011100011;
29630 let hasNewValue = 1;
29631 let opNewValue = 0;
29632 let DecoderNamespace = "EXT_mmvec";
29633 }
29634 def V6_vaddubsat_dv_alt : HInst<
29635 (outs HvxWR:$Vdd32),
29636 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29637 "$Vdd32 = vaddub($Vuu32,$Vvv32):sat",
29638 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29639 let hasNewValue = 1;
29640 let opNewValue = 0;
29641 let isPseudo = 1;
29642 let isCodeGenOnly = 1;
29643 let DecoderNamespace = "EXT_mmvec";
29644 }
29645 def V6_vaddububb_sat : HInst<
29646 (outs HvxVR:$Vd32),
29647 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29648 "$Vd32.ub = vadd($Vu32.ub,$Vv32.b):sat",
29649 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
29650 let Inst{7-5} = 0b100;
29651 let Inst{13-13} = 0b0;
29652 let Inst{31-21} = 0b00011110101;
29653 let hasNewValue = 1;
29654 let opNewValue = 0;
29655 let DecoderNamespace = "EXT_mmvec";
29656 }
29657 def V6_vadduhsat : HInst<
29658 (outs HvxVR:$Vd32),
29659 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29660 "$Vd32.uh = vadd($Vu32.uh,$Vv32.uh):sat",
29661 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
29662 let Inst{7-5} = 0b010;
29663 let Inst{13-13} = 0b0;
29664 let Inst{31-21} = 0b00011100010;
29665 let hasNewValue = 1;
29666 let opNewValue = 0;
29667 let DecoderNamespace = "EXT_mmvec";
29668 }
29669 def V6_vadduhsat_alt : HInst<
29670 (outs HvxVR:$Vd32),
29671 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29672 "$Vd32 = vadduh($Vu32,$Vv32):sat",
29673 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29674 let hasNewValue = 1;
29675 let opNewValue = 0;
29676 let isPseudo = 1;
29677 let isCodeGenOnly = 1;
29678 let DecoderNamespace = "EXT_mmvec";
29679 }
29680 def V6_vadduhsat_dv : HInst<
29681 (outs HvxWR:$Vdd32),
29682 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29683 "$Vdd32.uh = vadd($Vuu32.uh,$Vvv32.uh):sat",
29684 tc_97c165b9, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
29685 let Inst{7-5} = 0b000;
29686 let Inst{13-13} = 0b0;
29687 let Inst{31-21} = 0b00011100100;
29688 let hasNewValue = 1;
29689 let opNewValue = 0;
29690 let DecoderNamespace = "EXT_mmvec";
29691 }
29692 def V6_vadduhsat_dv_alt : HInst<
29693 (outs HvxWR:$Vdd32),
29694 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29695 "$Vdd32 = vadduh($Vuu32,$Vvv32):sat",
29696 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29697 let hasNewValue = 1;
29698 let opNewValue = 0;
29699 let isPseudo = 1;
29700 let isCodeGenOnly = 1;
29701 let DecoderNamespace = "EXT_mmvec";
29702 }
29703 def V6_vadduhw : HInst<
29704 (outs HvxWR:$Vdd32),
29705 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29706 "$Vdd32.w = vadd($Vu32.uh,$Vv32.uh)",
29707 tc_eda67dcd, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
29708 let Inst{7-5} = 0b011;
29709 let Inst{13-13} = 0b0;
29710 let Inst{31-21} = 0b00011100101;
29711 let hasNewValue = 1;
29712 let opNewValue = 0;
29713 let DecoderNamespace = "EXT_mmvec";
29714 }
29715 def V6_vadduhw_acc : HInst<
29716 (outs HvxWR:$Vxx32),
29717 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
29718 "$Vxx32.w += vadd($Vu32.uh,$Vv32.uh)",
29719 tc_e172d86a, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV62]> {
29720 let Inst{7-5} = 0b100;
29721 let Inst{13-13} = 0b1;
29722 let Inst{31-21} = 0b00011100010;
29723 let hasNewValue = 1;
29724 let opNewValue = 0;
29725 let isAccumulator = 1;
29726 let DecoderNamespace = "EXT_mmvec";
29727 let Constraints = "$Vxx32 = $Vxx32in";
29728 }
29729 def V6_vadduhw_acc_alt : HInst<
29730 (outs HvxWR:$Vxx32),
29731 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
29732 "$Vxx32 += vadduh($Vu32,$Vv32)",
29733 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
29734 let hasNewValue = 1;
29735 let opNewValue = 0;
29736 let isAccumulator = 1;
29737 let isPseudo = 1;
29738 let isCodeGenOnly = 1;
29739 let DecoderNamespace = "EXT_mmvec";
29740 let Constraints = "$Vxx32 = $Vxx32in";
29741 }
29742 def V6_vadduhw_alt : HInst<
29743 (outs HvxWR:$Vdd32),
29744 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29745 "$Vdd32 = vadduh($Vu32,$Vv32)",
29746 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29747 let hasNewValue = 1;
29748 let opNewValue = 0;
29749 let isPseudo = 1;
29750 let isCodeGenOnly = 1;
29751 let DecoderNamespace = "EXT_mmvec";
29752 }
29753 def V6_vadduwsat : HInst<
29754 (outs HvxVR:$Vd32),
29755 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29756 "$Vd32.uw = vadd($Vu32.uw,$Vv32.uw):sat",
29757 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
29758 let Inst{7-5} = 0b001;
29759 let Inst{13-13} = 0b0;
29760 let Inst{31-21} = 0b00011111011;
29761 let hasNewValue = 1;
29762 let opNewValue = 0;
29763 let DecoderNamespace = "EXT_mmvec";
29764 }
29765 def V6_vadduwsat_alt : HInst<
29766 (outs HvxVR:$Vd32),
29767 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29768 "$Vd32 = vadduw($Vu32,$Vv32):sat",
29769 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
29770 let hasNewValue = 1;
29771 let opNewValue = 0;
29772 let isPseudo = 1;
29773 let isCodeGenOnly = 1;
29774 let DecoderNamespace = "EXT_mmvec";
29775 }
29776 def V6_vadduwsat_dv : HInst<
29777 (outs HvxWR:$Vdd32),
29778 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29779 "$Vdd32.uw = vadd($Vuu32.uw,$Vvv32.uw):sat",
29780 tc_97c165b9, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV62]> {
29781 let Inst{7-5} = 0b010;
29782 let Inst{13-13} = 0b0;
29783 let Inst{31-21} = 0b00011110101;
29784 let hasNewValue = 1;
29785 let opNewValue = 0;
29786 let DecoderNamespace = "EXT_mmvec";
29787 }
29788 def V6_vadduwsat_dv_alt : HInst<
29789 (outs HvxWR:$Vdd32),
29790 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29791 "$Vdd32 = vadduw($Vuu32,$Vvv32):sat",
29792 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
29793 let hasNewValue = 1;
29794 let opNewValue = 0;
29795 let isPseudo = 1;
29796 let isCodeGenOnly = 1;
29797 let DecoderNamespace = "EXT_mmvec";
29798 }
29799 def V6_vaddw : HInst<
29800 (outs HvxVR:$Vd32),
29801 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29802 "$Vd32.w = vadd($Vu32.w,$Vv32.w)",
29803 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
29804 let Inst{7-5} = 0b000;
29805 let Inst{13-13} = 0b0;
29806 let Inst{31-21} = 0b00011100010;
29807 let hasNewValue = 1;
29808 let opNewValue = 0;
29809 let DecoderNamespace = "EXT_mmvec";
29810 }
29811 def V6_vaddw_alt : HInst<
29812 (outs HvxVR:$Vd32),
29813 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29814 "$Vd32 = vaddw($Vu32,$Vv32)",
29815 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29816 let hasNewValue = 1;
29817 let opNewValue = 0;
29818 let isPseudo = 1;
29819 let isCodeGenOnly = 1;
29820 let DecoderNamespace = "EXT_mmvec";
29821 }
29822 def V6_vaddw_dv : HInst<
29823 (outs HvxWR:$Vdd32),
29824 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29825 "$Vdd32.w = vadd($Vuu32.w,$Vvv32.w)",
29826 tc_97c165b9, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
29827 let Inst{7-5} = 0b110;
29828 let Inst{13-13} = 0b0;
29829 let Inst{31-21} = 0b00011100011;
29830 let hasNewValue = 1;
29831 let opNewValue = 0;
29832 let DecoderNamespace = "EXT_mmvec";
29833 }
29834 def V6_vaddw_dv_alt : HInst<
29835 (outs HvxWR:$Vdd32),
29836 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29837 "$Vdd32 = vaddw($Vuu32,$Vvv32)",
29838 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29839 let hasNewValue = 1;
29840 let opNewValue = 0;
29841 let isPseudo = 1;
29842 let isCodeGenOnly = 1;
29843 let DecoderNamespace = "EXT_mmvec";
29844 }
29845 def V6_vaddwnq : HInst<
29846 (outs HvxVR:$Vx32),
29847 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29848 "if (!$Qv4) $Vx32.w += $Vu32.w",
29849 tc_a3127e12, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
29850 let Inst{7-5} = 0b101;
29851 let Inst{13-13} = 0b1;
29852 let Inst{21-16} = 0b000001;
29853 let Inst{31-24} = 0b00011110;
29854 let hasNewValue = 1;
29855 let opNewValue = 0;
29856 let isAccumulator = 1;
29857 let DecoderNamespace = "EXT_mmvec";
29858 let Constraints = "$Vx32 = $Vx32in";
29859 }
29860 def V6_vaddwnq_alt : HInst<
29861 (outs HvxVR:$Vx32),
29862 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29863 "if (!$Qv4.w) $Vx32.w += $Vu32.w",
29864 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29865 let hasNewValue = 1;
29866 let opNewValue = 0;
29867 let isAccumulator = 1;
29868 let isPseudo = 1;
29869 let isCodeGenOnly = 1;
29870 let DecoderNamespace = "EXT_mmvec";
29871 let Constraints = "$Vx32 = $Vx32in";
29872 }
29873 def V6_vaddwq : HInst<
29874 (outs HvxVR:$Vx32),
29875 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29876 "if ($Qv4) $Vx32.w += $Vu32.w",
29877 tc_a3127e12, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
29878 let Inst{7-5} = 0b010;
29879 let Inst{13-13} = 0b1;
29880 let Inst{21-16} = 0b000001;
29881 let Inst{31-24} = 0b00011110;
29882 let hasNewValue = 1;
29883 let opNewValue = 0;
29884 let isAccumulator = 1;
29885 let DecoderNamespace = "EXT_mmvec";
29886 let Constraints = "$Vx32 = $Vx32in";
29887 }
29888 def V6_vaddwq_alt : HInst<
29889 (outs HvxVR:$Vx32),
29890 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29891 "if ($Qv4.w) $Vx32.w += $Vu32.w",
29892 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29893 let hasNewValue = 1;
29894 let opNewValue = 0;
29895 let isAccumulator = 1;
29896 let isPseudo = 1;
29897 let isCodeGenOnly = 1;
29898 let DecoderNamespace = "EXT_mmvec";
29899 let Constraints = "$Vx32 = $Vx32in";
29900 }
29901 def V6_vaddwsat : HInst<
29902 (outs HvxVR:$Vd32),
29903 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29904 "$Vd32.w = vadd($Vu32.w,$Vv32.w):sat",
29905 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
29906 let Inst{7-5} = 0b100;
29907 let Inst{13-13} = 0b0;
29908 let Inst{31-21} = 0b00011100010;
29909 let hasNewValue = 1;
29910 let opNewValue = 0;
29911 let DecoderNamespace = "EXT_mmvec";
29912 }
29913 def V6_vaddwsat_alt : HInst<
29914 (outs HvxVR:$Vd32),
29915 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29916 "$Vd32 = vaddw($Vu32,$Vv32):sat",
29917 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29918 let hasNewValue = 1;
29919 let opNewValue = 0;
29920 let isPseudo = 1;
29921 let isCodeGenOnly = 1;
29922 let DecoderNamespace = "EXT_mmvec";
29923 }
29924 def V6_vaddwsat_dv : HInst<
29925 (outs HvxWR:$Vdd32),
29926 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29927 "$Vdd32.w = vadd($Vuu32.w,$Vvv32.w):sat",
29928 tc_97c165b9, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
29929 let Inst{7-5} = 0b010;
29930 let Inst{13-13} = 0b0;
29931 let Inst{31-21} = 0b00011100100;
29932 let hasNewValue = 1;
29933 let opNewValue = 0;
29934 let DecoderNamespace = "EXT_mmvec";
29935 }
29936 def V6_vaddwsat_dv_alt : HInst<
29937 (outs HvxWR:$Vdd32),
29938 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29939 "$Vdd32 = vaddw($Vuu32,$Vvv32):sat",
29940 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29941 let hasNewValue = 1;
29942 let opNewValue = 0;
29943 let isPseudo = 1;
29944 let isCodeGenOnly = 1;
29945 let DecoderNamespace = "EXT_mmvec";
29946 }
29947 def V6_valignb : HInst<
29948 (outs HvxVR:$Vd32),
29949 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
29950 "$Vd32 = valign($Vu32,$Vv32,$Rt8)",
29951 tc_c4b515c5, TypeCVI_VP>, Enc_a30110, Requires<[UseHVXV60]> {
29952 let Inst{7-5} = 0b000;
29953 let Inst{13-13} = 0b0;
29954 let Inst{31-24} = 0b00011011;
29955 let hasNewValue = 1;
29956 let opNewValue = 0;
29957 let DecoderNamespace = "EXT_mmvec";
29958 }
29959 def V6_valignbi : HInst<
29960 (outs HvxVR:$Vd32),
29961 (ins HvxVR:$Vu32, HvxVR:$Vv32, u3_0Imm:$Ii),
29962 "$Vd32 = valign($Vu32,$Vv32,#$Ii)",
29963 tc_c4b515c5, TypeCVI_VP>, Enc_0b2e5b, Requires<[UseHVXV60]> {
29964 let Inst{13-13} = 0b1;
29965 let Inst{31-21} = 0b00011110001;
29966 let hasNewValue = 1;
29967 let opNewValue = 0;
29968 let DecoderNamespace = "EXT_mmvec";
29969 }
29970 def V6_vand : HInst<
29971 (outs HvxVR:$Vd32),
29972 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29973 "$Vd32 = vand($Vu32,$Vv32)",
29974 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
29975 let Inst{7-5} = 0b101;
29976 let Inst{13-13} = 0b0;
29977 let Inst{31-21} = 0b00011100001;
29978 let hasNewValue = 1;
29979 let opNewValue = 0;
29980 let DecoderNamespace = "EXT_mmvec";
29981 }
29982 def V6_vandnqrt : HInst<
29983 (outs HvxVR:$Vd32),
29984 (ins HvxQR:$Qu4, IntRegs:$Rt32),
29985 "$Vd32 = vand(!$Qu4,$Rt32)",
29986 tc_e231aa4f, TypeCVI_VX>, Enc_7b7ba8, Requires<[UseHVXV62]> {
29987 let Inst{7-5} = 0b101;
29988 let Inst{13-10} = 0b0001;
29989 let Inst{31-21} = 0b00011001101;
29990 let hasNewValue = 1;
29991 let opNewValue = 0;
29992 let DecoderNamespace = "EXT_mmvec";
29993 }
29994 def V6_vandnqrt_acc : HInst<
29995 (outs HvxVR:$Vx32),
29996 (ins HvxVR:$Vx32in, HvxQR:$Qu4, IntRegs:$Rt32),
29997 "$Vx32 |= vand(!$Qu4,$Rt32)",
29998 tc_9311da3f, TypeCVI_VX>, Enc_895bd9, Requires<[UseHVXV62]> {
29999 let Inst{7-5} = 0b011;
30000 let Inst{13-10} = 0b1001;
30001 let Inst{31-21} = 0b00011001011;
30002 let hasNewValue = 1;
30003 let opNewValue = 0;
30004 let isAccumulator = 1;
30005 let DecoderNamespace = "EXT_mmvec";
30006 let Constraints = "$Vx32 = $Vx32in";
30007 }
30008 def V6_vandnqrt_acc_alt : HInst<
30009 (outs HvxVR:$Vx32),
30010 (ins HvxVR:$Vx32in, HvxQR:$Qu4, IntRegs:$Rt32),
30011 "$Vx32.ub |= vand(!$Qu4.ub,$Rt32.ub)",
30012 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
30013 let hasNewValue = 1;
30014 let opNewValue = 0;
30015 let isAccumulator = 1;
30016 let isPseudo = 1;
30017 let isCodeGenOnly = 1;
30018 let DecoderNamespace = "EXT_mmvec";
30019 let Constraints = "$Vx32 = $Vx32in";
30020 }
30021 def V6_vandnqrt_alt : HInst<
30022 (outs HvxVR:$Vd32),
30023 (ins HvxQR:$Qu4, IntRegs:$Rt32),
30024 "$Vd32.ub = vand(!$Qu4.ub,$Rt32.ub)",
30025 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
30026 let hasNewValue = 1;
30027 let opNewValue = 0;
30028 let isPseudo = 1;
30029 let isCodeGenOnly = 1;
30030 let DecoderNamespace = "EXT_mmvec";
30031 }
30032 def V6_vandqrt : HInst<
30033 (outs HvxVR:$Vd32),
30034 (ins HvxQR:$Qu4, IntRegs:$Rt32),
30035 "$Vd32 = vand($Qu4,$Rt32)",
30036 tc_e231aa4f, TypeCVI_VX_LATE>, Enc_7b7ba8, Requires<[UseHVXV60]> {
30037 let Inst{7-5} = 0b101;
30038 let Inst{13-10} = 0b0000;
30039 let Inst{31-21} = 0b00011001101;
30040 let hasNewValue = 1;
30041 let opNewValue = 0;
30042 let DecoderNamespace = "EXT_mmvec";
30043 }
30044 def V6_vandqrt_acc : HInst<
30045 (outs HvxVR:$Vx32),
30046 (ins HvxVR:$Vx32in, HvxQR:$Qu4, IntRegs:$Rt32),
30047 "$Vx32 |= vand($Qu4,$Rt32)",
30048 tc_9311da3f, TypeCVI_VX_LATE>, Enc_895bd9, Requires<[UseHVXV60]> {
30049 let Inst{7-5} = 0b011;
30050 let Inst{13-10} = 0b1000;
30051 let Inst{31-21} = 0b00011001011;
30052 let hasNewValue = 1;
30053 let opNewValue = 0;
30054 let isAccumulator = 1;
30055 let DecoderNamespace = "EXT_mmvec";
30056 let Constraints = "$Vx32 = $Vx32in";
30057 }
30058 def V6_vandqrt_acc_alt : HInst<
30059 (outs HvxVR:$Vx32),
30060 (ins HvxVR:$Vx32in, HvxQR:$Qu4, IntRegs:$Rt32),
30061 "$Vx32.ub |= vand($Qu4.ub,$Rt32.ub)",
30062 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30063 let hasNewValue = 1;
30064 let opNewValue = 0;
30065 let isAccumulator = 1;
30066 let isPseudo = 1;
30067 let isCodeGenOnly = 1;
30068 let DecoderNamespace = "EXT_mmvec";
30069 let Constraints = "$Vx32 = $Vx32in";
30070 }
30071 def V6_vandqrt_alt : HInst<
30072 (outs HvxVR:$Vd32),
30073 (ins HvxQR:$Qu4, IntRegs:$Rt32),
30074 "$Vd32.ub = vand($Qu4.ub,$Rt32.ub)",
30075 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30076 let hasNewValue = 1;
30077 let opNewValue = 0;
30078 let isPseudo = 1;
30079 let isCodeGenOnly = 1;
30080 let DecoderNamespace = "EXT_mmvec";
30081 }
30082 def V6_vandvnqv : HInst<
30083 (outs HvxVR:$Vd32),
30084 (ins HvxQR:$Qv4, HvxVR:$Vu32),
30085 "$Vd32 = vand(!$Qv4,$Vu32)",
30086 tc_bbaf280e, TypeCVI_VA>, Enc_c4dc92, Requires<[UseHVXV62]> {
30087 let Inst{7-5} = 0b001;
30088 let Inst{13-13} = 0b1;
30089 let Inst{21-16} = 0b000011;
30090 let Inst{31-24} = 0b00011110;
30091 let hasNewValue = 1;
30092 let opNewValue = 0;
30093 let DecoderNamespace = "EXT_mmvec";
30094 }
30095 def V6_vandvqv : HInst<
30096 (outs HvxVR:$Vd32),
30097 (ins HvxQR:$Qv4, HvxVR:$Vu32),
30098 "$Vd32 = vand($Qv4,$Vu32)",
30099 tc_bbaf280e, TypeCVI_VA>, Enc_c4dc92, Requires<[UseHVXV62]> {
30100 let Inst{7-5} = 0b000;
30101 let Inst{13-13} = 0b1;
30102 let Inst{21-16} = 0b000011;
30103 let Inst{31-24} = 0b00011110;
30104 let hasNewValue = 1;
30105 let opNewValue = 0;
30106 let DecoderNamespace = "EXT_mmvec";
30107 }
30108 def V6_vandvrt : HInst<
30109 (outs HvxQR:$Qd4),
30110 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30111 "$Qd4 = vand($Vu32,$Rt32)",
30112 tc_e231aa4f, TypeCVI_VX_LATE>, Enc_0f8bab, Requires<[UseHVXV60]> {
30113 let Inst{7-2} = 0b010010;
30114 let Inst{13-13} = 0b0;
30115 let Inst{31-21} = 0b00011001101;
30116 let hasNewValue = 1;
30117 let opNewValue = 0;
30118 let DecoderNamespace = "EXT_mmvec";
30119 }
30120 def V6_vandvrt_acc : HInst<
30121 (outs HvxQR:$Qx4),
30122 (ins HvxQR:$Qx4in, HvxVR:$Vu32, IntRegs:$Rt32),
30123 "$Qx4 |= vand($Vu32,$Rt32)",
30124 tc_9311da3f, TypeCVI_VX_LATE>, Enc_adf111, Requires<[UseHVXV60]> {
30125 let Inst{7-2} = 0b100000;
30126 let Inst{13-13} = 0b1;
30127 let Inst{31-21} = 0b00011001011;
30128 let isAccumulator = 1;
30129 let DecoderNamespace = "EXT_mmvec";
30130 let Constraints = "$Qx4 = $Qx4in";
30131 }
30132 def V6_vandvrt_acc_alt : HInst<
30133 (outs HvxQR:$Qx4),
30134 (ins HvxQR:$Qx4in, HvxVR:$Vu32, IntRegs:$Rt32),
30135 "$Qx4.ub |= vand($Vu32.ub,$Rt32.ub)",
30136 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30137 let isAccumulator = 1;
30138 let isPseudo = 1;
30139 let isCodeGenOnly = 1;
30140 let DecoderNamespace = "EXT_mmvec";
30141 let Constraints = "$Qx4 = $Qx4in";
30142 }
30143 def V6_vandvrt_alt : HInst<
30144 (outs HvxQR:$Qd4),
30145 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30146 "$Qd4.ub = vand($Vu32.ub,$Rt32.ub)",
30147 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30148 let hasNewValue = 1;
30149 let opNewValue = 0;
30150 let isPseudo = 1;
30151 let isCodeGenOnly = 1;
30152 let DecoderNamespace = "EXT_mmvec";
30153 }
30154 def V6_vaslh : HInst<
30155 (outs HvxVR:$Vd32),
30156 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30157 "$Vd32.h = vasl($Vu32.h,$Rt32)",
30158 tc_41f4b64e, TypeCVI_VS>, Enc_b087ac, Requires<[UseHVXV60]> {
30159 let Inst{7-5} = 0b000;
30160 let Inst{13-13} = 0b0;
30161 let Inst{31-21} = 0b00011001100;
30162 let hasNewValue = 1;
30163 let opNewValue = 0;
30164 let DecoderNamespace = "EXT_mmvec";
30165 }
30166 def V6_vaslh_acc : HInst<
30167 (outs HvxVR:$Vx32),
30168 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
30169 "$Vx32.h += vasl($Vu32.h,$Rt32)",
30170 tc_c00bf9c9, TypeCVI_VS>, Enc_5138b3, Requires<[UseHVXV65]> {
30171 let Inst{7-5} = 0b101;
30172 let Inst{13-13} = 0b1;
30173 let Inst{31-21} = 0b00011001101;
30174 let hasNewValue = 1;
30175 let opNewValue = 0;
30176 let isAccumulator = 1;
30177 let DecoderNamespace = "EXT_mmvec";
30178 let Constraints = "$Vx32 = $Vx32in";
30179 }
30180 def V6_vaslh_acc_alt : HInst<
30181 (outs HvxVR:$Vx32),
30182 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
30183 "$Vx32 += vaslh($Vu32,$Rt32)",
30184 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
30185 let hasNewValue = 1;
30186 let opNewValue = 0;
30187 let isAccumulator = 1;
30188 let isPseudo = 1;
30189 let isCodeGenOnly = 1;
30190 let DecoderNamespace = "EXT_mmvec";
30191 let Constraints = "$Vx32 = $Vx32in";
30192 }
30193 def V6_vaslh_alt : HInst<
30194 (outs HvxVR:$Vd32),
30195 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30196 "$Vd32 = vaslh($Vu32,$Rt32)",
30197 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30198 let hasNewValue = 1;
30199 let opNewValue = 0;
30200 let isPseudo = 1;
30201 let isCodeGenOnly = 1;
30202 let DecoderNamespace = "EXT_mmvec";
30203 }
30204 def V6_vaslhv : HInst<
30205 (outs HvxVR:$Vd32),
30206 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30207 "$Vd32.h = vasl($Vu32.h,$Vv32.h)",
30208 tc_45453b98, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
30209 let Inst{7-5} = 0b101;
30210 let Inst{13-13} = 0b0;
30211 let Inst{31-21} = 0b00011111101;
30212 let hasNewValue = 1;
30213 let opNewValue = 0;
30214 let DecoderNamespace = "EXT_mmvec";
30215 }
30216 def V6_vaslhv_alt : HInst<
30217 (outs HvxVR:$Vd32),
30218 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30219 "$Vd32 = vaslh($Vu32,$Vv32)",
30220 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30221 let hasNewValue = 1;
30222 let opNewValue = 0;
30223 let isPseudo = 1;
30224 let isCodeGenOnly = 1;
30225 let DecoderNamespace = "EXT_mmvec";
30226 }
30227 def V6_vaslw : HInst<
30228 (outs HvxVR:$Vd32),
30229 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30230 "$Vd32.w = vasl($Vu32.w,$Rt32)",
30231 tc_41f4b64e, TypeCVI_VS>, Enc_b087ac, Requires<[UseHVXV60]> {
30232 let Inst{7-5} = 0b111;
30233 let Inst{13-13} = 0b0;
30234 let Inst{31-21} = 0b00011001011;
30235 let hasNewValue = 1;
30236 let opNewValue = 0;
30237 let DecoderNamespace = "EXT_mmvec";
30238 }
30239 def V6_vaslw_acc : HInst<
30240 (outs HvxVR:$Vx32),
30241 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
30242 "$Vx32.w += vasl($Vu32.w,$Rt32)",
30243 tc_c00bf9c9, TypeCVI_VS>, Enc_5138b3, Requires<[UseHVXV60]> {
30244 let Inst{7-5} = 0b010;
30245 let Inst{13-13} = 0b1;
30246 let Inst{31-21} = 0b00011001011;
30247 let hasNewValue = 1;
30248 let opNewValue = 0;
30249 let isAccumulator = 1;
30250 let DecoderNamespace = "EXT_mmvec";
30251 let Constraints = "$Vx32 = $Vx32in";
30252 }
30253 def V6_vaslw_acc_alt : HInst<
30254 (outs HvxVR:$Vx32),
30255 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
30256 "$Vx32 += vaslw($Vu32,$Rt32)",
30257 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30258 let hasNewValue = 1;
30259 let opNewValue = 0;
30260 let isAccumulator = 1;
30261 let isPseudo = 1;
30262 let isCodeGenOnly = 1;
30263 let DecoderNamespace = "EXT_mmvec";
30264 let Constraints = "$Vx32 = $Vx32in";
30265 }
30266 def V6_vaslw_alt : HInst<
30267 (outs HvxVR:$Vd32),
30268 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30269 "$Vd32 = vaslw($Vu32,$Rt32)",
30270 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30271 let hasNewValue = 1;
30272 let opNewValue = 0;
30273 let isPseudo = 1;
30274 let isCodeGenOnly = 1;
30275 let DecoderNamespace = "EXT_mmvec";
30276 }
30277 def V6_vaslwv : HInst<
30278 (outs HvxVR:$Vd32),
30279 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30280 "$Vd32.w = vasl($Vu32.w,$Vv32.w)",
30281 tc_45453b98, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
30282 let Inst{7-5} = 0b100;
30283 let Inst{13-13} = 0b0;
30284 let Inst{31-21} = 0b00011111101;
30285 let hasNewValue = 1;
30286 let opNewValue = 0;
30287 let DecoderNamespace = "EXT_mmvec";
30288 }
30289 def V6_vaslwv_alt : HInst<
30290 (outs HvxVR:$Vd32),
30291 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30292 "$Vd32 = vaslw($Vu32,$Vv32)",
30293 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30294 let hasNewValue = 1;
30295 let opNewValue = 0;
30296 let isPseudo = 1;
30297 let isCodeGenOnly = 1;
30298 let DecoderNamespace = "EXT_mmvec";
30299 }
30300 def V6_vasrh : HInst<
30301 (outs HvxVR:$Vd32),
30302 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30303 "$Vd32.h = vasr($Vu32.h,$Rt32)",
30304 tc_41f4b64e, TypeCVI_VS>, Enc_b087ac, Requires<[UseHVXV60]> {
30305 let Inst{7-5} = 0b110;
30306 let Inst{13-13} = 0b0;
30307 let Inst{31-21} = 0b00011001011;
30308 let hasNewValue = 1;
30309 let opNewValue = 0;
30310 let DecoderNamespace = "EXT_mmvec";
30311 }
30312 def V6_vasrh_acc : HInst<
30313 (outs HvxVR:$Vx32),
30314 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
30315 "$Vx32.h += vasr($Vu32.h,$Rt32)",
30316 tc_c00bf9c9, TypeCVI_VS>, Enc_5138b3, Requires<[UseHVXV65]> {
30317 let Inst{7-5} = 0b111;
30318 let Inst{13-13} = 0b1;
30319 let Inst{31-21} = 0b00011001100;
30320 let hasNewValue = 1;
30321 let opNewValue = 0;
30322 let isAccumulator = 1;
30323 let DecoderNamespace = "EXT_mmvec";
30324 let Constraints = "$Vx32 = $Vx32in";
30325 }
30326 def V6_vasrh_acc_alt : HInst<
30327 (outs HvxVR:$Vx32),
30328 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
30329 "$Vx32 += vasrh($Vu32,$Rt32)",
30330 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
30331 let hasNewValue = 1;
30332 let opNewValue = 0;
30333 let isAccumulator = 1;
30334 let isPseudo = 1;
30335 let isCodeGenOnly = 1;
30336 let DecoderNamespace = "EXT_mmvec";
30337 let Constraints = "$Vx32 = $Vx32in";
30338 }
30339 def V6_vasrh_alt : HInst<
30340 (outs HvxVR:$Vd32),
30341 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30342 "$Vd32 = vasrh($Vu32,$Rt32)",
30343 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30344 let hasNewValue = 1;
30345 let opNewValue = 0;
30346 let isPseudo = 1;
30347 let isCodeGenOnly = 1;
30348 let DecoderNamespace = "EXT_mmvec";
30349 }
30350 def V6_vasrhbrndsat : HInst<
30351 (outs HvxVR:$Vd32),
30352 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30353 "$Vd32.b = vasr($Vu32.h,$Vv32.h,$Rt8):rnd:sat",
30354 tc_7fa8b40f, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV60]> {
30355 let Inst{7-5} = 0b000;
30356 let Inst{13-13} = 0b1;
30357 let Inst{31-24} = 0b00011011;
30358 let hasNewValue = 1;
30359 let opNewValue = 0;
30360 let DecoderNamespace = "EXT_mmvec";
30361 }
30362 def V6_vasrhbrndsat_alt : HInst<
30363 (outs HvxVR:$Vd32),
30364 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30365 "$Vd32 = vasrhb($Vu32,$Vv32,$Rt8):rnd:sat",
30366 tc_7fa8b40f, TypeMAPPING>, Requires<[HasV60]> {
30367 let hasNewValue = 1;
30368 let opNewValue = 0;
30369 let isPseudo = 1;
30370 let isCodeGenOnly = 1;
30371 }
30372 def V6_vasrhbsat : HInst<
30373 (outs HvxVR:$Vd32),
30374 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30375 "$Vd32.b = vasr($Vu32.h,$Vv32.h,$Rt8):sat",
30376 tc_7fa8b40f, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV62]> {
30377 let Inst{7-5} = 0b000;
30378 let Inst{13-13} = 0b0;
30379 let Inst{31-24} = 0b00011000;
30380 let hasNewValue = 1;
30381 let opNewValue = 0;
30382 let DecoderNamespace = "EXT_mmvec";
30383 }
30384 def V6_vasrhubrndsat : HInst<
30385 (outs HvxVR:$Vd32),
30386 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30387 "$Vd32.ub = vasr($Vu32.h,$Vv32.h,$Rt8):rnd:sat",
30388 tc_7fa8b40f, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV60]> {
30389 let Inst{7-5} = 0b111;
30390 let Inst{13-13} = 0b0;
30391 let Inst{31-24} = 0b00011011;
30392 let hasNewValue = 1;
30393 let opNewValue = 0;
30394 let DecoderNamespace = "EXT_mmvec";
30395 }
30396 def V6_vasrhubrndsat_alt : HInst<
30397 (outs HvxVR:$Vd32),
30398 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30399 "$Vd32 = vasrhub($Vu32,$Vv32,$Rt8):rnd:sat",
30400 tc_7fa8b40f, TypeMAPPING>, Requires<[HasV60]> {
30401 let hasNewValue = 1;
30402 let opNewValue = 0;
30403 let isPseudo = 1;
30404 let isCodeGenOnly = 1;
30405 }
30406 def V6_vasrhubsat : HInst<
30407 (outs HvxVR:$Vd32),
30408 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30409 "$Vd32.ub = vasr($Vu32.h,$Vv32.h,$Rt8):sat",
30410 tc_7fa8b40f, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV60]> {
30411 let Inst{7-5} = 0b110;
30412 let Inst{13-13} = 0b0;
30413 let Inst{31-24} = 0b00011011;
30414 let hasNewValue = 1;
30415 let opNewValue = 0;
30416 let DecoderNamespace = "EXT_mmvec";
30417 }
30418 def V6_vasrhubsat_alt : HInst<
30419 (outs HvxVR:$Vd32),
30420 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30421 "$Vd32 = vasrhub($Vu32,$Vv32,$Rt8):sat",
30422 tc_7fa8b40f, TypeMAPPING>, Requires<[HasV60]> {
30423 let hasNewValue = 1;
30424 let opNewValue = 0;
30425 let isPseudo = 1;
30426 let isCodeGenOnly = 1;
30427 }
30428 def V6_vasrhv : HInst<
30429 (outs HvxVR:$Vd32),
30430 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30431 "$Vd32.h = vasr($Vu32.h,$Vv32.h)",
30432 tc_45453b98, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
30433 let Inst{7-5} = 0b011;
30434 let Inst{13-13} = 0b0;
30435 let Inst{31-21} = 0b00011111101;
30436 let hasNewValue = 1;
30437 let opNewValue = 0;
30438 let DecoderNamespace = "EXT_mmvec";
30439 }
30440 def V6_vasrhv_alt : HInst<
30441 (outs HvxVR:$Vd32),
30442 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30443 "$Vd32 = vasrh($Vu32,$Vv32)",
30444 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30445 let hasNewValue = 1;
30446 let opNewValue = 0;
30447 let isPseudo = 1;
30448 let isCodeGenOnly = 1;
30449 let DecoderNamespace = "EXT_mmvec";
30450 }
30451 def V6_vasruhubrndsat : HInst<
30452 (outs HvxVR:$Vd32),
30453 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30454 "$Vd32.ub = vasr($Vu32.uh,$Vv32.uh,$Rt8):rnd:sat",
30455 tc_7fa8b40f, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV65]> {
30456 let Inst{7-5} = 0b111;
30457 let Inst{13-13} = 0b0;
30458 let Inst{31-24} = 0b00011000;
30459 let hasNewValue = 1;
30460 let opNewValue = 0;
30461 let DecoderNamespace = "EXT_mmvec";
30462 }
30463 def V6_vasruhubsat : HInst<
30464 (outs HvxVR:$Vd32),
30465 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30466 "$Vd32.ub = vasr($Vu32.uh,$Vv32.uh,$Rt8):sat",
30467 tc_7fa8b40f, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV65]> {
30468 let Inst{7-5} = 0b101;
30469 let Inst{13-13} = 0b1;
30470 let Inst{31-24} = 0b00011000;
30471 let hasNewValue = 1;
30472 let opNewValue = 0;
30473 let DecoderNamespace = "EXT_mmvec";
30474 }
30475 def V6_vasruwuhrndsat : HInst<
30476 (outs HvxVR:$Vd32),
30477 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30478 "$Vd32.uh = vasr($Vu32.uw,$Vv32.uw,$Rt8):rnd:sat",
30479 tc_7fa8b40f, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV62]> {
30480 let Inst{7-5} = 0b001;
30481 let Inst{13-13} = 0b0;
30482 let Inst{31-24} = 0b00011000;
30483 let hasNewValue = 1;
30484 let opNewValue = 0;
30485 let DecoderNamespace = "EXT_mmvec";
30486 }
30487 def V6_vasruwuhsat : HInst<
30488 (outs HvxVR:$Vd32),
30489 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30490 "$Vd32.uh = vasr($Vu32.uw,$Vv32.uw,$Rt8):sat",
30491 tc_7fa8b40f, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV65]> {
30492 let Inst{7-5} = 0b100;
30493 let Inst{13-13} = 0b1;
30494 let Inst{31-24} = 0b00011000;
30495 let hasNewValue = 1;
30496 let opNewValue = 0;
30497 let DecoderNamespace = "EXT_mmvec";
30498 }
30499 def V6_vasrw : HInst<
30500 (outs HvxVR:$Vd32),
30501 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30502 "$Vd32.w = vasr($Vu32.w,$Rt32)",
30503 tc_41f4b64e, TypeCVI_VS>, Enc_b087ac, Requires<[UseHVXV60]> {
30504 let Inst{7-5} = 0b101;
30505 let Inst{13-13} = 0b0;
30506 let Inst{31-21} = 0b00011001011;
30507 let hasNewValue = 1;
30508 let opNewValue = 0;
30509 let DecoderNamespace = "EXT_mmvec";
30510 }
30511 def V6_vasrw_acc : HInst<
30512 (outs HvxVR:$Vx32),
30513 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
30514 "$Vx32.w += vasr($Vu32.w,$Rt32)",
30515 tc_c00bf9c9, TypeCVI_VS>, Enc_5138b3, Requires<[UseHVXV60]> {
30516 let Inst{7-5} = 0b101;
30517 let Inst{13-13} = 0b1;
30518 let Inst{31-21} = 0b00011001011;
30519 let hasNewValue = 1;
30520 let opNewValue = 0;
30521 let isAccumulator = 1;
30522 let DecoderNamespace = "EXT_mmvec";
30523 let Constraints = "$Vx32 = $Vx32in";
30524 }
30525 def V6_vasrw_acc_alt : HInst<
30526 (outs HvxVR:$Vx32),
30527 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
30528 "$Vx32 += vasrw($Vu32,$Rt32)",
30529 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30530 let hasNewValue = 1;
30531 let opNewValue = 0;
30532 let isAccumulator = 1;
30533 let isPseudo = 1;
30534 let isCodeGenOnly = 1;
30535 let DecoderNamespace = "EXT_mmvec";
30536 let Constraints = "$Vx32 = $Vx32in";
30537 }
30538 def V6_vasrw_alt : HInst<
30539 (outs HvxVR:$Vd32),
30540 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30541 "$Vd32 = vasrw($Vu32,$Rt32)",
30542 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30543 let hasNewValue = 1;
30544 let opNewValue = 0;
30545 let isPseudo = 1;
30546 let isCodeGenOnly = 1;
30547 let DecoderNamespace = "EXT_mmvec";
30548 }
30549 def V6_vasrwh : HInst<
30550 (outs HvxVR:$Vd32),
30551 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30552 "$Vd32.h = vasr($Vu32.w,$Vv32.w,$Rt8)",
30553 tc_7fa8b40f, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV60]> {
30554 let Inst{7-5} = 0b010;
30555 let Inst{13-13} = 0b0;
30556 let Inst{31-24} = 0b00011011;
30557 let hasNewValue = 1;
30558 let opNewValue = 0;
30559 let DecoderNamespace = "EXT_mmvec";
30560 }
30561 def V6_vasrwh_alt : HInst<
30562 (outs HvxVR:$Vd32),
30563 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30564 "$Vd32 = vasrwh($Vu32,$Vv32,$Rt8)",
30565 tc_7fa8b40f, TypeMAPPING>, Requires<[HasV60]> {
30566 let hasNewValue = 1;
30567 let opNewValue = 0;
30568 let isPseudo = 1;
30569 let isCodeGenOnly = 1;
30570 }
30571 def V6_vasrwhrndsat : HInst<
30572 (outs HvxVR:$Vd32),
30573 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30574 "$Vd32.h = vasr($Vu32.w,$Vv32.w,$Rt8):rnd:sat",
30575 tc_7fa8b40f, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV60]> {
30576 let Inst{7-5} = 0b100;
30577 let Inst{13-13} = 0b0;
30578 let Inst{31-24} = 0b00011011;
30579 let hasNewValue = 1;
30580 let opNewValue = 0;
30581 let DecoderNamespace = "EXT_mmvec";
30582 }
30583 def V6_vasrwhrndsat_alt : HInst<
30584 (outs HvxVR:$Vd32),
30585 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30586 "$Vd32 = vasrwh($Vu32,$Vv32,$Rt8):rnd:sat",
30587 tc_7fa8b40f, TypeMAPPING>, Requires<[HasV60]> {
30588 let hasNewValue = 1;
30589 let opNewValue = 0;
30590 let isPseudo = 1;
30591 let isCodeGenOnly = 1;
30592 }
30593 def V6_vasrwhsat : HInst<
30594 (outs HvxVR:$Vd32),
30595 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30596 "$Vd32.h = vasr($Vu32.w,$Vv32.w,$Rt8):sat",
30597 tc_7fa8b40f, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV60]> {
30598 let Inst{7-5} = 0b011;
30599 let Inst{13-13} = 0b0;
30600 let Inst{31-24} = 0b00011011;
30601 let hasNewValue = 1;
30602 let opNewValue = 0;
30603 let DecoderNamespace = "EXT_mmvec";
30604 }
30605 def V6_vasrwhsat_alt : HInst<
30606 (outs HvxVR:$Vd32),
30607 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30608 "$Vd32 = vasrwh($Vu32,$Vv32,$Rt8):sat",
30609 tc_7fa8b40f, TypeMAPPING>, Requires<[HasV60]> {
30610 let hasNewValue = 1;
30611 let opNewValue = 0;
30612 let isPseudo = 1;
30613 let isCodeGenOnly = 1;
30614 }
30615 def V6_vasrwuhrndsat : HInst<
30616 (outs HvxVR:$Vd32),
30617 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30618 "$Vd32.uh = vasr($Vu32.w,$Vv32.w,$Rt8):rnd:sat",
30619 tc_7fa8b40f, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV62]> {
30620 let Inst{7-5} = 0b010;
30621 let Inst{13-13} = 0b0;
30622 let Inst{31-24} = 0b00011000;
30623 let hasNewValue = 1;
30624 let opNewValue = 0;
30625 let DecoderNamespace = "EXT_mmvec";
30626 }
30627 def V6_vasrwuhsat : HInst<
30628 (outs HvxVR:$Vd32),
30629 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30630 "$Vd32.uh = vasr($Vu32.w,$Vv32.w,$Rt8):sat",
30631 tc_7fa8b40f, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV60]> {
30632 let Inst{7-5} = 0b101;
30633 let Inst{13-13} = 0b0;
30634 let Inst{31-24} = 0b00011011;
30635 let hasNewValue = 1;
30636 let opNewValue = 0;
30637 let DecoderNamespace = "EXT_mmvec";
30638 }
30639 def V6_vasrwuhsat_alt : HInst<
30640 (outs HvxVR:$Vd32),
30641 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30642 "$Vd32 = vasrwuh($Vu32,$Vv32,$Rt8):sat",
30643 tc_7fa8b40f, TypeMAPPING>, Requires<[HasV60]> {
30644 let hasNewValue = 1;
30645 let opNewValue = 0;
30646 let isPseudo = 1;
30647 let isCodeGenOnly = 1;
30648 }
30649 def V6_vasrwv : HInst<
30650 (outs HvxVR:$Vd32),
30651 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30652 "$Vd32.w = vasr($Vu32.w,$Vv32.w)",
30653 tc_45453b98, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
30654 let Inst{7-5} = 0b000;
30655 let Inst{13-13} = 0b0;
30656 let Inst{31-21} = 0b00011111101;
30657 let hasNewValue = 1;
30658 let opNewValue = 0;
30659 let DecoderNamespace = "EXT_mmvec";
30660 }
30661 def V6_vasrwv_alt : HInst<
30662 (outs HvxVR:$Vd32),
30663 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30664 "$Vd32 = vasrw($Vu32,$Vv32)",
30665 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30666 let hasNewValue = 1;
30667 let opNewValue = 0;
30668 let isPseudo = 1;
30669 let isCodeGenOnly = 1;
30670 let DecoderNamespace = "EXT_mmvec";
30671 }
30672 def V6_vassign : HInst<
30673 (outs HvxVR:$Vd32),
30674 (ins HvxVR:$Vu32),
30675 "$Vd32 = $Vu32",
30676 tc_71337255, TypeCVI_VA>, Enc_e7581c, Requires<[UseHVXV60]> {
30677 let Inst{7-5} = 0b111;
30678 let Inst{13-13} = 0b1;
30679 let Inst{31-16} = 0b0001111000000011;
30680 let hasNewValue = 1;
30681 let opNewValue = 0;
30682 let DecoderNamespace = "EXT_mmvec";
30683 }
30684 def V6_vassignp : HInst<
30685 (outs HvxWR:$Vdd32),
30686 (ins HvxWR:$Vuu32),
30687 "$Vdd32 = $Vuu32",
30688 CVI_VA, TypeCVI_VA_DV>, Requires<[UseHVXV60]> {
30689 let hasNewValue = 1;
30690 let opNewValue = 0;
30691 let isPseudo = 1;
30692 let DecoderNamespace = "EXT_mmvec";
30693 }
30694 def V6_vavgb : HInst<
30695 (outs HvxVR:$Vd32),
30696 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30697 "$Vd32.b = vavg($Vu32.b,$Vv32.b)",
30698 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV65]> {
30699 let Inst{7-5} = 0b100;
30700 let Inst{13-13} = 0b1;
30701 let Inst{31-21} = 0b00011111000;
30702 let hasNewValue = 1;
30703 let opNewValue = 0;
30704 let DecoderNamespace = "EXT_mmvec";
30705 }
30706 def V6_vavgb_alt : HInst<
30707 (outs HvxVR:$Vd32),
30708 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30709 "$Vd32 = vavgb($Vu32,$Vv32)",
30710 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
30711 let hasNewValue = 1;
30712 let opNewValue = 0;
30713 let isPseudo = 1;
30714 let isCodeGenOnly = 1;
30715 let DecoderNamespace = "EXT_mmvec";
30716 }
30717 def V6_vavgbrnd : HInst<
30718 (outs HvxVR:$Vd32),
30719 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30720 "$Vd32.b = vavg($Vu32.b,$Vv32.b):rnd",
30721 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV65]> {
30722 let Inst{7-5} = 0b101;
30723 let Inst{13-13} = 0b1;
30724 let Inst{31-21} = 0b00011111000;
30725 let hasNewValue = 1;
30726 let opNewValue = 0;
30727 let DecoderNamespace = "EXT_mmvec";
30728 }
30729 def V6_vavgbrnd_alt : HInst<
30730 (outs HvxVR:$Vd32),
30731 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30732 "$Vd32 = vavgb($Vu32,$Vv32):rnd",
30733 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
30734 let hasNewValue = 1;
30735 let opNewValue = 0;
30736 let isPseudo = 1;
30737 let isCodeGenOnly = 1;
30738 let DecoderNamespace = "EXT_mmvec";
30739 }
30740 def V6_vavgh : HInst<
30741 (outs HvxVR:$Vd32),
30742 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30743 "$Vd32.h = vavg($Vu32.h,$Vv32.h)",
30744 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
30745 let Inst{7-5} = 0b110;
30746 let Inst{13-13} = 0b0;
30747 let Inst{31-21} = 0b00011100110;
30748 let hasNewValue = 1;
30749 let opNewValue = 0;
30750 let DecoderNamespace = "EXT_mmvec";
30751 }
30752 def V6_vavgh_alt : HInst<
30753 (outs HvxVR:$Vd32),
30754 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30755 "$Vd32 = vavgh($Vu32,$Vv32)",
30756 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30757 let hasNewValue = 1;
30758 let opNewValue = 0;
30759 let isPseudo = 1;
30760 let isCodeGenOnly = 1;
30761 let DecoderNamespace = "EXT_mmvec";
30762 }
30763 def V6_vavghrnd : HInst<
30764 (outs HvxVR:$Vd32),
30765 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30766 "$Vd32.h = vavg($Vu32.h,$Vv32.h):rnd",
30767 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
30768 let Inst{7-5} = 0b101;
30769 let Inst{13-13} = 0b0;
30770 let Inst{31-21} = 0b00011100111;
30771 let hasNewValue = 1;
30772 let opNewValue = 0;
30773 let DecoderNamespace = "EXT_mmvec";
30774 }
30775 def V6_vavghrnd_alt : HInst<
30776 (outs HvxVR:$Vd32),
30777 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30778 "$Vd32 = vavgh($Vu32,$Vv32):rnd",
30779 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30780 let hasNewValue = 1;
30781 let opNewValue = 0;
30782 let isPseudo = 1;
30783 let isCodeGenOnly = 1;
30784 let DecoderNamespace = "EXT_mmvec";
30785 }
30786 def V6_vavgub : HInst<
30787 (outs HvxVR:$Vd32),
30788 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30789 "$Vd32.ub = vavg($Vu32.ub,$Vv32.ub)",
30790 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
30791 let Inst{7-5} = 0b100;
30792 let Inst{13-13} = 0b0;
30793 let Inst{31-21} = 0b00011100110;
30794 let hasNewValue = 1;
30795 let opNewValue = 0;
30796 let DecoderNamespace = "EXT_mmvec";
30797 }
30798 def V6_vavgub_alt : HInst<
30799 (outs HvxVR:$Vd32),
30800 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30801 "$Vd32 = vavgub($Vu32,$Vv32)",
30802 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30803 let hasNewValue = 1;
30804 let opNewValue = 0;
30805 let isPseudo = 1;
30806 let isCodeGenOnly = 1;
30807 let DecoderNamespace = "EXT_mmvec";
30808 }
30809 def V6_vavgubrnd : HInst<
30810 (outs HvxVR:$Vd32),
30811 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30812 "$Vd32.ub = vavg($Vu32.ub,$Vv32.ub):rnd",
30813 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
30814 let Inst{7-5} = 0b011;
30815 let Inst{13-13} = 0b0;
30816 let Inst{31-21} = 0b00011100111;
30817 let hasNewValue = 1;
30818 let opNewValue = 0;
30819 let DecoderNamespace = "EXT_mmvec";
30820 }
30821 def V6_vavgubrnd_alt : HInst<
30822 (outs HvxVR:$Vd32),
30823 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30824 "$Vd32 = vavgub($Vu32,$Vv32):rnd",
30825 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30826 let hasNewValue = 1;
30827 let opNewValue = 0;
30828 let isPseudo = 1;
30829 let isCodeGenOnly = 1;
30830 let DecoderNamespace = "EXT_mmvec";
30831 }
30832 def V6_vavguh : HInst<
30833 (outs HvxVR:$Vd32),
30834 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30835 "$Vd32.uh = vavg($Vu32.uh,$Vv32.uh)",
30836 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
30837 let Inst{7-5} = 0b101;
30838 let Inst{13-13} = 0b0;
30839 let Inst{31-21} = 0b00011100110;
30840 let hasNewValue = 1;
30841 let opNewValue = 0;
30842 let DecoderNamespace = "EXT_mmvec";
30843 }
30844 def V6_vavguh_alt : HInst<
30845 (outs HvxVR:$Vd32),
30846 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30847 "$Vd32 = vavguh($Vu32,$Vv32)",
30848 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30849 let hasNewValue = 1;
30850 let opNewValue = 0;
30851 let isPseudo = 1;
30852 let isCodeGenOnly = 1;
30853 let DecoderNamespace = "EXT_mmvec";
30854 }
30855 def V6_vavguhrnd : HInst<
30856 (outs HvxVR:$Vd32),
30857 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30858 "$Vd32.uh = vavg($Vu32.uh,$Vv32.uh):rnd",
30859 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
30860 let Inst{7-5} = 0b100;
30861 let Inst{13-13} = 0b0;
30862 let Inst{31-21} = 0b00011100111;
30863 let hasNewValue = 1;
30864 let opNewValue = 0;
30865 let DecoderNamespace = "EXT_mmvec";
30866 }
30867 def V6_vavguhrnd_alt : HInst<
30868 (outs HvxVR:$Vd32),
30869 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30870 "$Vd32 = vavguh($Vu32,$Vv32):rnd",
30871 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30872 let hasNewValue = 1;
30873 let opNewValue = 0;
30874 let isPseudo = 1;
30875 let isCodeGenOnly = 1;
30876 let DecoderNamespace = "EXT_mmvec";
30877 }
30878 def V6_vavguw : HInst<
30879 (outs HvxVR:$Vd32),
30880 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30881 "$Vd32.uw = vavg($Vu32.uw,$Vv32.uw)",
30882 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV65]> {
30883 let Inst{7-5} = 0b010;
30884 let Inst{13-13} = 0b1;
30885 let Inst{31-21} = 0b00011111000;
30886 let hasNewValue = 1;
30887 let opNewValue = 0;
30888 let DecoderNamespace = "EXT_mmvec";
30889 }
30890 def V6_vavguw_alt : HInst<
30891 (outs HvxVR:$Vd32),
30892 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30893 "$Vd32 = vavguw($Vu32,$Vv32)",
30894 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
30895 let hasNewValue = 1;
30896 let opNewValue = 0;
30897 let isPseudo = 1;
30898 let isCodeGenOnly = 1;
30899 let DecoderNamespace = "EXT_mmvec";
30900 }
30901 def V6_vavguwrnd : HInst<
30902 (outs HvxVR:$Vd32),
30903 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30904 "$Vd32.uw = vavg($Vu32.uw,$Vv32.uw):rnd",
30905 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV65]> {
30906 let Inst{7-5} = 0b011;
30907 let Inst{13-13} = 0b1;
30908 let Inst{31-21} = 0b00011111000;
30909 let hasNewValue = 1;
30910 let opNewValue = 0;
30911 let DecoderNamespace = "EXT_mmvec";
30912 }
30913 def V6_vavguwrnd_alt : HInst<
30914 (outs HvxVR:$Vd32),
30915 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30916 "$Vd32 = vavguw($Vu32,$Vv32):rnd",
30917 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
30918 let hasNewValue = 1;
30919 let opNewValue = 0;
30920 let isPseudo = 1;
30921 let isCodeGenOnly = 1;
30922 let DecoderNamespace = "EXT_mmvec";
30923 }
30924 def V6_vavgw : HInst<
30925 (outs HvxVR:$Vd32),
30926 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30927 "$Vd32.w = vavg($Vu32.w,$Vv32.w)",
30928 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
30929 let Inst{7-5} = 0b111;
30930 let Inst{13-13} = 0b0;
30931 let Inst{31-21} = 0b00011100110;
30932 let hasNewValue = 1;
30933 let opNewValue = 0;
30934 let DecoderNamespace = "EXT_mmvec";
30935 }
30936 def V6_vavgw_alt : HInst<
30937 (outs HvxVR:$Vd32),
30938 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30939 "$Vd32 = vavgw($Vu32,$Vv32)",
30940 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30941 let hasNewValue = 1;
30942 let opNewValue = 0;
30943 let isPseudo = 1;
30944 let isCodeGenOnly = 1;
30945 let DecoderNamespace = "EXT_mmvec";
30946 }
30947 def V6_vavgwrnd : HInst<
30948 (outs HvxVR:$Vd32),
30949 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30950 "$Vd32.w = vavg($Vu32.w,$Vv32.w):rnd",
30951 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
30952 let Inst{7-5} = 0b110;
30953 let Inst{13-13} = 0b0;
30954 let Inst{31-21} = 0b00011100111;
30955 let hasNewValue = 1;
30956 let opNewValue = 0;
30957 let DecoderNamespace = "EXT_mmvec";
30958 }
30959 def V6_vavgwrnd_alt : HInst<
30960 (outs HvxVR:$Vd32),
30961 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30962 "$Vd32 = vavgw($Vu32,$Vv32):rnd",
30963 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30964 let hasNewValue = 1;
30965 let opNewValue = 0;
30966 let isPseudo = 1;
30967 let isCodeGenOnly = 1;
30968 let DecoderNamespace = "EXT_mmvec";
30969 }
30970 def V6_vccombine : HInst<
30971 (outs HvxWR:$Vdd32),
30972 (ins PredRegs:$Ps4, HvxVR:$Vu32, HvxVR:$Vv32),
30973 "if ($Ps4) $Vdd32 = vcombine($Vu32,$Vv32)",
30974 tc_2171ebae, TypeCVI_VA_DV>, Enc_8c2412, Requires<[UseHVXV60]> {
30975 let Inst{7-7} = 0b0;
30976 let Inst{13-13} = 0b0;
30977 let Inst{31-21} = 0b00011010011;
30978 let isPredicated = 1;
30979 let hasNewValue = 1;
30980 let opNewValue = 0;
30981 let DecoderNamespace = "EXT_mmvec";
30982 }
30983 def V6_vcl0h : HInst<
30984 (outs HvxVR:$Vd32),
30985 (ins HvxVR:$Vu32),
30986 "$Vd32.uh = vcl0($Vu32.uh)",
30987 tc_d2cb81ea, TypeCVI_VS>, Enc_e7581c, Requires<[UseHVXV60]> {
30988 let Inst{7-5} = 0b111;
30989 let Inst{13-13} = 0b0;
30990 let Inst{31-16} = 0b0001111000000010;
30991 let hasNewValue = 1;
30992 let opNewValue = 0;
30993 let DecoderNamespace = "EXT_mmvec";
30994 }
30995 def V6_vcl0h_alt : HInst<
30996 (outs HvxVR:$Vd32),
30997 (ins HvxVR:$Vu32),
30998 "$Vd32 = vcl0h($Vu32)",
30999 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31000 let hasNewValue = 1;
31001 let opNewValue = 0;
31002 let isPseudo = 1;
31003 let isCodeGenOnly = 1;
31004 let DecoderNamespace = "EXT_mmvec";
31005 }
31006 def V6_vcl0w : HInst<
31007 (outs HvxVR:$Vd32),
31008 (ins HvxVR:$Vu32),
31009 "$Vd32.uw = vcl0($Vu32.uw)",
31010 tc_d2cb81ea, TypeCVI_VS>, Enc_e7581c, Requires<[UseHVXV60]> {
31011 let Inst{7-5} = 0b101;
31012 let Inst{13-13} = 0b0;
31013 let Inst{31-16} = 0b0001111000000010;
31014 let hasNewValue = 1;
31015 let opNewValue = 0;
31016 let DecoderNamespace = "EXT_mmvec";
31017 }
31018 def V6_vcl0w_alt : HInst<
31019 (outs HvxVR:$Vd32),
31020 (ins HvxVR:$Vu32),
31021 "$Vd32 = vcl0w($Vu32)",
31022 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31023 let hasNewValue = 1;
31024 let opNewValue = 0;
31025 let isPseudo = 1;
31026 let isCodeGenOnly = 1;
31027 let DecoderNamespace = "EXT_mmvec";
31028 }
31029 def V6_vcmov : HInst<
31030 (outs HvxVR:$Vd32),
31031 (ins PredRegs:$Ps4, HvxVR:$Vu32),
31032 "if ($Ps4) $Vd32 = $Vu32",
31033 tc_b06ab583, TypeCVI_VA>, Enc_770858, Requires<[UseHVXV60]> {
31034 let Inst{7-7} = 0b0;
31035 let Inst{13-13} = 0b0;
31036 let Inst{31-16} = 0b0001101000000000;
31037 let isPredicated = 1;
31038 let hasNewValue = 1;
31039 let opNewValue = 0;
31040 let DecoderNamespace = "EXT_mmvec";
31041 }
31042 def V6_vcombine : HInst<
31043 (outs HvxWR:$Vdd32),
31044 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31045 "$Vdd32 = vcombine($Vu32,$Vv32)",
31046 tc_97c165b9, TypeCVI_VA_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
31047 let Inst{7-5} = 0b111;
31048 let Inst{13-13} = 0b0;
31049 let Inst{31-21} = 0b00011111010;
31050 let hasNewValue = 1;
31051 let opNewValue = 0;
31052 let isRegSequence = 1;
31053 let DecoderNamespace = "EXT_mmvec";
31054 }
31055 def V6_vd0 : HInst<
31056 (outs HvxVR:$Vd32),
31057 (ins),
31058 "$Vd32 = #0",
31059 CVI_VA, TypeCVI_VA>, Requires<[UseHVXV60]> {
31060 let hasNewValue = 1;
31061 let opNewValue = 0;
31062 let isPseudo = 1;
31063 let isCodeGenOnly = 1;
31064 let DecoderNamespace = "EXT_mmvec";
31065 }
31066 def V6_vdd0 : HInst<
31067 (outs HvxWR:$Vdd32),
31068 (ins),
31069 "$Vdd32 = #0",
31070 tc_8a6eb39a, TypeMAPPING>, Requires<[UseHVXV65]> {
31071 let hasNewValue = 1;
31072 let opNewValue = 0;
31073 let isPseudo = 1;
31074 let isCodeGenOnly = 1;
31075 let DecoderNamespace = "EXT_mmvec";
31076 }
31077 def V6_vdeal : HInst<
31078 (outs HvxVR:$Vy32, HvxVR:$Vx32),
31079 (ins HvxVR:$Vy32in, HvxVR:$Vx32in, IntRegs:$Rt32),
31080 "vdeal($Vy32,$Vx32,$Rt32)",
31081 tc_5c120602, TypeCVI_VP_VS>, Enc_989021, Requires<[UseHVXV60]> {
31082 let Inst{7-5} = 0b010;
31083 let Inst{13-13} = 0b1;
31084 let Inst{31-21} = 0b00011001111;
31085 let hasNewValue = 1;
31086 let opNewValue = 0;
31087 let hasNewValue2 = 1;
31088 let opNewValue2 = 1;
31089 let DecoderNamespace = "EXT_mmvec";
31090 let Constraints = "$Vy32 = $Vy32in, $Vx32 = $Vx32in";
31091 }
31092 def V6_vdealb : HInst<
31093 (outs HvxVR:$Vd32),
31094 (ins HvxVR:$Vu32),
31095 "$Vd32.b = vdeal($Vu32.b)",
31096 tc_e6299d16, TypeCVI_VP>, Enc_e7581c, Requires<[UseHVXV60]> {
31097 let Inst{7-5} = 0b111;
31098 let Inst{13-13} = 0b0;
31099 let Inst{31-16} = 0b0001111000000000;
31100 let hasNewValue = 1;
31101 let opNewValue = 0;
31102 let DecoderNamespace = "EXT_mmvec";
31103 }
31104 def V6_vdealb4w : HInst<
31105 (outs HvxVR:$Vd32),
31106 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31107 "$Vd32.b = vdeale($Vu32.b,$Vv32.b)",
31108 tc_f3fc3f83, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
31109 let Inst{7-5} = 0b111;
31110 let Inst{13-13} = 0b0;
31111 let Inst{31-21} = 0b00011111001;
31112 let hasNewValue = 1;
31113 let opNewValue = 0;
31114 let DecoderNamespace = "EXT_mmvec";
31115 }
31116 def V6_vdealb4w_alt : HInst<
31117 (outs HvxVR:$Vd32),
31118 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31119 "$Vd32 = vdealb4w($Vu32,$Vv32)",
31120 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31121 let hasNewValue = 1;
31122 let opNewValue = 0;
31123 let isPseudo = 1;
31124 let isCodeGenOnly = 1;
31125 let DecoderNamespace = "EXT_mmvec";
31126 }
31127 def V6_vdealb_alt : HInst<
31128 (outs HvxVR:$Vd32),
31129 (ins HvxVR:$Vu32),
31130 "$Vd32 = vdealb($Vu32)",
31131 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31132 let hasNewValue = 1;
31133 let opNewValue = 0;
31134 let isPseudo = 1;
31135 let isCodeGenOnly = 1;
31136 let DecoderNamespace = "EXT_mmvec";
31137 }
31138 def V6_vdealh : HInst<
31139 (outs HvxVR:$Vd32),
31140 (ins HvxVR:$Vu32),
31141 "$Vd32.h = vdeal($Vu32.h)",
31142 tc_e6299d16, TypeCVI_VP>, Enc_e7581c, Requires<[UseHVXV60]> {
31143 let Inst{7-5} = 0b110;
31144 let Inst{13-13} = 0b0;
31145 let Inst{31-16} = 0b0001111000000000;
31146 let hasNewValue = 1;
31147 let opNewValue = 0;
31148 let DecoderNamespace = "EXT_mmvec";
31149 }
31150 def V6_vdealh_alt : HInst<
31151 (outs HvxVR:$Vd32),
31152 (ins HvxVR:$Vu32),
31153 "$Vd32 = vdealh($Vu32)",
31154 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31155 let hasNewValue = 1;
31156 let opNewValue = 0;
31157 let isPseudo = 1;
31158 let isCodeGenOnly = 1;
31159 let DecoderNamespace = "EXT_mmvec";
31160 }
31161 def V6_vdealvdd : HInst<
31162 (outs HvxWR:$Vdd32),
31163 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
31164 "$Vdd32 = vdeal($Vu32,$Vv32,$Rt8)",
31165 tc_4e2a5159, TypeCVI_VP_VS>, Enc_24a7dc, Requires<[UseHVXV60]> {
31166 let Inst{7-5} = 0b100;
31167 let Inst{13-13} = 0b1;
31168 let Inst{31-24} = 0b00011011;
31169 let hasNewValue = 1;
31170 let opNewValue = 0;
31171 let DecoderNamespace = "EXT_mmvec";
31172 }
31173 def V6_vdelta : HInst<
31174 (outs HvxVR:$Vd32),
31175 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31176 "$Vd32 = vdelta($Vu32,$Vv32)",
31177 tc_f3fc3f83, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
31178 let Inst{7-5} = 0b001;
31179 let Inst{13-13} = 0b0;
31180 let Inst{31-21} = 0b00011111001;
31181 let hasNewValue = 1;
31182 let opNewValue = 0;
31183 let DecoderNamespace = "EXT_mmvec";
31184 }
31185 def V6_vdmpybus : HInst<
31186 (outs HvxVR:$Vd32),
31187 (ins HvxVR:$Vu32, IntRegs:$Rt32),
31188 "$Vd32.h = vdmpy($Vu32.ub,$Rt32.b)",
31189 tc_69b6dd20, TypeCVI_VX>, Enc_b087ac, Requires<[UseHVXV60]> {
31190 let Inst{7-5} = 0b110;
31191 let Inst{13-13} = 0b0;
31192 let Inst{31-21} = 0b00011001000;
31193 let hasNewValue = 1;
31194 let opNewValue = 0;
31195 let DecoderNamespace = "EXT_mmvec";
31196 }
31197 def V6_vdmpybus_acc : HInst<
31198 (outs HvxVR:$Vx32),
31199 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
31200 "$Vx32.h += vdmpy($Vu32.ub,$Rt32.b)",
31201 tc_d725e5b0, TypeCVI_VX>, Enc_5138b3, Requires<[UseHVXV60]> {
31202 let Inst{7-5} = 0b110;
31203 let Inst{13-13} = 0b1;
31204 let Inst{31-21} = 0b00011001000;
31205 let hasNewValue = 1;
31206 let opNewValue = 0;
31207 let isAccumulator = 1;
31208 let DecoderNamespace = "EXT_mmvec";
31209 let Constraints = "$Vx32 = $Vx32in";
31210 }
31211 def V6_vdmpybus_acc_alt : HInst<
31212 (outs HvxVR:$Vx32),
31213 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
31214 "$Vx32 += vdmpybus($Vu32,$Rt32)",
31215 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31216 let hasNewValue = 1;
31217 let opNewValue = 0;
31218 let isAccumulator = 1;
31219 let isPseudo = 1;
31220 let isCodeGenOnly = 1;
31221 let DecoderNamespace = "EXT_mmvec";
31222 let Constraints = "$Vx32 = $Vx32in";
31223 }
31224 def V6_vdmpybus_alt : HInst<
31225 (outs HvxVR:$Vd32),
31226 (ins HvxVR:$Vu32, IntRegs:$Rt32),
31227 "$Vd32 = vdmpybus($Vu32,$Rt32)",
31228 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31229 let hasNewValue = 1;
31230 let opNewValue = 0;
31231 let isPseudo = 1;
31232 let isCodeGenOnly = 1;
31233 let DecoderNamespace = "EXT_mmvec";
31234 }
31235 def V6_vdmpybus_dv : HInst<
31236 (outs HvxWR:$Vdd32),
31237 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
31238 "$Vdd32.h = vdmpy($Vuu32.ub,$Rt32.b)",
31239 tc_7c3f55c4, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV60]> {
31240 let Inst{7-5} = 0b111;
31241 let Inst{13-13} = 0b0;
31242 let Inst{31-21} = 0b00011001000;
31243 let hasNewValue = 1;
31244 let opNewValue = 0;
31245 let DecoderNamespace = "EXT_mmvec";
31246 }
31247 def V6_vdmpybus_dv_acc : HInst<
31248 (outs HvxWR:$Vxx32),
31249 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
31250 "$Vxx32.h += vdmpy($Vuu32.ub,$Rt32.b)",
31251 tc_d98f4d63, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV60]> {
31252 let Inst{7-5} = 0b111;
31253 let Inst{13-13} = 0b1;
31254 let Inst{31-21} = 0b00011001000;
31255 let hasNewValue = 1;
31256 let opNewValue = 0;
31257 let isAccumulator = 1;
31258 let DecoderNamespace = "EXT_mmvec";
31259 let Constraints = "$Vxx32 = $Vxx32in";
31260 }
31261 def V6_vdmpybus_dv_acc_alt : HInst<
31262 (outs HvxWR:$Vxx32),
31263 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
31264 "$Vxx32 += vdmpybus($Vuu32,$Rt32)",
31265 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31266 let hasNewValue = 1;
31267 let opNewValue = 0;
31268 let isAccumulator = 1;
31269 let isPseudo = 1;
31270 let isCodeGenOnly = 1;
31271 let DecoderNamespace = "EXT_mmvec";
31272 let Constraints = "$Vxx32 = $Vxx32in";
31273 }
31274 def V6_vdmpybus_dv_alt : HInst<
31275 (outs HvxWR:$Vdd32),
31276 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
31277 "$Vdd32 = vdmpybus($Vuu32,$Rt32)",
31278 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31279 let hasNewValue = 1;
31280 let opNewValue = 0;
31281 let isPseudo = 1;
31282 let isCodeGenOnly = 1;
31283 let DecoderNamespace = "EXT_mmvec";
31284 }
31285 def V6_vdmpyhb : HInst<
31286 (outs HvxVR:$Vd32),
31287 (ins HvxVR:$Vu32, IntRegs:$Rt32),
31288 "$Vd32.w = vdmpy($Vu32.h,$Rt32.b)",
31289 tc_69b6dd20, TypeCVI_VX>, Enc_b087ac, Requires<[UseHVXV60]> {
31290 let Inst{7-5} = 0b010;
31291 let Inst{13-13} = 0b0;
31292 let Inst{31-21} = 0b00011001000;
31293 let hasNewValue = 1;
31294 let opNewValue = 0;
31295 let DecoderNamespace = "EXT_mmvec";
31296 }
31297 def V6_vdmpyhb_acc : HInst<
31298 (outs HvxVR:$Vx32),
31299 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
31300 "$Vx32.w += vdmpy($Vu32.h,$Rt32.b)",
31301 tc_d725e5b0, TypeCVI_VX>, Enc_5138b3, Requires<[UseHVXV60]> {
31302 let Inst{7-5} = 0b011;
31303 let Inst{13-13} = 0b1;
31304 let Inst{31-21} = 0b00011001000;
31305 let hasNewValue = 1;
31306 let opNewValue = 0;
31307 let isAccumulator = 1;
31308 let DecoderNamespace = "EXT_mmvec";
31309 let Constraints = "$Vx32 = $Vx32in";
31310 }
31311 def V6_vdmpyhb_acc_alt : HInst<
31312 (outs HvxVR:$Vx32),
31313 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
31314 "$Vx32 += vdmpyhb($Vu32,$Rt32)",
31315 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31316 let hasNewValue = 1;
31317 let opNewValue = 0;
31318 let isAccumulator = 1;
31319 let isPseudo = 1;
31320 let isCodeGenOnly = 1;
31321 let DecoderNamespace = "EXT_mmvec";
31322 let Constraints = "$Vx32 = $Vx32in";
31323 }
31324 def V6_vdmpyhb_alt : HInst<
31325 (outs HvxVR:$Vd32),
31326 (ins HvxVR:$Vu32, IntRegs:$Rt32),
31327 "$Vd32 = vdmpyhb($Vu32,$Rt32)",
31328 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31329 let hasNewValue = 1;
31330 let opNewValue = 0;
31331 let isPseudo = 1;
31332 let isCodeGenOnly = 1;
31333 let DecoderNamespace = "EXT_mmvec";
31334 }
31335 def V6_vdmpyhb_dv : HInst<
31336 (outs HvxWR:$Vdd32),
31337 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
31338 "$Vdd32.w = vdmpy($Vuu32.h,$Rt32.b)",
31339 tc_7c3f55c4, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV60]> {
31340 let Inst{7-5} = 0b100;
31341 let Inst{13-13} = 0b0;
31342 let Inst{31-21} = 0b00011001001;
31343 let hasNewValue = 1;
31344 let opNewValue = 0;
31345 let DecoderNamespace = "EXT_mmvec";
31346 }
31347 def V6_vdmpyhb_dv_acc : HInst<
31348 (outs HvxWR:$Vxx32),
31349 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
31350 "$Vxx32.w += vdmpy($Vuu32.h,$Rt32.b)",
31351 tc_d98f4d63, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV60]> {
31352 let Inst{7-5} = 0b100;
31353 let Inst{13-13} = 0b1;
31354 let Inst{31-21} = 0b00011001001;
31355 let hasNewValue = 1;
31356 let opNewValue = 0;
31357 let isAccumulator = 1;
31358 let DecoderNamespace = "EXT_mmvec";
31359 let Constraints = "$Vxx32 = $Vxx32in";
31360 }
31361 def V6_vdmpyhb_dv_acc_alt : HInst<
31362 (outs HvxWR:$Vxx32),
31363 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
31364 "$Vxx32 += vdmpyhb($Vuu32,$Rt32)",
31365 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31366 let hasNewValue = 1;
31367 let opNewValue = 0;
31368 let isAccumulator = 1;
31369 let isPseudo = 1;
31370 let isCodeGenOnly = 1;
31371 let DecoderNamespace = "EXT_mmvec";
31372 let Constraints = "$Vxx32 = $Vxx32in";
31373 }
31374 def V6_vdmpyhb_dv_alt : HInst<
31375 (outs HvxWR:$Vdd32),
31376 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
31377 "$Vdd32 = vdmpyhb($Vuu32,$Rt32)",
31378 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31379 let hasNewValue = 1;
31380 let opNewValue = 0;
31381 let isPseudo = 1;
31382 let isCodeGenOnly = 1;
31383 let DecoderNamespace = "EXT_mmvec";
31384 }
31385 def V6_vdmpyhisat : HInst<
31386 (outs HvxVR:$Vd32),
31387 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
31388 "$Vd32.w = vdmpy($Vuu32.h,$Rt32.h):sat",
31389 tc_7c3f55c4, TypeCVI_VX_DV>, Enc_0e41fa, Requires<[UseHVXV60]> {
31390 let Inst{7-5} = 0b011;
31391 let Inst{13-13} = 0b0;
31392 let Inst{31-21} = 0b00011001001;
31393 let hasNewValue = 1;
31394 let opNewValue = 0;
31395 let DecoderNamespace = "EXT_mmvec";
31396 }
31397 def V6_vdmpyhisat_acc : HInst<
31398 (outs HvxVR:$Vx32),
31399 (ins HvxVR:$Vx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
31400 "$Vx32.w += vdmpy($Vuu32.h,$Rt32.h):sat",
31401 tc_d98f4d63, TypeCVI_VX_DV>, Enc_cc857d, Requires<[UseHVXV60]> {
31402 let Inst{7-5} = 0b010;
31403 let Inst{13-13} = 0b1;
31404 let Inst{31-21} = 0b00011001001;
31405 let hasNewValue = 1;
31406 let opNewValue = 0;
31407 let isAccumulator = 1;
31408 let DecoderNamespace = "EXT_mmvec";
31409 let Constraints = "$Vx32 = $Vx32in";
31410 }
31411 def V6_vdmpyhisat_acc_alt : HInst<
31412 (outs HvxVR:$Vx32),
31413 (ins HvxVR:$Vx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
31414 "$Vx32 += vdmpyh($Vuu32,$Rt32):sat",
31415 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31416 let hasNewValue = 1;
31417 let opNewValue = 0;
31418 let isAccumulator = 1;
31419 let isPseudo = 1;
31420 let isCodeGenOnly = 1;
31421 let DecoderNamespace = "EXT_mmvec";
31422 let Constraints = "$Vx32 = $Vx32in";
31423 }
31424 def V6_vdmpyhisat_alt : HInst<
31425 (outs HvxVR:$Vd32),
31426 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
31427 "$Vd32 = vdmpyh($Vuu32,$Rt32):sat",
31428 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31429 let hasNewValue = 1;
31430 let opNewValue = 0;
31431 let isPseudo = 1;
31432 let isCodeGenOnly = 1;
31433 let DecoderNamespace = "EXT_mmvec";
31434 }
31435 def V6_vdmpyhsat : HInst<
31436 (outs HvxVR:$Vd32),
31437 (ins HvxVR:$Vu32, IntRegs:$Rt32),
31438 "$Vd32.w = vdmpy($Vu32.h,$Rt32.h):sat",
31439 tc_7c3f55c4, TypeCVI_VX_DV>, Enc_b087ac, Requires<[UseHVXV60]> {
31440 let Inst{7-5} = 0b010;
31441 let Inst{13-13} = 0b0;
31442 let Inst{31-21} = 0b00011001001;
31443 let hasNewValue = 1;
31444 let opNewValue = 0;
31445 let DecoderNamespace = "EXT_mmvec";
31446 }
31447 def V6_vdmpyhsat_acc : HInst<
31448 (outs HvxVR:$Vx32),
31449 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
31450 "$Vx32.w += vdmpy($Vu32.h,$Rt32.h):sat",
31451 tc_d98f4d63, TypeCVI_VX_DV>, Enc_5138b3, Requires<[UseHVXV60]> {
31452 let Inst{7-5} = 0b011;
31453 let Inst{13-13} = 0b1;
31454 let Inst{31-21} = 0b00011001001;
31455 let hasNewValue = 1;
31456 let opNewValue = 0;
31457 let isAccumulator = 1;
31458 let DecoderNamespace = "EXT_mmvec";
31459 let Constraints = "$Vx32 = $Vx32in";
31460 }
31461 def V6_vdmpyhsat_acc_alt : HInst<
31462 (outs HvxVR:$Vx32),
31463 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
31464 "$Vx32 += vdmpyh($Vu32,$Rt32):sat",
31465 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31466 let hasNewValue = 1;
31467 let opNewValue = 0;
31468 let isAccumulator = 1;
31469 let isPseudo = 1;
31470 let isCodeGenOnly = 1;
31471 let DecoderNamespace = "EXT_mmvec";
31472 let Constraints = "$Vx32 = $Vx32in";
31473 }
31474 def V6_vdmpyhsat_alt : HInst<
31475 (outs HvxVR:$Vd32),
31476 (ins HvxVR:$Vu32, IntRegs:$Rt32),
31477 "$Vd32 = vdmpyh($Vu32,$Rt32):sat",
31478 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31479 let hasNewValue = 1;
31480 let opNewValue = 0;
31481 let isPseudo = 1;
31482 let isCodeGenOnly = 1;
31483 let DecoderNamespace = "EXT_mmvec";
31484 }
31485 def V6_vdmpyhsuisat : HInst<
31486 (outs HvxVR:$Vd32),
31487 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
31488 "$Vd32.w = vdmpy($Vuu32.h,$Rt32.uh,#1):sat",
31489 tc_7c3f55c4, TypeCVI_VX_DV>, Enc_0e41fa, Requires<[UseHVXV60]> {
31490 let Inst{7-5} = 0b001;
31491 let Inst{13-13} = 0b0;
31492 let Inst{31-21} = 0b00011001001;
31493 let hasNewValue = 1;
31494 let opNewValue = 0;
31495 let DecoderNamespace = "EXT_mmvec";
31496 }
31497 def V6_vdmpyhsuisat_acc : HInst<
31498 (outs HvxVR:$Vx32),
31499 (ins HvxVR:$Vx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
31500 "$Vx32.w += vdmpy($Vuu32.h,$Rt32.uh,#1):sat",
31501 tc_d98f4d63, TypeCVI_VX_DV>, Enc_cc857d, Requires<[UseHVXV60]> {
31502 let Inst{7-5} = 0b001;
31503 let Inst{13-13} = 0b1;
31504 let Inst{31-21} = 0b00011001001;
31505 let hasNewValue = 1;
31506 let opNewValue = 0;
31507 let isAccumulator = 1;
31508 let DecoderNamespace = "EXT_mmvec";
31509 let Constraints = "$Vx32 = $Vx32in";
31510 }
31511 def V6_vdmpyhsuisat_acc_alt : HInst<
31512 (outs HvxVR:$Vx32),
31513 (ins HvxVR:$Vx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
31514 "$Vx32 += vdmpyhsu($Vuu32,$Rt32,#1):sat",
31515 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31516 let hasNewValue = 1;
31517 let opNewValue = 0;
31518 let isAccumulator = 1;
31519 let isPseudo = 1;
31520 let isCodeGenOnly = 1;
31521 let DecoderNamespace = "EXT_mmvec";
31522 let Constraints = "$Vx32 = $Vx32in";
31523 }
31524 def V6_vdmpyhsuisat_alt : HInst<
31525 (outs HvxVR:$Vd32),
31526 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
31527 "$Vd32 = vdmpyhsu($Vuu32,$Rt32,#1):sat",
31528 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31529 let hasNewValue = 1;
31530 let opNewValue = 0;
31531 let isPseudo = 1;
31532 let isCodeGenOnly = 1;
31533 let DecoderNamespace = "EXT_mmvec";
31534 }
31535 def V6_vdmpyhsusat : HInst<
31536 (outs HvxVR:$Vd32),
31537 (ins HvxVR:$Vu32, IntRegs:$Rt32),
31538 "$Vd32.w = vdmpy($Vu32.h,$Rt32.uh):sat",
31539 tc_7c3f55c4, TypeCVI_VX_DV>, Enc_b087ac, Requires<[UseHVXV60]> {
31540 let Inst{7-5} = 0b000;
31541 let Inst{13-13} = 0b0;
31542 let Inst{31-21} = 0b00011001001;
31543 let hasNewValue = 1;
31544 let opNewValue = 0;
31545 let DecoderNamespace = "EXT_mmvec";
31546 }
31547 def V6_vdmpyhsusat_acc : HInst<
31548 (outs HvxVR:$Vx32),
31549 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
31550 "$Vx32.w += vdmpy($Vu32.h,$Rt32.uh):sat",
31551 tc_d98f4d63, TypeCVI_VX_DV>, Enc_5138b3, Requires<[UseHVXV60]> {
31552 let Inst{7-5} = 0b000;
31553 let Inst{13-13} = 0b1;
31554 let Inst{31-21} = 0b00011001001;
31555 let hasNewValue = 1;
31556 let opNewValue = 0;
31557 let isAccumulator = 1;
31558 let DecoderNamespace = "EXT_mmvec";
31559 let Constraints = "$Vx32 = $Vx32in";
31560 }
31561 def V6_vdmpyhsusat_acc_alt : HInst<
31562 (outs HvxVR:$Vx32),
31563 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
31564 "$Vx32 += vdmpyhsu($Vu32,$Rt32):sat",
31565 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31566 let hasNewValue = 1;
31567 let opNewValue = 0;
31568 let isAccumulator = 1;
31569 let isPseudo = 1;
31570 let isCodeGenOnly = 1;
31571 let DecoderNamespace = "EXT_mmvec";
31572 let Constraints = "$Vx32 = $Vx32in";
31573 }
31574 def V6_vdmpyhsusat_alt : HInst<
31575 (outs HvxVR:$Vd32),
31576 (ins HvxVR:$Vu32, IntRegs:$Rt32),
31577 "$Vd32 = vdmpyhsu($Vu32,$Rt32):sat",
31578 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31579 let hasNewValue = 1;
31580 let opNewValue = 0;
31581 let isPseudo = 1;
31582 let isCodeGenOnly = 1;
31583 let DecoderNamespace = "EXT_mmvec";
31584 }
31585 def V6_vdmpyhvsat : HInst<
31586 (outs HvxVR:$Vd32),
31587 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31588 "$Vd32.w = vdmpy($Vu32.h,$Vv32.h):sat",
31589 tc_eda67dcd, TypeCVI_VX_DV>, Enc_45364e, Requires<[UseHVXV60]> {
31590 let Inst{7-5} = 0b011;
31591 let Inst{13-13} = 0b0;
31592 let Inst{31-21} = 0b00011100000;
31593 let hasNewValue = 1;
31594 let opNewValue = 0;
31595 let DecoderNamespace = "EXT_mmvec";
31596 }
31597 def V6_vdmpyhvsat_acc : HInst<
31598 (outs HvxVR:$Vx32),
31599 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
31600 "$Vx32.w += vdmpy($Vu32.h,$Vv32.h):sat",
31601 tc_e172d86a, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
31602 let Inst{7-5} = 0b011;
31603 let Inst{13-13} = 0b1;
31604 let Inst{31-21} = 0b00011100000;
31605 let hasNewValue = 1;
31606 let opNewValue = 0;
31607 let isAccumulator = 1;
31608 let DecoderNamespace = "EXT_mmvec";
31609 let Constraints = "$Vx32 = $Vx32in";
31610 }
31611 def V6_vdmpyhvsat_acc_alt : HInst<
31612 (outs HvxVR:$Vx32),
31613 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
31614 "$Vx32 += vdmpyh($Vu32,$Vv32):sat",
31615 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31616 let hasNewValue = 1;
31617 let opNewValue = 0;
31618 let isAccumulator = 1;
31619 let isPseudo = 1;
31620 let isCodeGenOnly = 1;
31621 let DecoderNamespace = "EXT_mmvec";
31622 let Constraints = "$Vx32 = $Vx32in";
31623 }
31624 def V6_vdmpyhvsat_alt : HInst<
31625 (outs HvxVR:$Vd32),
31626 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31627 "$Vd32 = vdmpyh($Vu32,$Vv32):sat",
31628 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31629 let hasNewValue = 1;
31630 let opNewValue = 0;
31631 let isPseudo = 1;
31632 let isCodeGenOnly = 1;
31633 let DecoderNamespace = "EXT_mmvec";
31634 }
31635 def V6_vdsaduh : HInst<
31636 (outs HvxWR:$Vdd32),
31637 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
31638 "$Vdd32.uw = vdsad($Vuu32.uh,$Rt32.uh)",
31639 tc_7c3f55c4, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV60]> {
31640 let Inst{7-5} = 0b101;
31641 let Inst{13-13} = 0b0;
31642 let Inst{31-21} = 0b00011001000;
31643 let hasNewValue = 1;
31644 let opNewValue = 0;
31645 let DecoderNamespace = "EXT_mmvec";
31646 }
31647 def V6_vdsaduh_acc : HInst<
31648 (outs HvxWR:$Vxx32),
31649 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
31650 "$Vxx32.uw += vdsad($Vuu32.uh,$Rt32.uh)",
31651 tc_d98f4d63, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV60]> {
31652 let Inst{7-5} = 0b000;
31653 let Inst{13-13} = 0b1;
31654 let Inst{31-21} = 0b00011001011;
31655 let hasNewValue = 1;
31656 let opNewValue = 0;
31657 let isAccumulator = 1;
31658 let DecoderNamespace = "EXT_mmvec";
31659 let Constraints = "$Vxx32 = $Vxx32in";
31660 }
31661 def V6_vdsaduh_acc_alt : HInst<
31662 (outs HvxWR:$Vxx32),
31663 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
31664 "$Vxx32 += vdsaduh($Vuu32,$Rt32)",
31665 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31666 let hasNewValue = 1;
31667 let opNewValue = 0;
31668 let isAccumulator = 1;
31669 let isPseudo = 1;
31670 let isCodeGenOnly = 1;
31671 let DecoderNamespace = "EXT_mmvec";
31672 let Constraints = "$Vxx32 = $Vxx32in";
31673 }
31674 def V6_vdsaduh_alt : HInst<
31675 (outs HvxWR:$Vdd32),
31676 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
31677 "$Vdd32 = vdsaduh($Vuu32,$Rt32)",
31678 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31679 let hasNewValue = 1;
31680 let opNewValue = 0;
31681 let isPseudo = 1;
31682 let isCodeGenOnly = 1;
31683 let DecoderNamespace = "EXT_mmvec";
31684 }
31685 def V6_veqb : HInst<
31686 (outs HvxQR:$Qd4),
31687 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31688 "$Qd4 = vcmp.eq($Vu32.b,$Vv32.b)",
31689 tc_bbaf280e, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
31690 let Inst{7-2} = 0b000000;
31691 let Inst{13-13} = 0b0;
31692 let Inst{31-21} = 0b00011111100;
31693 let hasNewValue = 1;
31694 let opNewValue = 0;
31695 let DecoderNamespace = "EXT_mmvec";
31696 }
31697 def V6_veqb_and : HInst<
31698 (outs HvxQR:$Qx4),
31699 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
31700 "$Qx4 &= vcmp.eq($Vu32.b,$Vv32.b)",
31701 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
31702 let Inst{7-2} = 0b000000;
31703 let Inst{13-13} = 0b1;
31704 let Inst{31-21} = 0b00011100100;
31705 let DecoderNamespace = "EXT_mmvec";
31706 let Constraints = "$Qx4 = $Qx4in";
31707 }
31708 def V6_veqb_or : HInst<
31709 (outs HvxQR:$Qx4),
31710 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
31711 "$Qx4 |= vcmp.eq($Vu32.b,$Vv32.b)",
31712 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
31713 let Inst{7-2} = 0b010000;
31714 let Inst{13-13} = 0b1;
31715 let Inst{31-21} = 0b00011100100;
31716 let isAccumulator = 1;
31717 let DecoderNamespace = "EXT_mmvec";
31718 let Constraints = "$Qx4 = $Qx4in";
31719 }
31720 def V6_veqb_xor : HInst<
31721 (outs HvxQR:$Qx4),
31722 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
31723 "$Qx4 ^= vcmp.eq($Vu32.b,$Vv32.b)",
31724 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
31725 let Inst{7-2} = 0b100000;
31726 let Inst{13-13} = 0b1;
31727 let Inst{31-21} = 0b00011100100;
31728 let DecoderNamespace = "EXT_mmvec";
31729 let Constraints = "$Qx4 = $Qx4in";
31730 }
31731 def V6_veqh : HInst<
31732 (outs HvxQR:$Qd4),
31733 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31734 "$Qd4 = vcmp.eq($Vu32.h,$Vv32.h)",
31735 tc_bbaf280e, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
31736 let Inst{7-2} = 0b000001;
31737 let Inst{13-13} = 0b0;
31738 let Inst{31-21} = 0b00011111100;
31739 let hasNewValue = 1;
31740 let opNewValue = 0;
31741 let DecoderNamespace = "EXT_mmvec";
31742 }
31743 def V6_veqh_and : HInst<
31744 (outs HvxQR:$Qx4),
31745 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
31746 "$Qx4 &= vcmp.eq($Vu32.h,$Vv32.h)",
31747 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
31748 let Inst{7-2} = 0b000001;
31749 let Inst{13-13} = 0b1;
31750 let Inst{31-21} = 0b00011100100;
31751 let DecoderNamespace = "EXT_mmvec";
31752 let Constraints = "$Qx4 = $Qx4in";
31753 }
31754 def V6_veqh_or : HInst<
31755 (outs HvxQR:$Qx4),
31756 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
31757 "$Qx4 |= vcmp.eq($Vu32.h,$Vv32.h)",
31758 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
31759 let Inst{7-2} = 0b010001;
31760 let Inst{13-13} = 0b1;
31761 let Inst{31-21} = 0b00011100100;
31762 let isAccumulator = 1;
31763 let DecoderNamespace = "EXT_mmvec";
31764 let Constraints = "$Qx4 = $Qx4in";
31765 }
31766 def V6_veqh_xor : HInst<
31767 (outs HvxQR:$Qx4),
31768 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
31769 "$Qx4 ^= vcmp.eq($Vu32.h,$Vv32.h)",
31770 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
31771 let Inst{7-2} = 0b100001;
31772 let Inst{13-13} = 0b1;
31773 let Inst{31-21} = 0b00011100100;
31774 let DecoderNamespace = "EXT_mmvec";
31775 let Constraints = "$Qx4 = $Qx4in";
31776 }
31777 def V6_veqw : HInst<
31778 (outs HvxQR:$Qd4),
31779 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31780 "$Qd4 = vcmp.eq($Vu32.w,$Vv32.w)",
31781 tc_bbaf280e, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
31782 let Inst{7-2} = 0b000010;
31783 let Inst{13-13} = 0b0;
31784 let Inst{31-21} = 0b00011111100;
31785 let hasNewValue = 1;
31786 let opNewValue = 0;
31787 let DecoderNamespace = "EXT_mmvec";
31788 }
31789 def V6_veqw_and : HInst<
31790 (outs HvxQR:$Qx4),
31791 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
31792 "$Qx4 &= vcmp.eq($Vu32.w,$Vv32.w)",
31793 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
31794 let Inst{7-2} = 0b000010;
31795 let Inst{13-13} = 0b1;
31796 let Inst{31-21} = 0b00011100100;
31797 let DecoderNamespace = "EXT_mmvec";
31798 let Constraints = "$Qx4 = $Qx4in";
31799 }
31800 def V6_veqw_or : HInst<
31801 (outs HvxQR:$Qx4),
31802 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
31803 "$Qx4 |= vcmp.eq($Vu32.w,$Vv32.w)",
31804 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
31805 let Inst{7-2} = 0b010010;
31806 let Inst{13-13} = 0b1;
31807 let Inst{31-21} = 0b00011100100;
31808 let isAccumulator = 1;
31809 let DecoderNamespace = "EXT_mmvec";
31810 let Constraints = "$Qx4 = $Qx4in";
31811 }
31812 def V6_veqw_xor : HInst<
31813 (outs HvxQR:$Qx4),
31814 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
31815 "$Qx4 ^= vcmp.eq($Vu32.w,$Vv32.w)",
31816 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
31817 let Inst{7-2} = 0b100010;
31818 let Inst{13-13} = 0b1;
31819 let Inst{31-21} = 0b00011100100;
31820 let DecoderNamespace = "EXT_mmvec";
31821 let Constraints = "$Qx4 = $Qx4in";
31822 }
31823 def V6_vgathermh : HInst<
31824 (outs),
31825 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32),
31826 "vtmp.h = vgather($Rt32,$Mu2,$Vv32.h).h",
31827 tc_66bb62ea, TypeCVI_GATHER>, Enc_8b8927, Requires<[UseHVXV65]> {
31828 let Inst{12-5} = 0b00001000;
31829 let Inst{31-21} = 0b00101111000;
31830 let hasNewValue = 1;
31831 let opNewValue = 0;
31832 let accessSize = HalfWordAccess;
31833 let isCVLoad = 1;
31834 let hasTmpDst = 1;
31835 let mayLoad = 1;
31836 let Defs = [VTMP];
31837 let DecoderNamespace = "EXT_mmvec";
31838 }
31839 def V6_vgathermhq : HInst<
31840 (outs),
31841 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32),
31842 "if ($Qs4) vtmp.h = vgather($Rt32,$Mu2,$Vv32.h).h",
31843 tc_63e3d94c, TypeCVI_GATHER>, Enc_158beb, Requires<[UseHVXV65]> {
31844 let Inst{12-7} = 0b001010;
31845 let Inst{31-21} = 0b00101111000;
31846 let hasNewValue = 1;
31847 let opNewValue = 0;
31848 let accessSize = HalfWordAccess;
31849 let isCVLoad = 1;
31850 let hasTmpDst = 1;
31851 let mayLoad = 1;
31852 let Defs = [VTMP];
31853 let DecoderNamespace = "EXT_mmvec";
31854 }
31855 def V6_vgathermhw : HInst<
31856 (outs),
31857 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxWR:$Vvv32),
31858 "vtmp.h = vgather($Rt32,$Mu2,$Vvv32.w).h",
31859 tc_bfe309d5, TypeCVI_GATHER>, Enc_28dcbb, Requires<[UseHVXV65]> {
31860 let Inst{12-5} = 0b00010000;
31861 let Inst{31-21} = 0b00101111000;
31862 let hasNewValue = 1;
31863 let opNewValue = 0;
31864 let accessSize = HalfWordAccess;
31865 let isCVLoad = 1;
31866 let hasTmpDst = 1;
31867 let mayLoad = 1;
31868 let Defs = [VTMP];
31869 let DecoderNamespace = "EXT_mmvec";
31870 }
31871 def V6_vgathermhwq : HInst<
31872 (outs),
31873 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxWR:$Vvv32),
31874 "if ($Qs4) vtmp.h = vgather($Rt32,$Mu2,$Vvv32.w).h",
31875 tc_98733e9d, TypeCVI_GATHER>, Enc_4e4a80, Requires<[UseHVXV65]> {
31876 let Inst{12-7} = 0b001100;
31877 let Inst{31-21} = 0b00101111000;
31878 let hasNewValue = 1;
31879 let opNewValue = 0;
31880 let accessSize = HalfWordAccess;
31881 let isCVLoad = 1;
31882 let hasTmpDst = 1;
31883 let mayLoad = 1;
31884 let Defs = [VTMP];
31885 let DecoderNamespace = "EXT_mmvec";
31886 }
31887 def V6_vgathermw : HInst<
31888 (outs),
31889 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32),
31890 "vtmp.w = vgather($Rt32,$Mu2,$Vv32.w).w",
31891 tc_66bb62ea, TypeCVI_GATHER>, Enc_8b8927, Requires<[UseHVXV65]> {
31892 let Inst{12-5} = 0b00000000;
31893 let Inst{31-21} = 0b00101111000;
31894 let hasNewValue = 1;
31895 let opNewValue = 0;
31896 let accessSize = WordAccess;
31897 let isCVLoad = 1;
31898 let hasTmpDst = 1;
31899 let mayLoad = 1;
31900 let Defs = [VTMP];
31901 let DecoderNamespace = "EXT_mmvec";
31902 }
31903 def V6_vgathermwq : HInst<
31904 (outs),
31905 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32),
31906 "if ($Qs4) vtmp.w = vgather($Rt32,$Mu2,$Vv32.w).w",
31907 tc_63e3d94c, TypeCVI_GATHER>, Enc_158beb, Requires<[UseHVXV65]> {
31908 let Inst{12-7} = 0b001000;
31909 let Inst{31-21} = 0b00101111000;
31910 let hasNewValue = 1;
31911 let opNewValue = 0;
31912 let accessSize = WordAccess;
31913 let isCVLoad = 1;
31914 let hasTmpDst = 1;
31915 let mayLoad = 1;
31916 let Defs = [VTMP];
31917 let DecoderNamespace = "EXT_mmvec";
31918 }
31919 def V6_vgtb : HInst<
31920 (outs HvxQR:$Qd4),
31921 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31922 "$Qd4 = vcmp.gt($Vu32.b,$Vv32.b)",
31923 tc_bbaf280e, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
31924 let Inst{7-2} = 0b000100;
31925 let Inst{13-13} = 0b0;
31926 let Inst{31-21} = 0b00011111100;
31927 let hasNewValue = 1;
31928 let opNewValue = 0;
31929 let DecoderNamespace = "EXT_mmvec";
31930 }
31931 def V6_vgtb_and : HInst<
31932 (outs HvxQR:$Qx4),
31933 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
31934 "$Qx4 &= vcmp.gt($Vu32.b,$Vv32.b)",
31935 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
31936 let Inst{7-2} = 0b000100;
31937 let Inst{13-13} = 0b1;
31938 let Inst{31-21} = 0b00011100100;
31939 let DecoderNamespace = "EXT_mmvec";
31940 let Constraints = "$Qx4 = $Qx4in";
31941 }
31942 def V6_vgtb_or : HInst<
31943 (outs HvxQR:$Qx4),
31944 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
31945 "$Qx4 |= vcmp.gt($Vu32.b,$Vv32.b)",
31946 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
31947 let Inst{7-2} = 0b010100;
31948 let Inst{13-13} = 0b1;
31949 let Inst{31-21} = 0b00011100100;
31950 let isAccumulator = 1;
31951 let DecoderNamespace = "EXT_mmvec";
31952 let Constraints = "$Qx4 = $Qx4in";
31953 }
31954 def V6_vgtb_xor : HInst<
31955 (outs HvxQR:$Qx4),
31956 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
31957 "$Qx4 ^= vcmp.gt($Vu32.b,$Vv32.b)",
31958 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
31959 let Inst{7-2} = 0b100100;
31960 let Inst{13-13} = 0b1;
31961 let Inst{31-21} = 0b00011100100;
31962 let DecoderNamespace = "EXT_mmvec";
31963 let Constraints = "$Qx4 = $Qx4in";
31964 }
31965 def V6_vgth : HInst<
31966 (outs HvxQR:$Qd4),
31967 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31968 "$Qd4 = vcmp.gt($Vu32.h,$Vv32.h)",
31969 tc_bbaf280e, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
31970 let Inst{7-2} = 0b000101;
31971 let Inst{13-13} = 0b0;
31972 let Inst{31-21} = 0b00011111100;
31973 let hasNewValue = 1;
31974 let opNewValue = 0;
31975 let DecoderNamespace = "EXT_mmvec";
31976 }
31977 def V6_vgth_and : HInst<
31978 (outs HvxQR:$Qx4),
31979 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
31980 "$Qx4 &= vcmp.gt($Vu32.h,$Vv32.h)",
31981 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
31982 let Inst{7-2} = 0b000101;
31983 let Inst{13-13} = 0b1;
31984 let Inst{31-21} = 0b00011100100;
31985 let DecoderNamespace = "EXT_mmvec";
31986 let Constraints = "$Qx4 = $Qx4in";
31987 }
31988 def V6_vgth_or : HInst<
31989 (outs HvxQR:$Qx4),
31990 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
31991 "$Qx4 |= vcmp.gt($Vu32.h,$Vv32.h)",
31992 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
31993 let Inst{7-2} = 0b010101;
31994 let Inst{13-13} = 0b1;
31995 let Inst{31-21} = 0b00011100100;
31996 let isAccumulator = 1;
31997 let DecoderNamespace = "EXT_mmvec";
31998 let Constraints = "$Qx4 = $Qx4in";
31999 }
32000 def V6_vgth_xor : HInst<
32001 (outs HvxQR:$Qx4),
32002 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32003 "$Qx4 ^= vcmp.gt($Vu32.h,$Vv32.h)",
32004 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32005 let Inst{7-2} = 0b100101;
32006 let Inst{13-13} = 0b1;
32007 let Inst{31-21} = 0b00011100100;
32008 let DecoderNamespace = "EXT_mmvec";
32009 let Constraints = "$Qx4 = $Qx4in";
32010 }
32011 def V6_vgtub : HInst<
32012 (outs HvxQR:$Qd4),
32013 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32014 "$Qd4 = vcmp.gt($Vu32.ub,$Vv32.ub)",
32015 tc_bbaf280e, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
32016 let Inst{7-2} = 0b001000;
32017 let Inst{13-13} = 0b0;
32018 let Inst{31-21} = 0b00011111100;
32019 let hasNewValue = 1;
32020 let opNewValue = 0;
32021 let DecoderNamespace = "EXT_mmvec";
32022 }
32023 def V6_vgtub_and : HInst<
32024 (outs HvxQR:$Qx4),
32025 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32026 "$Qx4 &= vcmp.gt($Vu32.ub,$Vv32.ub)",
32027 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32028 let Inst{7-2} = 0b001000;
32029 let Inst{13-13} = 0b1;
32030 let Inst{31-21} = 0b00011100100;
32031 let DecoderNamespace = "EXT_mmvec";
32032 let Constraints = "$Qx4 = $Qx4in";
32033 }
32034 def V6_vgtub_or : HInst<
32035 (outs HvxQR:$Qx4),
32036 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32037 "$Qx4 |= vcmp.gt($Vu32.ub,$Vv32.ub)",
32038 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32039 let Inst{7-2} = 0b011000;
32040 let Inst{13-13} = 0b1;
32041 let Inst{31-21} = 0b00011100100;
32042 let isAccumulator = 1;
32043 let DecoderNamespace = "EXT_mmvec";
32044 let Constraints = "$Qx4 = $Qx4in";
32045 }
32046 def V6_vgtub_xor : HInst<
32047 (outs HvxQR:$Qx4),
32048 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32049 "$Qx4 ^= vcmp.gt($Vu32.ub,$Vv32.ub)",
32050 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32051 let Inst{7-2} = 0b101000;
32052 let Inst{13-13} = 0b1;
32053 let Inst{31-21} = 0b00011100100;
32054 let DecoderNamespace = "EXT_mmvec";
32055 let Constraints = "$Qx4 = $Qx4in";
32056 }
32057 def V6_vgtuh : HInst<
32058 (outs HvxQR:$Qd4),
32059 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32060 "$Qd4 = vcmp.gt($Vu32.uh,$Vv32.uh)",
32061 tc_bbaf280e, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
32062 let Inst{7-2} = 0b001001;
32063 let Inst{13-13} = 0b0;
32064 let Inst{31-21} = 0b00011111100;
32065 let hasNewValue = 1;
32066 let opNewValue = 0;
32067 let DecoderNamespace = "EXT_mmvec";
32068 }
32069 def V6_vgtuh_and : HInst<
32070 (outs HvxQR:$Qx4),
32071 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32072 "$Qx4 &= vcmp.gt($Vu32.uh,$Vv32.uh)",
32073 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32074 let Inst{7-2} = 0b001001;
32075 let Inst{13-13} = 0b1;
32076 let Inst{31-21} = 0b00011100100;
32077 let DecoderNamespace = "EXT_mmvec";
32078 let Constraints = "$Qx4 = $Qx4in";
32079 }
32080 def V6_vgtuh_or : HInst<
32081 (outs HvxQR:$Qx4),
32082 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32083 "$Qx4 |= vcmp.gt($Vu32.uh,$Vv32.uh)",
32084 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32085 let Inst{7-2} = 0b011001;
32086 let Inst{13-13} = 0b1;
32087 let Inst{31-21} = 0b00011100100;
32088 let isAccumulator = 1;
32089 let DecoderNamespace = "EXT_mmvec";
32090 let Constraints = "$Qx4 = $Qx4in";
32091 }
32092 def V6_vgtuh_xor : HInst<
32093 (outs HvxQR:$Qx4),
32094 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32095 "$Qx4 ^= vcmp.gt($Vu32.uh,$Vv32.uh)",
32096 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32097 let Inst{7-2} = 0b101001;
32098 let Inst{13-13} = 0b1;
32099 let Inst{31-21} = 0b00011100100;
32100 let DecoderNamespace = "EXT_mmvec";
32101 let Constraints = "$Qx4 = $Qx4in";
32102 }
32103 def V6_vgtuw : HInst<
32104 (outs HvxQR:$Qd4),
32105 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32106 "$Qd4 = vcmp.gt($Vu32.uw,$Vv32.uw)",
32107 tc_bbaf280e, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
32108 let Inst{7-2} = 0b001010;
32109 let Inst{13-13} = 0b0;
32110 let Inst{31-21} = 0b00011111100;
32111 let hasNewValue = 1;
32112 let opNewValue = 0;
32113 let DecoderNamespace = "EXT_mmvec";
32114 }
32115 def V6_vgtuw_and : HInst<
32116 (outs HvxQR:$Qx4),
32117 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32118 "$Qx4 &= vcmp.gt($Vu32.uw,$Vv32.uw)",
32119 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32120 let Inst{7-2} = 0b001010;
32121 let Inst{13-13} = 0b1;
32122 let Inst{31-21} = 0b00011100100;
32123 let DecoderNamespace = "EXT_mmvec";
32124 let Constraints = "$Qx4 = $Qx4in";
32125 }
32126 def V6_vgtuw_or : HInst<
32127 (outs HvxQR:$Qx4),
32128 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32129 "$Qx4 |= vcmp.gt($Vu32.uw,$Vv32.uw)",
32130 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32131 let Inst{7-2} = 0b011010;
32132 let Inst{13-13} = 0b1;
32133 let Inst{31-21} = 0b00011100100;
32134 let isAccumulator = 1;
32135 let DecoderNamespace = "EXT_mmvec";
32136 let Constraints = "$Qx4 = $Qx4in";
32137 }
32138 def V6_vgtuw_xor : HInst<
32139 (outs HvxQR:$Qx4),
32140 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32141 "$Qx4 ^= vcmp.gt($Vu32.uw,$Vv32.uw)",
32142 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32143 let Inst{7-2} = 0b101010;
32144 let Inst{13-13} = 0b1;
32145 let Inst{31-21} = 0b00011100100;
32146 let DecoderNamespace = "EXT_mmvec";
32147 let Constraints = "$Qx4 = $Qx4in";
32148 }
32149 def V6_vgtw : HInst<
32150 (outs HvxQR:$Qd4),
32151 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32152 "$Qd4 = vcmp.gt($Vu32.w,$Vv32.w)",
32153 tc_bbaf280e, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
32154 let Inst{7-2} = 0b000110;
32155 let Inst{13-13} = 0b0;
32156 let Inst{31-21} = 0b00011111100;
32157 let hasNewValue = 1;
32158 let opNewValue = 0;
32159 let DecoderNamespace = "EXT_mmvec";
32160 }
32161 def V6_vgtw_and : HInst<
32162 (outs HvxQR:$Qx4),
32163 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32164 "$Qx4 &= vcmp.gt($Vu32.w,$Vv32.w)",
32165 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32166 let Inst{7-2} = 0b000110;
32167 let Inst{13-13} = 0b1;
32168 let Inst{31-21} = 0b00011100100;
32169 let DecoderNamespace = "EXT_mmvec";
32170 let Constraints = "$Qx4 = $Qx4in";
32171 }
32172 def V6_vgtw_or : HInst<
32173 (outs HvxQR:$Qx4),
32174 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32175 "$Qx4 |= vcmp.gt($Vu32.w,$Vv32.w)",
32176 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32177 let Inst{7-2} = 0b010110;
32178 let Inst{13-13} = 0b1;
32179 let Inst{31-21} = 0b00011100100;
32180 let isAccumulator = 1;
32181 let DecoderNamespace = "EXT_mmvec";
32182 let Constraints = "$Qx4 = $Qx4in";
32183 }
32184 def V6_vgtw_xor : HInst<
32185 (outs HvxQR:$Qx4),
32186 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32187 "$Qx4 ^= vcmp.gt($Vu32.w,$Vv32.w)",
32188 tc_a3127e12, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32189 let Inst{7-2} = 0b100110;
32190 let Inst{13-13} = 0b1;
32191 let Inst{31-21} = 0b00011100100;
32192 let DecoderNamespace = "EXT_mmvec";
32193 let Constraints = "$Qx4 = $Qx4in";
32194 }
32195 def V6_vhist : HInst<
32196 (outs),
32197 (ins),
32198 "vhist",
32199 tc_e5053c8f, TypeCVI_HIST>, Enc_e3b0c4, Requires<[UseHVXV60]> {
32200 let Inst{13-0} = 0b10000010000000;
32201 let Inst{31-16} = 0b0001111000000000;
32202 let DecoderNamespace = "EXT_mmvec";
32203 }
32204 def V6_vhistq : HInst<
32205 (outs),
32206 (ins HvxQR:$Qv4),
32207 "vhist($Qv4)",
32208 tc_cedf314b, TypeCVI_HIST>, Enc_217147, Requires<[UseHVXV60]> {
32209 let Inst{13-0} = 0b10000010000000;
32210 let Inst{21-16} = 0b000010;
32211 let Inst{31-24} = 0b00011110;
32212 let DecoderNamespace = "EXT_mmvec";
32213 }
32214 def V6_vinsertwr : HInst<
32215 (outs HvxVR:$Vx32),
32216 (ins HvxVR:$Vx32in, IntRegs:$Rt32),
32217 "$Vx32.w = vinsert($Rt32)",
32218 tc_e231aa4f, TypeCVI_VX_LATE>, Enc_569cfe, Requires<[UseHVXV60]> {
32219 let Inst{13-5} = 0b100000001;
32220 let Inst{31-21} = 0b00011001101;
32221 let hasNewValue = 1;
32222 let opNewValue = 0;
32223 let DecoderNamespace = "EXT_mmvec";
32224 let Constraints = "$Vx32 = $Vx32in";
32225 }
32226 def V6_vlalignb : HInst<
32227 (outs HvxVR:$Vd32),
32228 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
32229 "$Vd32 = vlalign($Vu32,$Vv32,$Rt8)",
32230 tc_c4b515c5, TypeCVI_VP>, Enc_a30110, Requires<[UseHVXV60]> {
32231 let Inst{7-5} = 0b001;
32232 let Inst{13-13} = 0b0;
32233 let Inst{31-24} = 0b00011011;
32234 let hasNewValue = 1;
32235 let opNewValue = 0;
32236 let DecoderNamespace = "EXT_mmvec";
32237 }
32238 def V6_vlalignbi : HInst<
32239 (outs HvxVR:$Vd32),
32240 (ins HvxVR:$Vu32, HvxVR:$Vv32, u3_0Imm:$Ii),
32241 "$Vd32 = vlalign($Vu32,$Vv32,#$Ii)",
32242 tc_c4b515c5, TypeCVI_VP>, Enc_0b2e5b, Requires<[UseHVXV60]> {
32243 let Inst{13-13} = 0b1;
32244 let Inst{31-21} = 0b00011110011;
32245 let hasNewValue = 1;
32246 let opNewValue = 0;
32247 let DecoderNamespace = "EXT_mmvec";
32248 }
32249 def V6_vlsrb : HInst<
32250 (outs HvxVR:$Vd32),
32251 (ins HvxVR:$Vu32, IntRegs:$Rt32),
32252 "$Vd32.ub = vlsr($Vu32.ub,$Rt32)",
32253 tc_41f4b64e, TypeCVI_VS>, Enc_b087ac, Requires<[UseHVXV62]> {
32254 let Inst{7-5} = 0b011;
32255 let Inst{13-13} = 0b0;
32256 let Inst{31-21} = 0b00011001100;
32257 let hasNewValue = 1;
32258 let opNewValue = 0;
32259 let DecoderNamespace = "EXT_mmvec";
32260 }
32261 def V6_vlsrh : HInst<
32262 (outs HvxVR:$Vd32),
32263 (ins HvxVR:$Vu32, IntRegs:$Rt32),
32264 "$Vd32.uh = vlsr($Vu32.uh,$Rt32)",
32265 tc_41f4b64e, TypeCVI_VS>, Enc_b087ac, Requires<[UseHVXV60]> {
32266 let Inst{7-5} = 0b010;
32267 let Inst{13-13} = 0b0;
32268 let Inst{31-21} = 0b00011001100;
32269 let hasNewValue = 1;
32270 let opNewValue = 0;
32271 let DecoderNamespace = "EXT_mmvec";
32272 }
32273 def V6_vlsrh_alt : HInst<
32274 (outs HvxVR:$Vd32),
32275 (ins HvxVR:$Vu32, IntRegs:$Rt32),
32276 "$Vd32 = vlsrh($Vu32,$Rt32)",
32277 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32278 let hasNewValue = 1;
32279 let opNewValue = 0;
32280 let isPseudo = 1;
32281 let isCodeGenOnly = 1;
32282 let DecoderNamespace = "EXT_mmvec";
32283 }
32284 def V6_vlsrhv : HInst<
32285 (outs HvxVR:$Vd32),
32286 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32287 "$Vd32.h = vlsr($Vu32.h,$Vv32.h)",
32288 tc_45453b98, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
32289 let Inst{7-5} = 0b010;
32290 let Inst{13-13} = 0b0;
32291 let Inst{31-21} = 0b00011111101;
32292 let hasNewValue = 1;
32293 let opNewValue = 0;
32294 let DecoderNamespace = "EXT_mmvec";
32295 }
32296 def V6_vlsrhv_alt : HInst<
32297 (outs HvxVR:$Vd32),
32298 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32299 "$Vd32 = vlsrh($Vu32,$Vv32)",
32300 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32301 let hasNewValue = 1;
32302 let opNewValue = 0;
32303 let isPseudo = 1;
32304 let isCodeGenOnly = 1;
32305 let DecoderNamespace = "EXT_mmvec";
32306 }
32307 def V6_vlsrw : HInst<
32308 (outs HvxVR:$Vd32),
32309 (ins HvxVR:$Vu32, IntRegs:$Rt32),
32310 "$Vd32.uw = vlsr($Vu32.uw,$Rt32)",
32311 tc_41f4b64e, TypeCVI_VS>, Enc_b087ac, Requires<[UseHVXV60]> {
32312 let Inst{7-5} = 0b001;
32313 let Inst{13-13} = 0b0;
32314 let Inst{31-21} = 0b00011001100;
32315 let hasNewValue = 1;
32316 let opNewValue = 0;
32317 let DecoderNamespace = "EXT_mmvec";
32318 }
32319 def V6_vlsrw_alt : HInst<
32320 (outs HvxVR:$Vd32),
32321 (ins HvxVR:$Vu32, IntRegs:$Rt32),
32322 "$Vd32 = vlsrw($Vu32,$Rt32)",
32323 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32324 let hasNewValue = 1;
32325 let opNewValue = 0;
32326 let isPseudo = 1;
32327 let isCodeGenOnly = 1;
32328 let DecoderNamespace = "EXT_mmvec";
32329 }
32330 def V6_vlsrwv : HInst<
32331 (outs HvxVR:$Vd32),
32332 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32333 "$Vd32.w = vlsr($Vu32.w,$Vv32.w)",
32334 tc_45453b98, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
32335 let Inst{7-5} = 0b001;
32336 let Inst{13-13} = 0b0;
32337 let Inst{31-21} = 0b00011111101;
32338 let hasNewValue = 1;
32339 let opNewValue = 0;
32340 let DecoderNamespace = "EXT_mmvec";
32341 }
32342 def V6_vlsrwv_alt : HInst<
32343 (outs HvxVR:$Vd32),
32344 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32345 "$Vd32 = vlsrw($Vu32,$Vv32)",
32346 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32347 let hasNewValue = 1;
32348 let opNewValue = 0;
32349 let isPseudo = 1;
32350 let isCodeGenOnly = 1;
32351 let DecoderNamespace = "EXT_mmvec";
32352 }
32353 def V6_vlut4 : HInst<
32354 (outs HvxVR:$Vd32),
32355 (ins HvxVR:$Vu32, DoubleRegs:$Rtt32),
32356 "$Vd32.h = vlut4($Vu32.uh,$Rtt32.h)",
32357 tc_fa99dc24, TypeCVI_VX_DV>, Enc_263841, Requires<[UseHVXV65]> {
32358 let Inst{7-5} = 0b100;
32359 let Inst{13-13} = 0b0;
32360 let Inst{31-21} = 0b00011001011;
32361 let hasNewValue = 1;
32362 let opNewValue = 0;
32363 let DecoderNamespace = "EXT_mmvec";
32364 }
32365 def V6_vlutvvb : HInst<
32366 (outs HvxVR:$Vd32),
32367 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
32368 "$Vd32.b = vlut32($Vu32.b,$Vv32.b,$Rt8)",
32369 tc_c4b515c5, TypeCVI_VP>, Enc_a30110, Requires<[UseHVXV60]> {
32370 let Inst{7-5} = 0b001;
32371 let Inst{13-13} = 0b1;
32372 let Inst{31-24} = 0b00011011;
32373 let hasNewValue = 1;
32374 let opNewValue = 0;
32375 let DecoderNamespace = "EXT_mmvec";
32376 }
32377 def V6_vlutvvb_nm : HInst<
32378 (outs HvxVR:$Vd32),
32379 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
32380 "$Vd32.b = vlut32($Vu32.b,$Vv32.b,$Rt8):nomatch",
32381 tc_c4b515c5, TypeCVI_VP>, Enc_a30110, Requires<[UseHVXV62]> {
32382 let Inst{7-5} = 0b011;
32383 let Inst{13-13} = 0b0;
32384 let Inst{31-24} = 0b00011000;
32385 let hasNewValue = 1;
32386 let opNewValue = 0;
32387 let DecoderNamespace = "EXT_mmvec";
32388 }
32389 def V6_vlutvvb_oracc : HInst<
32390 (outs HvxVR:$Vx32),
32391 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
32392 "$Vx32.b |= vlut32($Vu32.b,$Vv32.b,$Rt8)",
32393 tc_cbf6d1dc, TypeCVI_VP_VS>, Enc_245865, Requires<[UseHVXV60]> {
32394 let Inst{7-5} = 0b101;
32395 let Inst{13-13} = 0b1;
32396 let Inst{31-24} = 0b00011011;
32397 let hasNewValue = 1;
32398 let opNewValue = 0;
32399 let isAccumulator = 1;
32400 let DecoderNamespace = "EXT_mmvec";
32401 let Constraints = "$Vx32 = $Vx32in";
32402 }
32403 def V6_vlutvvb_oracci : HInst<
32404 (outs HvxVR:$Vx32),
32405 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32, u3_0Imm:$Ii),
32406 "$Vx32.b |= vlut32($Vu32.b,$Vv32.b,#$Ii)",
32407 tc_cbf6d1dc, TypeCVI_VP_VS>, Enc_cd4705, Requires<[UseHVXV62]> {
32408 let Inst{13-13} = 0b1;
32409 let Inst{31-21} = 0b00011100110;
32410 let hasNewValue = 1;
32411 let opNewValue = 0;
32412 let isAccumulator = 1;
32413 let DecoderNamespace = "EXT_mmvec";
32414 let Constraints = "$Vx32 = $Vx32in";
32415 }
32416 def V6_vlutvvbi : HInst<
32417 (outs HvxVR:$Vd32),
32418 (ins HvxVR:$Vu32, HvxVR:$Vv32, u3_0Imm:$Ii),
32419 "$Vd32.b = vlut32($Vu32.b,$Vv32.b,#$Ii)",
32420 tc_c4b515c5, TypeCVI_VP>, Enc_0b2e5b, Requires<[UseHVXV62]> {
32421 let Inst{13-13} = 0b0;
32422 let Inst{31-21} = 0b00011110001;
32423 let hasNewValue = 1;
32424 let opNewValue = 0;
32425 let DecoderNamespace = "EXT_mmvec";
32426 }
32427 def V6_vlutvwh : HInst<
32428 (outs HvxWR:$Vdd32),
32429 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
32430 "$Vdd32.h = vlut16($Vu32.b,$Vv32.h,$Rt8)",
32431 tc_4e2a5159, TypeCVI_VP_VS>, Enc_24a7dc, Requires<[UseHVXV60]> {
32432 let Inst{7-5} = 0b110;
32433 let Inst{13-13} = 0b1;
32434 let Inst{31-24} = 0b00011011;
32435 let hasNewValue = 1;
32436 let opNewValue = 0;
32437 let DecoderNamespace = "EXT_mmvec";
32438 }
32439 def V6_vlutvwh_nm : HInst<
32440 (outs HvxWR:$Vdd32),
32441 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
32442 "$Vdd32.h = vlut16($Vu32.b,$Vv32.h,$Rt8):nomatch",
32443 tc_4e2a5159, TypeCVI_VP_VS>, Enc_24a7dc, Requires<[UseHVXV62]> {
32444 let Inst{7-5} = 0b100;
32445 let Inst{13-13} = 0b0;
32446 let Inst{31-24} = 0b00011000;
32447 let hasNewValue = 1;
32448 let opNewValue = 0;
32449 let DecoderNamespace = "EXT_mmvec";
32450 }
32451 def V6_vlutvwh_oracc : HInst<
32452 (outs HvxWR:$Vxx32),
32453 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
32454 "$Vxx32.h |= vlut16($Vu32.b,$Vv32.h,$Rt8)",
32455 tc_cbf6d1dc, TypeCVI_VP_VS>, Enc_7b523d, Requires<[UseHVXV60]> {
32456 let Inst{7-5} = 0b111;
32457 let Inst{13-13} = 0b1;
32458 let Inst{31-24} = 0b00011011;
32459 let hasNewValue = 1;
32460 let opNewValue = 0;
32461 let isAccumulator = 1;
32462 let DecoderNamespace = "EXT_mmvec";
32463 let Constraints = "$Vxx32 = $Vxx32in";
32464 }
32465 def V6_vlutvwh_oracci : HInst<
32466 (outs HvxWR:$Vxx32),
32467 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32, u3_0Imm:$Ii),
32468 "$Vxx32.h |= vlut16($Vu32.b,$Vv32.h,#$Ii)",
32469 tc_cbf6d1dc, TypeCVI_VP_VS>, Enc_1178da, Requires<[UseHVXV62]> {
32470 let Inst{13-13} = 0b1;
32471 let Inst{31-21} = 0b00011100111;
32472 let hasNewValue = 1;
32473 let opNewValue = 0;
32474 let isAccumulator = 1;
32475 let DecoderNamespace = "EXT_mmvec";
32476 let Constraints = "$Vxx32 = $Vxx32in";
32477 }
32478 def V6_vlutvwhi : HInst<
32479 (outs HvxWR:$Vdd32),
32480 (ins HvxVR:$Vu32, HvxVR:$Vv32, u3_0Imm:$Ii),
32481 "$Vdd32.h = vlut16($Vu32.b,$Vv32.h,#$Ii)",
32482 tc_4e2a5159, TypeCVI_VP_VS>, Enc_4b39e4, Requires<[UseHVXV62]> {
32483 let Inst{13-13} = 0b0;
32484 let Inst{31-21} = 0b00011110011;
32485 let hasNewValue = 1;
32486 let opNewValue = 0;
32487 let DecoderNamespace = "EXT_mmvec";
32488 }
32489 def V6_vmaxb : HInst<
32490 (outs HvxVR:$Vd32),
32491 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32492 "$Vd32.b = vmax($Vu32.b,$Vv32.b)",
32493 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
32494 let Inst{7-5} = 0b101;
32495 let Inst{13-13} = 0b0;
32496 let Inst{31-21} = 0b00011111001;
32497 let hasNewValue = 1;
32498 let opNewValue = 0;
32499 let DecoderNamespace = "EXT_mmvec";
32500 }
32501 def V6_vmaxb_alt : HInst<
32502 (outs HvxVR:$Vd32),
32503 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32504 "$Vd32 = vmaxb($Vu32,$Vv32)",
32505 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
32506 let hasNewValue = 1;
32507 let opNewValue = 0;
32508 let isPseudo = 1;
32509 let isCodeGenOnly = 1;
32510 let DecoderNamespace = "EXT_mmvec";
32511 }
32512 def V6_vmaxh : HInst<
32513 (outs HvxVR:$Vd32),
32514 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32515 "$Vd32.h = vmax($Vu32.h,$Vv32.h)",
32516 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
32517 let Inst{7-5} = 0b111;
32518 let Inst{13-13} = 0b0;
32519 let Inst{31-21} = 0b00011111000;
32520 let hasNewValue = 1;
32521 let opNewValue = 0;
32522 let DecoderNamespace = "EXT_mmvec";
32523 }
32524 def V6_vmaxh_alt : HInst<
32525 (outs HvxVR:$Vd32),
32526 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32527 "$Vd32 = vmaxh($Vu32,$Vv32)",
32528 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32529 let hasNewValue = 1;
32530 let opNewValue = 0;
32531 let isPseudo = 1;
32532 let isCodeGenOnly = 1;
32533 let DecoderNamespace = "EXT_mmvec";
32534 }
32535 def V6_vmaxub : HInst<
32536 (outs HvxVR:$Vd32),
32537 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32538 "$Vd32.ub = vmax($Vu32.ub,$Vv32.ub)",
32539 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
32540 let Inst{7-5} = 0b101;
32541 let Inst{13-13} = 0b0;
32542 let Inst{31-21} = 0b00011111000;
32543 let hasNewValue = 1;
32544 let opNewValue = 0;
32545 let DecoderNamespace = "EXT_mmvec";
32546 }
32547 def V6_vmaxub_alt : HInst<
32548 (outs HvxVR:$Vd32),
32549 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32550 "$Vd32 = vmaxub($Vu32,$Vv32)",
32551 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32552 let hasNewValue = 1;
32553 let opNewValue = 0;
32554 let isPseudo = 1;
32555 let isCodeGenOnly = 1;
32556 let DecoderNamespace = "EXT_mmvec";
32557 }
32558 def V6_vmaxuh : HInst<
32559 (outs HvxVR:$Vd32),
32560 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32561 "$Vd32.uh = vmax($Vu32.uh,$Vv32.uh)",
32562 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
32563 let Inst{7-5} = 0b110;
32564 let Inst{13-13} = 0b0;
32565 let Inst{31-21} = 0b00011111000;
32566 let hasNewValue = 1;
32567 let opNewValue = 0;
32568 let DecoderNamespace = "EXT_mmvec";
32569 }
32570 def V6_vmaxuh_alt : HInst<
32571 (outs HvxVR:$Vd32),
32572 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32573 "$Vd32 = vmaxuh($Vu32,$Vv32)",
32574 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32575 let hasNewValue = 1;
32576 let opNewValue = 0;
32577 let isPseudo = 1;
32578 let isCodeGenOnly = 1;
32579 let DecoderNamespace = "EXT_mmvec";
32580 }
32581 def V6_vmaxw : HInst<
32582 (outs HvxVR:$Vd32),
32583 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32584 "$Vd32.w = vmax($Vu32.w,$Vv32.w)",
32585 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
32586 let Inst{7-5} = 0b000;
32587 let Inst{13-13} = 0b0;
32588 let Inst{31-21} = 0b00011111001;
32589 let hasNewValue = 1;
32590 let opNewValue = 0;
32591 let DecoderNamespace = "EXT_mmvec";
32592 }
32593 def V6_vmaxw_alt : HInst<
32594 (outs HvxVR:$Vd32),
32595 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32596 "$Vd32 = vmaxw($Vu32,$Vv32)",
32597 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32598 let hasNewValue = 1;
32599 let opNewValue = 0;
32600 let isPseudo = 1;
32601 let isCodeGenOnly = 1;
32602 let DecoderNamespace = "EXT_mmvec";
32603 }
32604 def V6_vminb : HInst<
32605 (outs HvxVR:$Vd32),
32606 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32607 "$Vd32.b = vmin($Vu32.b,$Vv32.b)",
32608 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
32609 let Inst{7-5} = 0b100;
32610 let Inst{13-13} = 0b0;
32611 let Inst{31-21} = 0b00011111001;
32612 let hasNewValue = 1;
32613 let opNewValue = 0;
32614 let DecoderNamespace = "EXT_mmvec";
32615 }
32616 def V6_vminb_alt : HInst<
32617 (outs HvxVR:$Vd32),
32618 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32619 "$Vd32 = vminb($Vu32,$Vv32)",
32620 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
32621 let hasNewValue = 1;
32622 let opNewValue = 0;
32623 let isPseudo = 1;
32624 let isCodeGenOnly = 1;
32625 let DecoderNamespace = "EXT_mmvec";
32626 }
32627 def V6_vminh : HInst<
32628 (outs HvxVR:$Vd32),
32629 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32630 "$Vd32.h = vmin($Vu32.h,$Vv32.h)",
32631 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
32632 let Inst{7-5} = 0b011;
32633 let Inst{13-13} = 0b0;
32634 let Inst{31-21} = 0b00011111000;
32635 let hasNewValue = 1;
32636 let opNewValue = 0;
32637 let DecoderNamespace = "EXT_mmvec";
32638 }
32639 def V6_vminh_alt : HInst<
32640 (outs HvxVR:$Vd32),
32641 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32642 "$Vd32 = vminh($Vu32,$Vv32)",
32643 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32644 let hasNewValue = 1;
32645 let opNewValue = 0;
32646 let isPseudo = 1;
32647 let isCodeGenOnly = 1;
32648 let DecoderNamespace = "EXT_mmvec";
32649 }
32650 def V6_vminub : HInst<
32651 (outs HvxVR:$Vd32),
32652 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32653 "$Vd32.ub = vmin($Vu32.ub,$Vv32.ub)",
32654 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
32655 let Inst{7-5} = 0b001;
32656 let Inst{13-13} = 0b0;
32657 let Inst{31-21} = 0b00011111000;
32658 let hasNewValue = 1;
32659 let opNewValue = 0;
32660 let DecoderNamespace = "EXT_mmvec";
32661 }
32662 def V6_vminub_alt : HInst<
32663 (outs HvxVR:$Vd32),
32664 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32665 "$Vd32 = vminub($Vu32,$Vv32)",
32666 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32667 let hasNewValue = 1;
32668 let opNewValue = 0;
32669 let isPseudo = 1;
32670 let isCodeGenOnly = 1;
32671 let DecoderNamespace = "EXT_mmvec";
32672 }
32673 def V6_vminuh : HInst<
32674 (outs HvxVR:$Vd32),
32675 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32676 "$Vd32.uh = vmin($Vu32.uh,$Vv32.uh)",
32677 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
32678 let Inst{7-5} = 0b010;
32679 let Inst{13-13} = 0b0;
32680 let Inst{31-21} = 0b00011111000;
32681 let hasNewValue = 1;
32682 let opNewValue = 0;
32683 let DecoderNamespace = "EXT_mmvec";
32684 }
32685 def V6_vminuh_alt : HInst<
32686 (outs HvxVR:$Vd32),
32687 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32688 "$Vd32 = vminuh($Vu32,$Vv32)",
32689 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32690 let hasNewValue = 1;
32691 let opNewValue = 0;
32692 let isPseudo = 1;
32693 let isCodeGenOnly = 1;
32694 let DecoderNamespace = "EXT_mmvec";
32695 }
32696 def V6_vminw : HInst<
32697 (outs HvxVR:$Vd32),
32698 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32699 "$Vd32.w = vmin($Vu32.w,$Vv32.w)",
32700 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
32701 let Inst{7-5} = 0b100;
32702 let Inst{13-13} = 0b0;
32703 let Inst{31-21} = 0b00011111000;
32704 let hasNewValue = 1;
32705 let opNewValue = 0;
32706 let DecoderNamespace = "EXT_mmvec";
32707 }
32708 def V6_vminw_alt : HInst<
32709 (outs HvxVR:$Vd32),
32710 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32711 "$Vd32 = vminw($Vu32,$Vv32)",
32712 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32713 let hasNewValue = 1;
32714 let opNewValue = 0;
32715 let isPseudo = 1;
32716 let isCodeGenOnly = 1;
32717 let DecoderNamespace = "EXT_mmvec";
32718 }
32719 def V6_vmpabus : HInst<
32720 (outs HvxWR:$Vdd32),
32721 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
32722 "$Vdd32.h = vmpa($Vuu32.ub,$Rt32.b)",
32723 tc_7c3f55c4, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV60]> {
32724 let Inst{7-5} = 0b110;
32725 let Inst{13-13} = 0b0;
32726 let Inst{31-21} = 0b00011001001;
32727 let hasNewValue = 1;
32728 let opNewValue = 0;
32729 let DecoderNamespace = "EXT_mmvec";
32730 }
32731 def V6_vmpabus_acc : HInst<
32732 (outs HvxWR:$Vxx32),
32733 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
32734 "$Vxx32.h += vmpa($Vuu32.ub,$Rt32.b)",
32735 tc_d98f4d63, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV60]> {
32736 let Inst{7-5} = 0b110;
32737 let Inst{13-13} = 0b1;
32738 let Inst{31-21} = 0b00011001001;
32739 let hasNewValue = 1;
32740 let opNewValue = 0;
32741 let isAccumulator = 1;
32742 let DecoderNamespace = "EXT_mmvec";
32743 let Constraints = "$Vxx32 = $Vxx32in";
32744 }
32745 def V6_vmpabus_acc_alt : HInst<
32746 (outs HvxWR:$Vxx32),
32747 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
32748 "$Vxx32 += vmpabus($Vuu32,$Rt32)",
32749 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32750 let hasNewValue = 1;
32751 let opNewValue = 0;
32752 let isAccumulator = 1;
32753 let isPseudo = 1;
32754 let isCodeGenOnly = 1;
32755 let DecoderNamespace = "EXT_mmvec";
32756 let Constraints = "$Vxx32 = $Vxx32in";
32757 }
32758 def V6_vmpabus_alt : HInst<
32759 (outs HvxWR:$Vdd32),
32760 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
32761 "$Vdd32 = vmpabus($Vuu32,$Rt32)",
32762 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32763 let hasNewValue = 1;
32764 let opNewValue = 0;
32765 let isPseudo = 1;
32766 let isCodeGenOnly = 1;
32767 let DecoderNamespace = "EXT_mmvec";
32768 }
32769 def V6_vmpabusv : HInst<
32770 (outs HvxWR:$Vdd32),
32771 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
32772 "$Vdd32.h = vmpa($Vuu32.ub,$Vvv32.b)",
32773 tc_eda67dcd, TypeCVI_VX_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
32774 let Inst{7-5} = 0b011;
32775 let Inst{13-13} = 0b0;
32776 let Inst{31-21} = 0b00011100001;
32777 let hasNewValue = 1;
32778 let opNewValue = 0;
32779 let DecoderNamespace = "EXT_mmvec";
32780 }
32781 def V6_vmpabusv_alt : HInst<
32782 (outs HvxWR:$Vdd32),
32783 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
32784 "$Vdd32 = vmpabus($Vuu32,$Vvv32)",
32785 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32786 let hasNewValue = 1;
32787 let opNewValue = 0;
32788 let isPseudo = 1;
32789 let isCodeGenOnly = 1;
32790 let DecoderNamespace = "EXT_mmvec";
32791 }
32792 def V6_vmpabuu : HInst<
32793 (outs HvxWR:$Vdd32),
32794 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
32795 "$Vdd32.h = vmpa($Vuu32.ub,$Rt32.ub)",
32796 tc_7c3f55c4, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV65]> {
32797 let Inst{7-5} = 0b011;
32798 let Inst{13-13} = 0b0;
32799 let Inst{31-21} = 0b00011001011;
32800 let hasNewValue = 1;
32801 let opNewValue = 0;
32802 let DecoderNamespace = "EXT_mmvec";
32803 }
32804 def V6_vmpabuu_acc : HInst<
32805 (outs HvxWR:$Vxx32),
32806 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
32807 "$Vxx32.h += vmpa($Vuu32.ub,$Rt32.ub)",
32808 tc_d98f4d63, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV65]> {
32809 let Inst{7-5} = 0b100;
32810 let Inst{13-13} = 0b1;
32811 let Inst{31-21} = 0b00011001101;
32812 let hasNewValue = 1;
32813 let opNewValue = 0;
32814 let isAccumulator = 1;
32815 let DecoderNamespace = "EXT_mmvec";
32816 let Constraints = "$Vxx32 = $Vxx32in";
32817 }
32818 def V6_vmpabuu_acc_alt : HInst<
32819 (outs HvxWR:$Vxx32),
32820 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
32821 "$Vxx32 += vmpabuu($Vuu32,$Rt32)",
32822 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
32823 let hasNewValue = 1;
32824 let opNewValue = 0;
32825 let isAccumulator = 1;
32826 let isPseudo = 1;
32827 let isCodeGenOnly = 1;
32828 let DecoderNamespace = "EXT_mmvec";
32829 let Constraints = "$Vxx32 = $Vxx32in";
32830 }
32831 def V6_vmpabuu_alt : HInst<
32832 (outs HvxWR:$Vdd32),
32833 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
32834 "$Vdd32 = vmpabuu($Vuu32,$Rt32)",
32835 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
32836 let hasNewValue = 1;
32837 let opNewValue = 0;
32838 let isPseudo = 1;
32839 let isCodeGenOnly = 1;
32840 let DecoderNamespace = "EXT_mmvec";
32841 }
32842 def V6_vmpabuuv : HInst<
32843 (outs HvxWR:$Vdd32),
32844 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
32845 "$Vdd32.h = vmpa($Vuu32.ub,$Vvv32.ub)",
32846 tc_eda67dcd, TypeCVI_VX_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
32847 let Inst{7-5} = 0b111;
32848 let Inst{13-13} = 0b0;
32849 let Inst{31-21} = 0b00011100111;
32850 let hasNewValue = 1;
32851 let opNewValue = 0;
32852 let DecoderNamespace = "EXT_mmvec";
32853 }
32854 def V6_vmpabuuv_alt : HInst<
32855 (outs HvxWR:$Vdd32),
32856 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
32857 "$Vdd32 = vmpabuu($Vuu32,$Vvv32)",
32858 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32859 let hasNewValue = 1;
32860 let opNewValue = 0;
32861 let isPseudo = 1;
32862 let isCodeGenOnly = 1;
32863 let DecoderNamespace = "EXT_mmvec";
32864 }
32865 def V6_vmpahb : HInst<
32866 (outs HvxWR:$Vdd32),
32867 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
32868 "$Vdd32.w = vmpa($Vuu32.h,$Rt32.b)",
32869 tc_7c3f55c4, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV60]> {
32870 let Inst{7-5} = 0b111;
32871 let Inst{13-13} = 0b0;
32872 let Inst{31-21} = 0b00011001001;
32873 let hasNewValue = 1;
32874 let opNewValue = 0;
32875 let DecoderNamespace = "EXT_mmvec";
32876 }
32877 def V6_vmpahb_acc : HInst<
32878 (outs HvxWR:$Vxx32),
32879 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
32880 "$Vxx32.w += vmpa($Vuu32.h,$Rt32.b)",
32881 tc_d98f4d63, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV60]> {
32882 let Inst{7-5} = 0b111;
32883 let Inst{13-13} = 0b1;
32884 let Inst{31-21} = 0b00011001001;
32885 let hasNewValue = 1;
32886 let opNewValue = 0;
32887 let isAccumulator = 1;
32888 let DecoderNamespace = "EXT_mmvec";
32889 let Constraints = "$Vxx32 = $Vxx32in";
32890 }
32891 def V6_vmpahb_acc_alt : HInst<
32892 (outs HvxWR:$Vxx32),
32893 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
32894 "$Vxx32 += vmpahb($Vuu32,$Rt32)",
32895 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32896 let hasNewValue = 1;
32897 let opNewValue = 0;
32898 let isAccumulator = 1;
32899 let isPseudo = 1;
32900 let isCodeGenOnly = 1;
32901 let DecoderNamespace = "EXT_mmvec";
32902 let Constraints = "$Vxx32 = $Vxx32in";
32903 }
32904 def V6_vmpahb_alt : HInst<
32905 (outs HvxWR:$Vdd32),
32906 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
32907 "$Vdd32 = vmpahb($Vuu32,$Rt32)",
32908 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32909 let hasNewValue = 1;
32910 let opNewValue = 0;
32911 let isPseudo = 1;
32912 let isCodeGenOnly = 1;
32913 let DecoderNamespace = "EXT_mmvec";
32914 }
32915 def V6_vmpahhsat : HInst<
32916 (outs HvxVR:$Vx32),
32917 (ins HvxVR:$Vx32in, HvxVR:$Vu32, DoubleRegs:$Rtt32),
32918 "$Vx32.h = vmpa($Vx32in.h,$Vu32.h,$Rtt32.h):sat",
32919 tc_7474003e, TypeCVI_VX_DV>, Enc_310ba1, Requires<[UseHVXV65]> {
32920 let Inst{7-5} = 0b100;
32921 let Inst{13-13} = 0b1;
32922 let Inst{31-21} = 0b00011001100;
32923 let hasNewValue = 1;
32924 let opNewValue = 0;
32925 let DecoderNamespace = "EXT_mmvec";
32926 let Constraints = "$Vx32 = $Vx32in";
32927 }
32928 def V6_vmpauhb : HInst<
32929 (outs HvxWR:$Vdd32),
32930 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
32931 "$Vdd32.w = vmpa($Vuu32.uh,$Rt32.b)",
32932 tc_7c3f55c4, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV62]> {
32933 let Inst{7-5} = 0b101;
32934 let Inst{13-13} = 0b0;
32935 let Inst{31-21} = 0b00011001100;
32936 let hasNewValue = 1;
32937 let opNewValue = 0;
32938 let DecoderNamespace = "EXT_mmvec";
32939 }
32940 def V6_vmpauhb_acc : HInst<
32941 (outs HvxWR:$Vxx32),
32942 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
32943 "$Vxx32.w += vmpa($Vuu32.uh,$Rt32.b)",
32944 tc_d98f4d63, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV62]> {
32945 let Inst{7-5} = 0b010;
32946 let Inst{13-13} = 0b1;
32947 let Inst{31-21} = 0b00011001100;
32948 let hasNewValue = 1;
32949 let opNewValue = 0;
32950 let isAccumulator = 1;
32951 let DecoderNamespace = "EXT_mmvec";
32952 let Constraints = "$Vxx32 = $Vxx32in";
32953 }
32954 def V6_vmpauhb_acc_alt : HInst<
32955 (outs HvxWR:$Vxx32),
32956 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
32957 "$Vxx32 += vmpauhb($Vuu32,$Rt32)",
32958 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
32959 let hasNewValue = 1;
32960 let opNewValue = 0;
32961 let isAccumulator = 1;
32962 let isPseudo = 1;
32963 let isCodeGenOnly = 1;
32964 let DecoderNamespace = "EXT_mmvec";
32965 let Constraints = "$Vxx32 = $Vxx32in";
32966 }
32967 def V6_vmpauhb_alt : HInst<
32968 (outs HvxWR:$Vdd32),
32969 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
32970 "$Vdd32 = vmpauhb($Vuu32,$Rt32)",
32971 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
32972 let hasNewValue = 1;
32973 let opNewValue = 0;
32974 let isPseudo = 1;
32975 let isCodeGenOnly = 1;
32976 let DecoderNamespace = "EXT_mmvec";
32977 }
32978 def V6_vmpauhuhsat : HInst<
32979 (outs HvxVR:$Vx32),
32980 (ins HvxVR:$Vx32in, HvxVR:$Vu32, DoubleRegs:$Rtt32),
32981 "$Vx32.h = vmpa($Vx32in.h,$Vu32.uh,$Rtt32.uh):sat",
32982 tc_7474003e, TypeCVI_VX_DV>, Enc_310ba1, Requires<[UseHVXV65]> {
32983 let Inst{7-5} = 0b101;
32984 let Inst{13-13} = 0b1;
32985 let Inst{31-21} = 0b00011001100;
32986 let hasNewValue = 1;
32987 let opNewValue = 0;
32988 let DecoderNamespace = "EXT_mmvec";
32989 let Constraints = "$Vx32 = $Vx32in";
32990 }
32991 def V6_vmpsuhuhsat : HInst<
32992 (outs HvxVR:$Vx32),
32993 (ins HvxVR:$Vx32in, HvxVR:$Vu32, DoubleRegs:$Rtt32),
32994 "$Vx32.h = vmps($Vx32in.h,$Vu32.uh,$Rtt32.uh):sat",
32995 tc_7474003e, TypeCVI_VX_DV>, Enc_310ba1, Requires<[UseHVXV65]> {
32996 let Inst{7-5} = 0b110;
32997 let Inst{13-13} = 0b1;
32998 let Inst{31-21} = 0b00011001100;
32999 let hasNewValue = 1;
33000 let opNewValue = 0;
33001 let DecoderNamespace = "EXT_mmvec";
33002 let Constraints = "$Vx32 = $Vx32in";
33003 }
33004 def V6_vmpybus : HInst<
33005 (outs HvxWR:$Vdd32),
33006 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33007 "$Vdd32.h = vmpy($Vu32.ub,$Rt32.b)",
33008 tc_7c3f55c4, TypeCVI_VX_DV>, Enc_01d3d0, Requires<[UseHVXV60]> {
33009 let Inst{7-5} = 0b101;
33010 let Inst{13-13} = 0b0;
33011 let Inst{31-21} = 0b00011001001;
33012 let hasNewValue = 1;
33013 let opNewValue = 0;
33014 let DecoderNamespace = "EXT_mmvec";
33015 }
33016 def V6_vmpybus_acc : HInst<
33017 (outs HvxWR:$Vxx32),
33018 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33019 "$Vxx32.h += vmpy($Vu32.ub,$Rt32.b)",
33020 tc_d98f4d63, TypeCVI_VX_DV>, Enc_5e8512, Requires<[UseHVXV60]> {
33021 let Inst{7-5} = 0b101;
33022 let Inst{13-13} = 0b1;
33023 let Inst{31-21} = 0b00011001001;
33024 let hasNewValue = 1;
33025 let opNewValue = 0;
33026 let isAccumulator = 1;
33027 let DecoderNamespace = "EXT_mmvec";
33028 let Constraints = "$Vxx32 = $Vxx32in";
33029 }
33030 def V6_vmpybus_acc_alt : HInst<
33031 (outs HvxWR:$Vxx32),
33032 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33033 "$Vxx32 += vmpybus($Vu32,$Rt32)",
33034 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33035 let hasNewValue = 1;
33036 let opNewValue = 0;
33037 let isAccumulator = 1;
33038 let isPseudo = 1;
33039 let isCodeGenOnly = 1;
33040 let DecoderNamespace = "EXT_mmvec";
33041 let Constraints = "$Vxx32 = $Vxx32in";
33042 }
33043 def V6_vmpybus_alt : HInst<
33044 (outs HvxWR:$Vdd32),
33045 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33046 "$Vdd32 = vmpybus($Vu32,$Rt32)",
33047 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33048 let hasNewValue = 1;
33049 let opNewValue = 0;
33050 let isPseudo = 1;
33051 let isCodeGenOnly = 1;
33052 let DecoderNamespace = "EXT_mmvec";
33053 }
33054 def V6_vmpybusv : HInst<
33055 (outs HvxWR:$Vdd32),
33056 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33057 "$Vdd32.h = vmpy($Vu32.ub,$Vv32.b)",
33058 tc_eda67dcd, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
33059 let Inst{7-5} = 0b110;
33060 let Inst{13-13} = 0b0;
33061 let Inst{31-21} = 0b00011100000;
33062 let hasNewValue = 1;
33063 let opNewValue = 0;
33064 let DecoderNamespace = "EXT_mmvec";
33065 }
33066 def V6_vmpybusv_acc : HInst<
33067 (outs HvxWR:$Vxx32),
33068 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33069 "$Vxx32.h += vmpy($Vu32.ub,$Vv32.b)",
33070 tc_e172d86a, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV60]> {
33071 let Inst{7-5} = 0b110;
33072 let Inst{13-13} = 0b1;
33073 let Inst{31-21} = 0b00011100000;
33074 let hasNewValue = 1;
33075 let opNewValue = 0;
33076 let isAccumulator = 1;
33077 let DecoderNamespace = "EXT_mmvec";
33078 let Constraints = "$Vxx32 = $Vxx32in";
33079 }
33080 def V6_vmpybusv_acc_alt : HInst<
33081 (outs HvxWR:$Vxx32),
33082 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33083 "$Vxx32 += vmpybus($Vu32,$Vv32)",
33084 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33085 let hasNewValue = 1;
33086 let opNewValue = 0;
33087 let isAccumulator = 1;
33088 let isPseudo = 1;
33089 let isCodeGenOnly = 1;
33090 let DecoderNamespace = "EXT_mmvec";
33091 let Constraints = "$Vxx32 = $Vxx32in";
33092 }
33093 def V6_vmpybusv_alt : HInst<
33094 (outs HvxWR:$Vdd32),
33095 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33096 "$Vdd32 = vmpybus($Vu32,$Vv32)",
33097 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33098 let hasNewValue = 1;
33099 let opNewValue = 0;
33100 let isPseudo = 1;
33101 let isCodeGenOnly = 1;
33102 let DecoderNamespace = "EXT_mmvec";
33103 }
33104 def V6_vmpybv : HInst<
33105 (outs HvxWR:$Vdd32),
33106 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33107 "$Vdd32.h = vmpy($Vu32.b,$Vv32.b)",
33108 tc_eda67dcd, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
33109 let Inst{7-5} = 0b100;
33110 let Inst{13-13} = 0b0;
33111 let Inst{31-21} = 0b00011100000;
33112 let hasNewValue = 1;
33113 let opNewValue = 0;
33114 let DecoderNamespace = "EXT_mmvec";
33115 }
33116 def V6_vmpybv_acc : HInst<
33117 (outs HvxWR:$Vxx32),
33118 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33119 "$Vxx32.h += vmpy($Vu32.b,$Vv32.b)",
33120 tc_e172d86a, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV60]> {
33121 let Inst{7-5} = 0b100;
33122 let Inst{13-13} = 0b1;
33123 let Inst{31-21} = 0b00011100000;
33124 let hasNewValue = 1;
33125 let opNewValue = 0;
33126 let isAccumulator = 1;
33127 let DecoderNamespace = "EXT_mmvec";
33128 let Constraints = "$Vxx32 = $Vxx32in";
33129 }
33130 def V6_vmpybv_acc_alt : HInst<
33131 (outs HvxWR:$Vxx32),
33132 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33133 "$Vxx32 += vmpyb($Vu32,$Vv32)",
33134 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33135 let hasNewValue = 1;
33136 let opNewValue = 0;
33137 let isAccumulator = 1;
33138 let isPseudo = 1;
33139 let isCodeGenOnly = 1;
33140 let DecoderNamespace = "EXT_mmvec";
33141 let Constraints = "$Vxx32 = $Vxx32in";
33142 }
33143 def V6_vmpybv_alt : HInst<
33144 (outs HvxWR:$Vdd32),
33145 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33146 "$Vdd32 = vmpyb($Vu32,$Vv32)",
33147 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33148 let hasNewValue = 1;
33149 let opNewValue = 0;
33150 let isPseudo = 1;
33151 let isCodeGenOnly = 1;
33152 let DecoderNamespace = "EXT_mmvec";
33153 }
33154 def V6_vmpyewuh : HInst<
33155 (outs HvxVR:$Vd32),
33156 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33157 "$Vd32.w = vmpye($Vu32.w,$Vv32.uh)",
33158 tc_eda67dcd, TypeCVI_VX_DV>, Enc_45364e, Requires<[UseHVXV60]> {
33159 let Inst{7-5} = 0b101;
33160 let Inst{13-13} = 0b0;
33161 let Inst{31-21} = 0b00011111111;
33162 let hasNewValue = 1;
33163 let opNewValue = 0;
33164 let DecoderNamespace = "EXT_mmvec";
33165 }
33166 def V6_vmpyewuh_64 : HInst<
33167 (outs HvxWR:$Vdd32),
33168 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33169 "$Vdd32 = vmpye($Vu32.w,$Vv32.uh)",
33170 tc_eda67dcd, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV62]> {
33171 let Inst{7-5} = 0b110;
33172 let Inst{13-13} = 0b0;
33173 let Inst{31-21} = 0b00011110101;
33174 let hasNewValue = 1;
33175 let opNewValue = 0;
33176 let DecoderNamespace = "EXT_mmvec";
33177 }
33178 def V6_vmpyewuh_alt : HInst<
33179 (outs HvxVR:$Vd32),
33180 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33181 "$Vd32 = vmpyewuh($Vu32,$Vv32)",
33182 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33183 let hasNewValue = 1;
33184 let opNewValue = 0;
33185 let isPseudo = 1;
33186 let isCodeGenOnly = 1;
33187 let DecoderNamespace = "EXT_mmvec";
33188 }
33189 def V6_vmpyh : HInst<
33190 (outs HvxWR:$Vdd32),
33191 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33192 "$Vdd32.w = vmpy($Vu32.h,$Rt32.h)",
33193 tc_7c3f55c4, TypeCVI_VX_DV>, Enc_01d3d0, Requires<[UseHVXV60]> {
33194 let Inst{7-5} = 0b000;
33195 let Inst{13-13} = 0b0;
33196 let Inst{31-21} = 0b00011001010;
33197 let hasNewValue = 1;
33198 let opNewValue = 0;
33199 let DecoderNamespace = "EXT_mmvec";
33200 }
33201 def V6_vmpyh_acc : HInst<
33202 (outs HvxWR:$Vxx32),
33203 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33204 "$Vxx32.w += vmpy($Vu32.h,$Rt32.h)",
33205 tc_d98f4d63, TypeCVI_VX_DV>, Enc_5e8512, Requires<[UseHVXV65]> {
33206 let Inst{7-5} = 0b110;
33207 let Inst{13-13} = 0b1;
33208 let Inst{31-21} = 0b00011001101;
33209 let hasNewValue = 1;
33210 let opNewValue = 0;
33211 let isAccumulator = 1;
33212 let DecoderNamespace = "EXT_mmvec";
33213 let Constraints = "$Vxx32 = $Vxx32in";
33214 }
33215 def V6_vmpyh_acc_alt : HInst<
33216 (outs HvxWR:$Vxx32),
33217 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33218 "$Vxx32 += vmpyh($Vu32,$Rt32)",
33219 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
33220 let hasNewValue = 1;
33221 let opNewValue = 0;
33222 let isAccumulator = 1;
33223 let isPseudo = 1;
33224 let isCodeGenOnly = 1;
33225 let DecoderNamespace = "EXT_mmvec";
33226 let Constraints = "$Vxx32 = $Vxx32in";
33227 }
33228 def V6_vmpyh_alt : HInst<
33229 (outs HvxWR:$Vdd32),
33230 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33231 "$Vdd32 = vmpyh($Vu32,$Rt32)",
33232 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33233 let hasNewValue = 1;
33234 let opNewValue = 0;
33235 let isPseudo = 1;
33236 let isCodeGenOnly = 1;
33237 let DecoderNamespace = "EXT_mmvec";
33238 }
33239 def V6_vmpyhsat_acc : HInst<
33240 (outs HvxWR:$Vxx32),
33241 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33242 "$Vxx32.w += vmpy($Vu32.h,$Rt32.h):sat",
33243 tc_d98f4d63, TypeCVI_VX_DV>, Enc_5e8512, Requires<[UseHVXV60]> {
33244 let Inst{7-5} = 0b000;
33245 let Inst{13-13} = 0b1;
33246 let Inst{31-21} = 0b00011001010;
33247 let hasNewValue = 1;
33248 let opNewValue = 0;
33249 let isAccumulator = 1;
33250 let DecoderNamespace = "EXT_mmvec";
33251 let Constraints = "$Vxx32 = $Vxx32in";
33252 }
33253 def V6_vmpyhsat_acc_alt : HInst<
33254 (outs HvxWR:$Vxx32),
33255 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33256 "$Vxx32 += vmpyh($Vu32,$Rt32):sat",
33257 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33258 let hasNewValue = 1;
33259 let opNewValue = 0;
33260 let isAccumulator = 1;
33261 let isPseudo = 1;
33262 let isCodeGenOnly = 1;
33263 let DecoderNamespace = "EXT_mmvec";
33264 let Constraints = "$Vxx32 = $Vxx32in";
33265 }
33266 def V6_vmpyhsrs : HInst<
33267 (outs HvxVR:$Vd32),
33268 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33269 "$Vd32.h = vmpy($Vu32.h,$Rt32.h):<<1:rnd:sat",
33270 tc_7c3f55c4, TypeCVI_VX_DV>, Enc_b087ac, Requires<[UseHVXV60]> {
33271 let Inst{7-5} = 0b010;
33272 let Inst{13-13} = 0b0;
33273 let Inst{31-21} = 0b00011001010;
33274 let hasNewValue = 1;
33275 let opNewValue = 0;
33276 let DecoderNamespace = "EXT_mmvec";
33277 }
33278 def V6_vmpyhsrs_alt : HInst<
33279 (outs HvxVR:$Vd32),
33280 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33281 "$Vd32 = vmpyh($Vu32,$Rt32):<<1:rnd:sat",
33282 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33283 let hasNewValue = 1;
33284 let opNewValue = 0;
33285 let isPseudo = 1;
33286 let isCodeGenOnly = 1;
33287 let DecoderNamespace = "EXT_mmvec";
33288 }
33289 def V6_vmpyhss : HInst<
33290 (outs HvxVR:$Vd32),
33291 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33292 "$Vd32.h = vmpy($Vu32.h,$Rt32.h):<<1:sat",
33293 tc_7c3f55c4, TypeCVI_VX_DV>, Enc_b087ac, Requires<[UseHVXV60]> {
33294 let Inst{7-5} = 0b001;
33295 let Inst{13-13} = 0b0;
33296 let Inst{31-21} = 0b00011001010;
33297 let hasNewValue = 1;
33298 let opNewValue = 0;
33299 let DecoderNamespace = "EXT_mmvec";
33300 }
33301 def V6_vmpyhss_alt : HInst<
33302 (outs HvxVR:$Vd32),
33303 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33304 "$Vd32 = vmpyh($Vu32,$Rt32):<<1:sat",
33305 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33306 let hasNewValue = 1;
33307 let opNewValue = 0;
33308 let isPseudo = 1;
33309 let isCodeGenOnly = 1;
33310 let DecoderNamespace = "EXT_mmvec";
33311 }
33312 def V6_vmpyhus : HInst<
33313 (outs HvxWR:$Vdd32),
33314 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33315 "$Vdd32.w = vmpy($Vu32.h,$Vv32.uh)",
33316 tc_eda67dcd, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
33317 let Inst{7-5} = 0b010;
33318 let Inst{13-13} = 0b0;
33319 let Inst{31-21} = 0b00011100001;
33320 let hasNewValue = 1;
33321 let opNewValue = 0;
33322 let DecoderNamespace = "EXT_mmvec";
33323 }
33324 def V6_vmpyhus_acc : HInst<
33325 (outs HvxWR:$Vxx32),
33326 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33327 "$Vxx32.w += vmpy($Vu32.h,$Vv32.uh)",
33328 tc_e172d86a, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV60]> {
33329 let Inst{7-5} = 0b001;
33330 let Inst{13-13} = 0b1;
33331 let Inst{31-21} = 0b00011100001;
33332 let hasNewValue = 1;
33333 let opNewValue = 0;
33334 let isAccumulator = 1;
33335 let DecoderNamespace = "EXT_mmvec";
33336 let Constraints = "$Vxx32 = $Vxx32in";
33337 }
33338 def V6_vmpyhus_acc_alt : HInst<
33339 (outs HvxWR:$Vxx32),
33340 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33341 "$Vxx32 += vmpyhus($Vu32,$Vv32)",
33342 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33343 let hasNewValue = 1;
33344 let opNewValue = 0;
33345 let isAccumulator = 1;
33346 let isPseudo = 1;
33347 let isCodeGenOnly = 1;
33348 let DecoderNamespace = "EXT_mmvec";
33349 let Constraints = "$Vxx32 = $Vxx32in";
33350 }
33351 def V6_vmpyhus_alt : HInst<
33352 (outs HvxWR:$Vdd32),
33353 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33354 "$Vdd32 = vmpyhus($Vu32,$Vv32)",
33355 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33356 let hasNewValue = 1;
33357 let opNewValue = 0;
33358 let isPseudo = 1;
33359 let isCodeGenOnly = 1;
33360 let DecoderNamespace = "EXT_mmvec";
33361 }
33362 def V6_vmpyhv : HInst<
33363 (outs HvxWR:$Vdd32),
33364 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33365 "$Vdd32.w = vmpy($Vu32.h,$Vv32.h)",
33366 tc_eda67dcd, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
33367 let Inst{7-5} = 0b111;
33368 let Inst{13-13} = 0b0;
33369 let Inst{31-21} = 0b00011100000;
33370 let hasNewValue = 1;
33371 let opNewValue = 0;
33372 let DecoderNamespace = "EXT_mmvec";
33373 }
33374 def V6_vmpyhv_acc : HInst<
33375 (outs HvxWR:$Vxx32),
33376 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33377 "$Vxx32.w += vmpy($Vu32.h,$Vv32.h)",
33378 tc_e172d86a, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV60]> {
33379 let Inst{7-5} = 0b111;
33380 let Inst{13-13} = 0b1;
33381 let Inst{31-21} = 0b00011100000;
33382 let hasNewValue = 1;
33383 let opNewValue = 0;
33384 let isAccumulator = 1;
33385 let DecoderNamespace = "EXT_mmvec";
33386 let Constraints = "$Vxx32 = $Vxx32in";
33387 }
33388 def V6_vmpyhv_acc_alt : HInst<
33389 (outs HvxWR:$Vxx32),
33390 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33391 "$Vxx32 += vmpyh($Vu32,$Vv32)",
33392 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33393 let hasNewValue = 1;
33394 let opNewValue = 0;
33395 let isAccumulator = 1;
33396 let isPseudo = 1;
33397 let isCodeGenOnly = 1;
33398 let DecoderNamespace = "EXT_mmvec";
33399 let Constraints = "$Vxx32 = $Vxx32in";
33400 }
33401 def V6_vmpyhv_alt : HInst<
33402 (outs HvxWR:$Vdd32),
33403 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33404 "$Vdd32 = vmpyh($Vu32,$Vv32)",
33405 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33406 let hasNewValue = 1;
33407 let opNewValue = 0;
33408 let isPseudo = 1;
33409 let isCodeGenOnly = 1;
33410 let DecoderNamespace = "EXT_mmvec";
33411 }
33412 def V6_vmpyhvsrs : HInst<
33413 (outs HvxVR:$Vd32),
33414 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33415 "$Vd32.h = vmpy($Vu32.h,$Vv32.h):<<1:rnd:sat",
33416 tc_eda67dcd, TypeCVI_VX_DV>, Enc_45364e, Requires<[UseHVXV60]> {
33417 let Inst{7-5} = 0b001;
33418 let Inst{13-13} = 0b0;
33419 let Inst{31-21} = 0b00011100001;
33420 let hasNewValue = 1;
33421 let opNewValue = 0;
33422 let DecoderNamespace = "EXT_mmvec";
33423 }
33424 def V6_vmpyhvsrs_alt : HInst<
33425 (outs HvxVR:$Vd32),
33426 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33427 "$Vd32 = vmpyh($Vu32,$Vv32):<<1:rnd:sat",
33428 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33429 let hasNewValue = 1;
33430 let opNewValue = 0;
33431 let isPseudo = 1;
33432 let isCodeGenOnly = 1;
33433 let DecoderNamespace = "EXT_mmvec";
33434 }
33435 def V6_vmpyieoh : HInst<
33436 (outs HvxVR:$Vd32),
33437 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33438 "$Vd32.w = vmpyieo($Vu32.h,$Vv32.h)",
33439 tc_908a4c8c, TypeCVI_VX>, Enc_45364e, Requires<[UseHVXV60]> {
33440 let Inst{7-5} = 0b000;
33441 let Inst{13-13} = 0b0;
33442 let Inst{31-21} = 0b00011111011;
33443 let hasNewValue = 1;
33444 let opNewValue = 0;
33445 let DecoderNamespace = "EXT_mmvec";
33446 }
33447 def V6_vmpyiewh_acc : HInst<
33448 (outs HvxVR:$Vx32),
33449 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33450 "$Vx32.w += vmpyie($Vu32.w,$Vv32.h)",
33451 tc_e172d86a, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
33452 let Inst{7-5} = 0b000;
33453 let Inst{13-13} = 0b1;
33454 let Inst{31-21} = 0b00011100010;
33455 let hasNewValue = 1;
33456 let opNewValue = 0;
33457 let isAccumulator = 1;
33458 let DecoderNamespace = "EXT_mmvec";
33459 let Constraints = "$Vx32 = $Vx32in";
33460 }
33461 def V6_vmpyiewh_acc_alt : HInst<
33462 (outs HvxVR:$Vx32),
33463 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33464 "$Vx32 += vmpyiewh($Vu32,$Vv32)",
33465 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33466 let hasNewValue = 1;
33467 let opNewValue = 0;
33468 let isAccumulator = 1;
33469 let isPseudo = 1;
33470 let isCodeGenOnly = 1;
33471 let DecoderNamespace = "EXT_mmvec";
33472 let Constraints = "$Vx32 = $Vx32in";
33473 }
33474 def V6_vmpyiewuh : HInst<
33475 (outs HvxVR:$Vd32),
33476 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33477 "$Vd32.w = vmpyie($Vu32.w,$Vv32.uh)",
33478 tc_eda67dcd, TypeCVI_VX_DV>, Enc_45364e, Requires<[UseHVXV60]> {
33479 let Inst{7-5} = 0b000;
33480 let Inst{13-13} = 0b0;
33481 let Inst{31-21} = 0b00011111110;
33482 let hasNewValue = 1;
33483 let opNewValue = 0;
33484 let DecoderNamespace = "EXT_mmvec";
33485 }
33486 def V6_vmpyiewuh_acc : HInst<
33487 (outs HvxVR:$Vx32),
33488 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33489 "$Vx32.w += vmpyie($Vu32.w,$Vv32.uh)",
33490 tc_e172d86a, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
33491 let Inst{7-5} = 0b101;
33492 let Inst{13-13} = 0b1;
33493 let Inst{31-21} = 0b00011100001;
33494 let hasNewValue = 1;
33495 let opNewValue = 0;
33496 let isAccumulator = 1;
33497 let DecoderNamespace = "EXT_mmvec";
33498 let Constraints = "$Vx32 = $Vx32in";
33499 }
33500 def V6_vmpyiewuh_acc_alt : HInst<
33501 (outs HvxVR:$Vx32),
33502 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33503 "$Vx32 += vmpyiewuh($Vu32,$Vv32)",
33504 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33505 let hasNewValue = 1;
33506 let opNewValue = 0;
33507 let isAccumulator = 1;
33508 let isPseudo = 1;
33509 let isCodeGenOnly = 1;
33510 let DecoderNamespace = "EXT_mmvec";
33511 let Constraints = "$Vx32 = $Vx32in";
33512 }
33513 def V6_vmpyiewuh_alt : HInst<
33514 (outs HvxVR:$Vd32),
33515 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33516 "$Vd32 = vmpyiewuh($Vu32,$Vv32)",
33517 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33518 let hasNewValue = 1;
33519 let opNewValue = 0;
33520 let isPseudo = 1;
33521 let isCodeGenOnly = 1;
33522 let DecoderNamespace = "EXT_mmvec";
33523 }
33524 def V6_vmpyih : HInst<
33525 (outs HvxVR:$Vd32),
33526 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33527 "$Vd32.h = vmpyi($Vu32.h,$Vv32.h)",
33528 tc_eda67dcd, TypeCVI_VX_DV>, Enc_45364e, Requires<[UseHVXV60]> {
33529 let Inst{7-5} = 0b100;
33530 let Inst{13-13} = 0b0;
33531 let Inst{31-21} = 0b00011100001;
33532 let hasNewValue = 1;
33533 let opNewValue = 0;
33534 let DecoderNamespace = "EXT_mmvec";
33535 }
33536 def V6_vmpyih_acc : HInst<
33537 (outs HvxVR:$Vx32),
33538 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33539 "$Vx32.h += vmpyi($Vu32.h,$Vv32.h)",
33540 tc_e172d86a, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
33541 let Inst{7-5} = 0b100;
33542 let Inst{13-13} = 0b1;
33543 let Inst{31-21} = 0b00011100001;
33544 let hasNewValue = 1;
33545 let opNewValue = 0;
33546 let isAccumulator = 1;
33547 let DecoderNamespace = "EXT_mmvec";
33548 let Constraints = "$Vx32 = $Vx32in";
33549 }
33550 def V6_vmpyih_acc_alt : HInst<
33551 (outs HvxVR:$Vx32),
33552 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33553 "$Vx32 += vmpyih($Vu32,$Vv32)",
33554 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33555 let hasNewValue = 1;
33556 let opNewValue = 0;
33557 let isAccumulator = 1;
33558 let isPseudo = 1;
33559 let isCodeGenOnly = 1;
33560 let DecoderNamespace = "EXT_mmvec";
33561 let Constraints = "$Vx32 = $Vx32in";
33562 }
33563 def V6_vmpyih_alt : HInst<
33564 (outs HvxVR:$Vd32),
33565 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33566 "$Vd32 = vmpyih($Vu32,$Vv32)",
33567 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33568 let hasNewValue = 1;
33569 let opNewValue = 0;
33570 let isPseudo = 1;
33571 let isCodeGenOnly = 1;
33572 let DecoderNamespace = "EXT_mmvec";
33573 }
33574 def V6_vmpyihb : HInst<
33575 (outs HvxVR:$Vd32),
33576 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33577 "$Vd32.h = vmpyi($Vu32.h,$Rt32.b)",
33578 tc_69b6dd20, TypeCVI_VX>, Enc_b087ac, Requires<[UseHVXV60]> {
33579 let Inst{7-5} = 0b000;
33580 let Inst{13-13} = 0b0;
33581 let Inst{31-21} = 0b00011001011;
33582 let hasNewValue = 1;
33583 let opNewValue = 0;
33584 let DecoderNamespace = "EXT_mmvec";
33585 }
33586 def V6_vmpyihb_acc : HInst<
33587 (outs HvxVR:$Vx32),
33588 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33589 "$Vx32.h += vmpyi($Vu32.h,$Rt32.b)",
33590 tc_d725e5b0, TypeCVI_VX>, Enc_5138b3, Requires<[UseHVXV60]> {
33591 let Inst{7-5} = 0b001;
33592 let Inst{13-13} = 0b1;
33593 let Inst{31-21} = 0b00011001011;
33594 let hasNewValue = 1;
33595 let opNewValue = 0;
33596 let isAccumulator = 1;
33597 let DecoderNamespace = "EXT_mmvec";
33598 let Constraints = "$Vx32 = $Vx32in";
33599 }
33600 def V6_vmpyihb_acc_alt : HInst<
33601 (outs HvxVR:$Vx32),
33602 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33603 "$Vx32 += vmpyihb($Vu32,$Rt32)",
33604 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33605 let hasNewValue = 1;
33606 let opNewValue = 0;
33607 let isAccumulator = 1;
33608 let isPseudo = 1;
33609 let isCodeGenOnly = 1;
33610 let DecoderNamespace = "EXT_mmvec";
33611 let Constraints = "$Vx32 = $Vx32in";
33612 }
33613 def V6_vmpyihb_alt : HInst<
33614 (outs HvxVR:$Vd32),
33615 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33616 "$Vd32 = vmpyihb($Vu32,$Rt32)",
33617 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33618 let hasNewValue = 1;
33619 let opNewValue = 0;
33620 let isPseudo = 1;
33621 let isCodeGenOnly = 1;
33622 let DecoderNamespace = "EXT_mmvec";
33623 }
33624 def V6_vmpyiowh : HInst<
33625 (outs HvxVR:$Vd32),
33626 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33627 "$Vd32.w = vmpyio($Vu32.w,$Vv32.h)",
33628 tc_eda67dcd, TypeCVI_VX_DV>, Enc_45364e, Requires<[UseHVXV60]> {
33629 let Inst{7-5} = 0b001;
33630 let Inst{13-13} = 0b0;
33631 let Inst{31-21} = 0b00011111110;
33632 let hasNewValue = 1;
33633 let opNewValue = 0;
33634 let DecoderNamespace = "EXT_mmvec";
33635 }
33636 def V6_vmpyiowh_alt : HInst<
33637 (outs HvxVR:$Vd32),
33638 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33639 "$Vd32 = vmpyiowh($Vu32,$Vv32)",
33640 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33641 let hasNewValue = 1;
33642 let opNewValue = 0;
33643 let isPseudo = 1;
33644 let isCodeGenOnly = 1;
33645 let DecoderNamespace = "EXT_mmvec";
33646 }
33647 def V6_vmpyiwb : HInst<
33648 (outs HvxVR:$Vd32),
33649 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33650 "$Vd32.w = vmpyi($Vu32.w,$Rt32.b)",
33651 tc_69b6dd20, TypeCVI_VX>, Enc_b087ac, Requires<[UseHVXV60]> {
33652 let Inst{7-5} = 0b000;
33653 let Inst{13-13} = 0b0;
33654 let Inst{31-21} = 0b00011001101;
33655 let hasNewValue = 1;
33656 let opNewValue = 0;
33657 let DecoderNamespace = "EXT_mmvec";
33658 }
33659 def V6_vmpyiwb_acc : HInst<
33660 (outs HvxVR:$Vx32),
33661 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33662 "$Vx32.w += vmpyi($Vu32.w,$Rt32.b)",
33663 tc_d725e5b0, TypeCVI_VX>, Enc_5138b3, Requires<[UseHVXV60]> {
33664 let Inst{7-5} = 0b010;
33665 let Inst{13-13} = 0b1;
33666 let Inst{31-21} = 0b00011001010;
33667 let hasNewValue = 1;
33668 let opNewValue = 0;
33669 let isAccumulator = 1;
33670 let DecoderNamespace = "EXT_mmvec";
33671 let Constraints = "$Vx32 = $Vx32in";
33672 }
33673 def V6_vmpyiwb_acc_alt : HInst<
33674 (outs HvxVR:$Vx32),
33675 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33676 "$Vx32 += vmpyiwb($Vu32,$Rt32)",
33677 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33678 let hasNewValue = 1;
33679 let opNewValue = 0;
33680 let isAccumulator = 1;
33681 let isPseudo = 1;
33682 let isCodeGenOnly = 1;
33683 let DecoderNamespace = "EXT_mmvec";
33684 let Constraints = "$Vx32 = $Vx32in";
33685 }
33686 def V6_vmpyiwb_alt : HInst<
33687 (outs HvxVR:$Vd32),
33688 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33689 "$Vd32 = vmpyiwb($Vu32,$Rt32)",
33690 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33691 let hasNewValue = 1;
33692 let opNewValue = 0;
33693 let isPseudo = 1;
33694 let isCodeGenOnly = 1;
33695 let DecoderNamespace = "EXT_mmvec";
33696 }
33697 def V6_vmpyiwh : HInst<
33698 (outs HvxVR:$Vd32),
33699 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33700 "$Vd32.w = vmpyi($Vu32.w,$Rt32.h)",
33701 tc_7c3f55c4, TypeCVI_VX_DV>, Enc_b087ac, Requires<[UseHVXV60]> {
33702 let Inst{7-5} = 0b111;
33703 let Inst{13-13} = 0b0;
33704 let Inst{31-21} = 0b00011001100;
33705 let hasNewValue = 1;
33706 let opNewValue = 0;
33707 let DecoderNamespace = "EXT_mmvec";
33708 }
33709 def V6_vmpyiwh_acc : HInst<
33710 (outs HvxVR:$Vx32),
33711 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33712 "$Vx32.w += vmpyi($Vu32.w,$Rt32.h)",
33713 tc_d98f4d63, TypeCVI_VX_DV>, Enc_5138b3, Requires<[UseHVXV60]> {
33714 let Inst{7-5} = 0b011;
33715 let Inst{13-13} = 0b1;
33716 let Inst{31-21} = 0b00011001010;
33717 let hasNewValue = 1;
33718 let opNewValue = 0;
33719 let isAccumulator = 1;
33720 let DecoderNamespace = "EXT_mmvec";
33721 let Constraints = "$Vx32 = $Vx32in";
33722 }
33723 def V6_vmpyiwh_acc_alt : HInst<
33724 (outs HvxVR:$Vx32),
33725 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33726 "$Vx32 += vmpyiwh($Vu32,$Rt32)",
33727 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33728 let hasNewValue = 1;
33729 let opNewValue = 0;
33730 let isAccumulator = 1;
33731 let isPseudo = 1;
33732 let isCodeGenOnly = 1;
33733 let DecoderNamespace = "EXT_mmvec";
33734 let Constraints = "$Vx32 = $Vx32in";
33735 }
33736 def V6_vmpyiwh_alt : HInst<
33737 (outs HvxVR:$Vd32),
33738 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33739 "$Vd32 = vmpyiwh($Vu32,$Rt32)",
33740 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33741 let hasNewValue = 1;
33742 let opNewValue = 0;
33743 let isPseudo = 1;
33744 let isCodeGenOnly = 1;
33745 let DecoderNamespace = "EXT_mmvec";
33746 }
33747 def V6_vmpyiwub : HInst<
33748 (outs HvxVR:$Vd32),
33749 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33750 "$Vd32.w = vmpyi($Vu32.w,$Rt32.ub)",
33751 tc_69b6dd20, TypeCVI_VX>, Enc_b087ac, Requires<[UseHVXV62]> {
33752 let Inst{7-5} = 0b110;
33753 let Inst{13-13} = 0b0;
33754 let Inst{31-21} = 0b00011001100;
33755 let hasNewValue = 1;
33756 let opNewValue = 0;
33757 let DecoderNamespace = "EXT_mmvec";
33758 }
33759 def V6_vmpyiwub_acc : HInst<
33760 (outs HvxVR:$Vx32),
33761 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33762 "$Vx32.w += vmpyi($Vu32.w,$Rt32.ub)",
33763 tc_d725e5b0, TypeCVI_VX>, Enc_5138b3, Requires<[UseHVXV62]> {
33764 let Inst{7-5} = 0b001;
33765 let Inst{13-13} = 0b1;
33766 let Inst{31-21} = 0b00011001100;
33767 let hasNewValue = 1;
33768 let opNewValue = 0;
33769 let isAccumulator = 1;
33770 let DecoderNamespace = "EXT_mmvec";
33771 let Constraints = "$Vx32 = $Vx32in";
33772 }
33773 def V6_vmpyiwub_acc_alt : HInst<
33774 (outs HvxVR:$Vx32),
33775 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33776 "$Vx32 += vmpyiwub($Vu32,$Rt32)",
33777 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
33778 let hasNewValue = 1;
33779 let opNewValue = 0;
33780 let isAccumulator = 1;
33781 let isPseudo = 1;
33782 let isCodeGenOnly = 1;
33783 let DecoderNamespace = "EXT_mmvec";
33784 let Constraints = "$Vx32 = $Vx32in";
33785 }
33786 def V6_vmpyiwub_alt : HInst<
33787 (outs HvxVR:$Vd32),
33788 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33789 "$Vd32 = vmpyiwub($Vu32,$Rt32)",
33790 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
33791 let hasNewValue = 1;
33792 let opNewValue = 0;
33793 let isPseudo = 1;
33794 let isCodeGenOnly = 1;
33795 let DecoderNamespace = "EXT_mmvec";
33796 }
33797 def V6_vmpyowh : HInst<
33798 (outs HvxVR:$Vd32),
33799 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33800 "$Vd32.w = vmpyo($Vu32.w,$Vv32.h):<<1:sat",
33801 tc_eda67dcd, TypeCVI_VX_DV>, Enc_45364e, Requires<[UseHVXV60]> {
33802 let Inst{7-5} = 0b111;
33803 let Inst{13-13} = 0b0;
33804 let Inst{31-21} = 0b00011111111;
33805 let hasNewValue = 1;
33806 let opNewValue = 0;
33807 let DecoderNamespace = "EXT_mmvec";
33808 }
33809 def V6_vmpyowh_64_acc : HInst<
33810 (outs HvxWR:$Vxx32),
33811 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33812 "$Vxx32 += vmpyo($Vu32.w,$Vv32.h)",
33813 tc_e172d86a, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV62]> {
33814 let Inst{7-5} = 0b011;
33815 let Inst{13-13} = 0b1;
33816 let Inst{31-21} = 0b00011100001;
33817 let hasNewValue = 1;
33818 let opNewValue = 0;
33819 let isAccumulator = 1;
33820 let DecoderNamespace = "EXT_mmvec";
33821 let Constraints = "$Vxx32 = $Vxx32in";
33822 }
33823 def V6_vmpyowh_alt : HInst<
33824 (outs HvxVR:$Vd32),
33825 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33826 "$Vd32 = vmpyowh($Vu32,$Vv32):<<1:sat",
33827 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33828 let hasNewValue = 1;
33829 let opNewValue = 0;
33830 let isPseudo = 1;
33831 let isCodeGenOnly = 1;
33832 let DecoderNamespace = "EXT_mmvec";
33833 }
33834 def V6_vmpyowh_rnd : HInst<
33835 (outs HvxVR:$Vd32),
33836 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33837 "$Vd32.w = vmpyo($Vu32.w,$Vv32.h):<<1:rnd:sat",
33838 tc_eda67dcd, TypeCVI_VX_DV>, Enc_45364e, Requires<[UseHVXV60]> {
33839 let Inst{7-5} = 0b000;
33840 let Inst{13-13} = 0b0;
33841 let Inst{31-21} = 0b00011111010;
33842 let hasNewValue = 1;
33843 let opNewValue = 0;
33844 let DecoderNamespace = "EXT_mmvec";
33845 }
33846 def V6_vmpyowh_rnd_alt : HInst<
33847 (outs HvxVR:$Vd32),
33848 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33849 "$Vd32 = vmpyowh($Vu32,$Vv32):<<1:rnd:sat",
33850 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33851 let hasNewValue = 1;
33852 let opNewValue = 0;
33853 let isPseudo = 1;
33854 let isCodeGenOnly = 1;
33855 let DecoderNamespace = "EXT_mmvec";
33856 }
33857 def V6_vmpyowh_rnd_sacc : HInst<
33858 (outs HvxVR:$Vx32),
33859 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33860 "$Vx32.w += vmpyo($Vu32.w,$Vv32.h):<<1:rnd:sat:shift",
33861 tc_e172d86a, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
33862 let Inst{7-5} = 0b111;
33863 let Inst{13-13} = 0b1;
33864 let Inst{31-21} = 0b00011100001;
33865 let hasNewValue = 1;
33866 let opNewValue = 0;
33867 let isAccumulator = 1;
33868 let DecoderNamespace = "EXT_mmvec";
33869 let Constraints = "$Vx32 = $Vx32in";
33870 }
33871 def V6_vmpyowh_rnd_sacc_alt : HInst<
33872 (outs HvxVR:$Vx32),
33873 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33874 "$Vx32 += vmpyowh($Vu32,$Vv32):<<1:rnd:sat:shift",
33875 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33876 let hasNewValue = 1;
33877 let opNewValue = 0;
33878 let isAccumulator = 1;
33879 let isPseudo = 1;
33880 let DecoderNamespace = "EXT_mmvec";
33881 let Constraints = "$Vx32 = $Vx32in";
33882 }
33883 def V6_vmpyowh_sacc : HInst<
33884 (outs HvxVR:$Vx32),
33885 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33886 "$Vx32.w += vmpyo($Vu32.w,$Vv32.h):<<1:sat:shift",
33887 tc_e172d86a, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
33888 let Inst{7-5} = 0b110;
33889 let Inst{13-13} = 0b1;
33890 let Inst{31-21} = 0b00011100001;
33891 let hasNewValue = 1;
33892 let opNewValue = 0;
33893 let isAccumulator = 1;
33894 let DecoderNamespace = "EXT_mmvec";
33895 let Constraints = "$Vx32 = $Vx32in";
33896 }
33897 def V6_vmpyowh_sacc_alt : HInst<
33898 (outs HvxVR:$Vx32),
33899 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33900 "$Vx32 += vmpyowh($Vu32,$Vv32):<<1:sat:shift",
33901 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33902 let hasNewValue = 1;
33903 let opNewValue = 0;
33904 let isAccumulator = 1;
33905 let isPseudo = 1;
33906 let DecoderNamespace = "EXT_mmvec";
33907 let Constraints = "$Vx32 = $Vx32in";
33908 }
33909 def V6_vmpyub : HInst<
33910 (outs HvxWR:$Vdd32),
33911 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33912 "$Vdd32.uh = vmpy($Vu32.ub,$Rt32.ub)",
33913 tc_7c3f55c4, TypeCVI_VX_DV>, Enc_01d3d0, Requires<[UseHVXV60]> {
33914 let Inst{7-5} = 0b000;
33915 let Inst{13-13} = 0b0;
33916 let Inst{31-21} = 0b00011001110;
33917 let hasNewValue = 1;
33918 let opNewValue = 0;
33919 let DecoderNamespace = "EXT_mmvec";
33920 }
33921 def V6_vmpyub_acc : HInst<
33922 (outs HvxWR:$Vxx32),
33923 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33924 "$Vxx32.uh += vmpy($Vu32.ub,$Rt32.ub)",
33925 tc_d98f4d63, TypeCVI_VX_DV>, Enc_5e8512, Requires<[UseHVXV60]> {
33926 let Inst{7-5} = 0b000;
33927 let Inst{13-13} = 0b1;
33928 let Inst{31-21} = 0b00011001100;
33929 let hasNewValue = 1;
33930 let opNewValue = 0;
33931 let isAccumulator = 1;
33932 let DecoderNamespace = "EXT_mmvec";
33933 let Constraints = "$Vxx32 = $Vxx32in";
33934 }
33935 def V6_vmpyub_acc_alt : HInst<
33936 (outs HvxWR:$Vxx32),
33937 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33938 "$Vxx32 += vmpyub($Vu32,$Rt32)",
33939 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33940 let hasNewValue = 1;
33941 let opNewValue = 0;
33942 let isAccumulator = 1;
33943 let isPseudo = 1;
33944 let isCodeGenOnly = 1;
33945 let DecoderNamespace = "EXT_mmvec";
33946 let Constraints = "$Vxx32 = $Vxx32in";
33947 }
33948 def V6_vmpyub_alt : HInst<
33949 (outs HvxWR:$Vdd32),
33950 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33951 "$Vdd32 = vmpyub($Vu32,$Rt32)",
33952 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33953 let hasNewValue = 1;
33954 let opNewValue = 0;
33955 let isPseudo = 1;
33956 let isCodeGenOnly = 1;
33957 let DecoderNamespace = "EXT_mmvec";
33958 }
33959 def V6_vmpyubv : HInst<
33960 (outs HvxWR:$Vdd32),
33961 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33962 "$Vdd32.uh = vmpy($Vu32.ub,$Vv32.ub)",
33963 tc_eda67dcd, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
33964 let Inst{7-5} = 0b101;
33965 let Inst{13-13} = 0b0;
33966 let Inst{31-21} = 0b00011100000;
33967 let hasNewValue = 1;
33968 let opNewValue = 0;
33969 let DecoderNamespace = "EXT_mmvec";
33970 }
33971 def V6_vmpyubv_acc : HInst<
33972 (outs HvxWR:$Vxx32),
33973 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33974 "$Vxx32.uh += vmpy($Vu32.ub,$Vv32.ub)",
33975 tc_e172d86a, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV60]> {
33976 let Inst{7-5} = 0b101;
33977 let Inst{13-13} = 0b1;
33978 let Inst{31-21} = 0b00011100000;
33979 let hasNewValue = 1;
33980 let opNewValue = 0;
33981 let isAccumulator = 1;
33982 let DecoderNamespace = "EXT_mmvec";
33983 let Constraints = "$Vxx32 = $Vxx32in";
33984 }
33985 def V6_vmpyubv_acc_alt : HInst<
33986 (outs HvxWR:$Vxx32),
33987 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33988 "$Vxx32 += vmpyub($Vu32,$Vv32)",
33989 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33990 let hasNewValue = 1;
33991 let opNewValue = 0;
33992 let isAccumulator = 1;
33993 let isPseudo = 1;
33994 let isCodeGenOnly = 1;
33995 let DecoderNamespace = "EXT_mmvec";
33996 let Constraints = "$Vxx32 = $Vxx32in";
33997 }
33998 def V6_vmpyubv_alt : HInst<
33999 (outs HvxWR:$Vdd32),
34000 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34001 "$Vdd32 = vmpyub($Vu32,$Vv32)",
34002 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34003 let hasNewValue = 1;
34004 let opNewValue = 0;
34005 let isPseudo = 1;
34006 let isCodeGenOnly = 1;
34007 let DecoderNamespace = "EXT_mmvec";
34008 }
34009 def V6_vmpyuh : HInst<
34010 (outs HvxWR:$Vdd32),
34011 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34012 "$Vdd32.uw = vmpy($Vu32.uh,$Rt32.uh)",
34013 tc_7c3f55c4, TypeCVI_VX_DV>, Enc_01d3d0, Requires<[UseHVXV60]> {
34014 let Inst{7-5} = 0b011;
34015 let Inst{13-13} = 0b0;
34016 let Inst{31-21} = 0b00011001010;
34017 let hasNewValue = 1;
34018 let opNewValue = 0;
34019 let DecoderNamespace = "EXT_mmvec";
34020 }
34021 def V6_vmpyuh_acc : HInst<
34022 (outs HvxWR:$Vxx32),
34023 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34024 "$Vxx32.uw += vmpy($Vu32.uh,$Rt32.uh)",
34025 tc_d98f4d63, TypeCVI_VX_DV>, Enc_5e8512, Requires<[UseHVXV60]> {
34026 let Inst{7-5} = 0b001;
34027 let Inst{13-13} = 0b1;
34028 let Inst{31-21} = 0b00011001010;
34029 let hasNewValue = 1;
34030 let opNewValue = 0;
34031 let isAccumulator = 1;
34032 let DecoderNamespace = "EXT_mmvec";
34033 let Constraints = "$Vxx32 = $Vxx32in";
34034 }
34035 def V6_vmpyuh_acc_alt : HInst<
34036 (outs HvxWR:$Vxx32),
34037 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34038 "$Vxx32 += vmpyuh($Vu32,$Rt32)",
34039 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34040 let hasNewValue = 1;
34041 let opNewValue = 0;
34042 let isAccumulator = 1;
34043 let isPseudo = 1;
34044 let isCodeGenOnly = 1;
34045 let DecoderNamespace = "EXT_mmvec";
34046 let Constraints = "$Vxx32 = $Vxx32in";
34047 }
34048 def V6_vmpyuh_alt : HInst<
34049 (outs HvxWR:$Vdd32),
34050 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34051 "$Vdd32 = vmpyuh($Vu32,$Rt32)",
34052 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34053 let hasNewValue = 1;
34054 let opNewValue = 0;
34055 let isPseudo = 1;
34056 let isCodeGenOnly = 1;
34057 let DecoderNamespace = "EXT_mmvec";
34058 }
34059 def V6_vmpyuhe : HInst<
34060 (outs HvxVR:$Vd32),
34061 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34062 "$Vd32.uw = vmpye($Vu32.uh,$Rt32.uh)",
34063 tc_69b6dd20, TypeCVI_VX>, Enc_b087ac, Requires<[UseHVXV65]> {
34064 let Inst{7-5} = 0b010;
34065 let Inst{13-13} = 0b0;
34066 let Inst{31-21} = 0b00011001011;
34067 let hasNewValue = 1;
34068 let opNewValue = 0;
34069 let DecoderNamespace = "EXT_mmvec";
34070 }
34071 def V6_vmpyuhe_acc : HInst<
34072 (outs HvxVR:$Vx32),
34073 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34074 "$Vx32.uw += vmpye($Vu32.uh,$Rt32.uh)",
34075 tc_d725e5b0, TypeCVI_VX>, Enc_5138b3, Requires<[UseHVXV65]> {
34076 let Inst{7-5} = 0b011;
34077 let Inst{13-13} = 0b1;
34078 let Inst{31-21} = 0b00011001100;
34079 let hasNewValue = 1;
34080 let opNewValue = 0;
34081 let isAccumulator = 1;
34082 let DecoderNamespace = "EXT_mmvec";
34083 let Constraints = "$Vx32 = $Vx32in";
34084 }
34085 def V6_vmpyuhv : HInst<
34086 (outs HvxWR:$Vdd32),
34087 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34088 "$Vdd32.uw = vmpy($Vu32.uh,$Vv32.uh)",
34089 tc_eda67dcd, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
34090 let Inst{7-5} = 0b000;
34091 let Inst{13-13} = 0b0;
34092 let Inst{31-21} = 0b00011100001;
34093 let hasNewValue = 1;
34094 let opNewValue = 0;
34095 let DecoderNamespace = "EXT_mmvec";
34096 }
34097 def V6_vmpyuhv_acc : HInst<
34098 (outs HvxWR:$Vxx32),
34099 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34100 "$Vxx32.uw += vmpy($Vu32.uh,$Vv32.uh)",
34101 tc_e172d86a, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV60]> {
34102 let Inst{7-5} = 0b000;
34103 let Inst{13-13} = 0b1;
34104 let Inst{31-21} = 0b00011100001;
34105 let hasNewValue = 1;
34106 let opNewValue = 0;
34107 let isAccumulator = 1;
34108 let DecoderNamespace = "EXT_mmvec";
34109 let Constraints = "$Vxx32 = $Vxx32in";
34110 }
34111 def V6_vmpyuhv_acc_alt : HInst<
34112 (outs HvxWR:$Vxx32),
34113 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34114 "$Vxx32 += vmpyuh($Vu32,$Vv32)",
34115 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34116 let hasNewValue = 1;
34117 let opNewValue = 0;
34118 let isAccumulator = 1;
34119 let isPseudo = 1;
34120 let isCodeGenOnly = 1;
34121 let DecoderNamespace = "EXT_mmvec";
34122 let Constraints = "$Vxx32 = $Vxx32in";
34123 }
34124 def V6_vmpyuhv_alt : HInst<
34125 (outs HvxWR:$Vdd32),
34126 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34127 "$Vdd32 = vmpyuh($Vu32,$Vv32)",
34128 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34129 let hasNewValue = 1;
34130 let opNewValue = 0;
34131 let isPseudo = 1;
34132 let isCodeGenOnly = 1;
34133 let DecoderNamespace = "EXT_mmvec";
34134 }
34135 def V6_vmux : HInst<
34136 (outs HvxVR:$Vd32),
34137 (ins HvxQR:$Qt4, HvxVR:$Vu32, HvxVR:$Vv32),
34138 "$Vd32 = vmux($Qt4,$Vu32,$Vv32)",
34139 tc_a3127e12, TypeCVI_VA>, Enc_31db33, Requires<[UseHVXV60]> {
34140 let Inst{7-7} = 0b0;
34141 let Inst{13-13} = 0b1;
34142 let Inst{31-21} = 0b00011110111;
34143 let hasNewValue = 1;
34144 let opNewValue = 0;
34145 let DecoderNamespace = "EXT_mmvec";
34146 }
34147 def V6_vnavgb : HInst<
34148 (outs HvxVR:$Vd32),
34149 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34150 "$Vd32.b = vnavg($Vu32.b,$Vv32.b)",
34151 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV65]> {
34152 let Inst{7-5} = 0b110;
34153 let Inst{13-13} = 0b1;
34154 let Inst{31-21} = 0b00011111000;
34155 let hasNewValue = 1;
34156 let opNewValue = 0;
34157 let DecoderNamespace = "EXT_mmvec";
34158 }
34159 def V6_vnavgb_alt : HInst<
34160 (outs HvxVR:$Vd32),
34161 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34162 "$Vd32 = vnavgb($Vu32,$Vv32)",
34163 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
34164 let hasNewValue = 1;
34165 let opNewValue = 0;
34166 let isPseudo = 1;
34167 let isCodeGenOnly = 1;
34168 let DecoderNamespace = "EXT_mmvec";
34169 }
34170 def V6_vnavgh : HInst<
34171 (outs HvxVR:$Vd32),
34172 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34173 "$Vd32.h = vnavg($Vu32.h,$Vv32.h)",
34174 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
34175 let Inst{7-5} = 0b001;
34176 let Inst{13-13} = 0b0;
34177 let Inst{31-21} = 0b00011100111;
34178 let hasNewValue = 1;
34179 let opNewValue = 0;
34180 let DecoderNamespace = "EXT_mmvec";
34181 }
34182 def V6_vnavgh_alt : HInst<
34183 (outs HvxVR:$Vd32),
34184 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34185 "$Vd32 = vnavgh($Vu32,$Vv32)",
34186 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34187 let hasNewValue = 1;
34188 let opNewValue = 0;
34189 let isPseudo = 1;
34190 let isCodeGenOnly = 1;
34191 let DecoderNamespace = "EXT_mmvec";
34192 }
34193 def V6_vnavgub : HInst<
34194 (outs HvxVR:$Vd32),
34195 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34196 "$Vd32.b = vnavg($Vu32.ub,$Vv32.ub)",
34197 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
34198 let Inst{7-5} = 0b000;
34199 let Inst{13-13} = 0b0;
34200 let Inst{31-21} = 0b00011100111;
34201 let hasNewValue = 1;
34202 let opNewValue = 0;
34203 let DecoderNamespace = "EXT_mmvec";
34204 }
34205 def V6_vnavgub_alt : HInst<
34206 (outs HvxVR:$Vd32),
34207 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34208 "$Vd32 = vnavgub($Vu32,$Vv32)",
34209 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34210 let hasNewValue = 1;
34211 let opNewValue = 0;
34212 let isPseudo = 1;
34213 let isCodeGenOnly = 1;
34214 let DecoderNamespace = "EXT_mmvec";
34215 }
34216 def V6_vnavgw : HInst<
34217 (outs HvxVR:$Vd32),
34218 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34219 "$Vd32.w = vnavg($Vu32.w,$Vv32.w)",
34220 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
34221 let Inst{7-5} = 0b010;
34222 let Inst{13-13} = 0b0;
34223 let Inst{31-21} = 0b00011100111;
34224 let hasNewValue = 1;
34225 let opNewValue = 0;
34226 let DecoderNamespace = "EXT_mmvec";
34227 }
34228 def V6_vnavgw_alt : HInst<
34229 (outs HvxVR:$Vd32),
34230 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34231 "$Vd32 = vnavgw($Vu32,$Vv32)",
34232 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34233 let hasNewValue = 1;
34234 let opNewValue = 0;
34235 let isPseudo = 1;
34236 let isCodeGenOnly = 1;
34237 let DecoderNamespace = "EXT_mmvec";
34238 }
34239 def V6_vnccombine : HInst<
34240 (outs HvxWR:$Vdd32),
34241 (ins PredRegs:$Ps4, HvxVR:$Vu32, HvxVR:$Vv32),
34242 "if (!$Ps4) $Vdd32 = vcombine($Vu32,$Vv32)",
34243 tc_2171ebae, TypeCVI_VA_DV>, Enc_8c2412, Requires<[UseHVXV60]> {
34244 let Inst{7-7} = 0b0;
34245 let Inst{13-13} = 0b0;
34246 let Inst{31-21} = 0b00011010010;
34247 let isPredicated = 1;
34248 let isPredicatedFalse = 1;
34249 let hasNewValue = 1;
34250 let opNewValue = 0;
34251 let DecoderNamespace = "EXT_mmvec";
34252 }
34253 def V6_vncmov : HInst<
34254 (outs HvxVR:$Vd32),
34255 (ins PredRegs:$Ps4, HvxVR:$Vu32),
34256 "if (!$Ps4) $Vd32 = $Vu32",
34257 tc_b06ab583, TypeCVI_VA>, Enc_770858, Requires<[UseHVXV60]> {
34258 let Inst{7-7} = 0b0;
34259 let Inst{13-13} = 0b0;
34260 let Inst{31-16} = 0b0001101000100000;
34261 let isPredicated = 1;
34262 let isPredicatedFalse = 1;
34263 let hasNewValue = 1;
34264 let opNewValue = 0;
34265 let DecoderNamespace = "EXT_mmvec";
34266 }
34267 def V6_vnormamth : HInst<
34268 (outs HvxVR:$Vd32),
34269 (ins HvxVR:$Vu32),
34270 "$Vd32.h = vnormamt($Vu32.h)",
34271 tc_d2cb81ea, TypeCVI_VS>, Enc_e7581c, Requires<[UseHVXV60]> {
34272 let Inst{7-5} = 0b101;
34273 let Inst{13-13} = 0b0;
34274 let Inst{31-16} = 0b0001111000000011;
34275 let hasNewValue = 1;
34276 let opNewValue = 0;
34277 let DecoderNamespace = "EXT_mmvec";
34278 }
34279 def V6_vnormamth_alt : HInst<
34280 (outs HvxVR:$Vd32),
34281 (ins HvxVR:$Vu32),
34282 "$Vd32 = vnormamth($Vu32)",
34283 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34284 let hasNewValue = 1;
34285 let opNewValue = 0;
34286 let isPseudo = 1;
34287 let isCodeGenOnly = 1;
34288 let DecoderNamespace = "EXT_mmvec";
34289 }
34290 def V6_vnormamtw : HInst<
34291 (outs HvxVR:$Vd32),
34292 (ins HvxVR:$Vu32),
34293 "$Vd32.w = vnormamt($Vu32.w)",
34294 tc_d2cb81ea, TypeCVI_VS>, Enc_e7581c, Requires<[UseHVXV60]> {
34295 let Inst{7-5} = 0b100;
34296 let Inst{13-13} = 0b0;
34297 let Inst{31-16} = 0b0001111000000011;
34298 let hasNewValue = 1;
34299 let opNewValue = 0;
34300 let DecoderNamespace = "EXT_mmvec";
34301 }
34302 def V6_vnormamtw_alt : HInst<
34303 (outs HvxVR:$Vd32),
34304 (ins HvxVR:$Vu32),
34305 "$Vd32 = vnormamtw($Vu32)",
34306 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34307 let hasNewValue = 1;
34308 let opNewValue = 0;
34309 let isPseudo = 1;
34310 let isCodeGenOnly = 1;
34311 let DecoderNamespace = "EXT_mmvec";
34312 }
34313 def V6_vnot : HInst<
34314 (outs HvxVR:$Vd32),
34315 (ins HvxVR:$Vu32),
34316 "$Vd32 = vnot($Vu32)",
34317 tc_71337255, TypeCVI_VA>, Enc_e7581c, Requires<[UseHVXV60]> {
34318 let Inst{7-5} = 0b100;
34319 let Inst{13-13} = 0b0;
34320 let Inst{31-16} = 0b0001111000000000;
34321 let hasNewValue = 1;
34322 let opNewValue = 0;
34323 let DecoderNamespace = "EXT_mmvec";
34324 }
34325 def V6_vor : HInst<
34326 (outs HvxVR:$Vd32),
34327 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34328 "$Vd32 = vor($Vu32,$Vv32)",
34329 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
34330 let Inst{7-5} = 0b110;
34331 let Inst{13-13} = 0b0;
34332 let Inst{31-21} = 0b00011100001;
34333 let hasNewValue = 1;
34334 let opNewValue = 0;
34335 let DecoderNamespace = "EXT_mmvec";
34336 }
34337 def V6_vpackeb : HInst<
34338 (outs HvxVR:$Vd32),
34339 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34340 "$Vd32.b = vpacke($Vu32.h,$Vv32.h)",
34341 tc_f3fc3f83, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
34342 let Inst{7-5} = 0b010;
34343 let Inst{13-13} = 0b0;
34344 let Inst{31-21} = 0b00011111110;
34345 let hasNewValue = 1;
34346 let opNewValue = 0;
34347 let DecoderNamespace = "EXT_mmvec";
34348 }
34349 def V6_vpackeb_alt : HInst<
34350 (outs HvxVR:$Vd32),
34351 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34352 "$Vd32 = vpackeb($Vu32,$Vv32)",
34353 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34354 let hasNewValue = 1;
34355 let opNewValue = 0;
34356 let isPseudo = 1;
34357 let isCodeGenOnly = 1;
34358 let DecoderNamespace = "EXT_mmvec";
34359 }
34360 def V6_vpackeh : HInst<
34361 (outs HvxVR:$Vd32),
34362 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34363 "$Vd32.h = vpacke($Vu32.w,$Vv32.w)",
34364 tc_f3fc3f83, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
34365 let Inst{7-5} = 0b011;
34366 let Inst{13-13} = 0b0;
34367 let Inst{31-21} = 0b00011111110;
34368 let hasNewValue = 1;
34369 let opNewValue = 0;
34370 let DecoderNamespace = "EXT_mmvec";
34371 }
34372 def V6_vpackeh_alt : HInst<
34373 (outs HvxVR:$Vd32),
34374 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34375 "$Vd32 = vpackeh($Vu32,$Vv32)",
34376 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34377 let hasNewValue = 1;
34378 let opNewValue = 0;
34379 let isPseudo = 1;
34380 let isCodeGenOnly = 1;
34381 let DecoderNamespace = "EXT_mmvec";
34382 }
34383 def V6_vpackhb_sat : HInst<
34384 (outs HvxVR:$Vd32),
34385 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34386 "$Vd32.b = vpack($Vu32.h,$Vv32.h):sat",
34387 tc_f3fc3f83, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
34388 let Inst{7-5} = 0b110;
34389 let Inst{13-13} = 0b0;
34390 let Inst{31-21} = 0b00011111110;
34391 let hasNewValue = 1;
34392 let opNewValue = 0;
34393 let DecoderNamespace = "EXT_mmvec";
34394 }
34395 def V6_vpackhb_sat_alt : HInst<
34396 (outs HvxVR:$Vd32),
34397 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34398 "$Vd32 = vpackhb($Vu32,$Vv32):sat",
34399 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34400 let hasNewValue = 1;
34401 let opNewValue = 0;
34402 let isPseudo = 1;
34403 let isCodeGenOnly = 1;
34404 let DecoderNamespace = "EXT_mmvec";
34405 }
34406 def V6_vpackhub_sat : HInst<
34407 (outs HvxVR:$Vd32),
34408 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34409 "$Vd32.ub = vpack($Vu32.h,$Vv32.h):sat",
34410 tc_f3fc3f83, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
34411 let Inst{7-5} = 0b101;
34412 let Inst{13-13} = 0b0;
34413 let Inst{31-21} = 0b00011111110;
34414 let hasNewValue = 1;
34415 let opNewValue = 0;
34416 let DecoderNamespace = "EXT_mmvec";
34417 }
34418 def V6_vpackhub_sat_alt : HInst<
34419 (outs HvxVR:$Vd32),
34420 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34421 "$Vd32 = vpackhub($Vu32,$Vv32):sat",
34422 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34423 let hasNewValue = 1;
34424 let opNewValue = 0;
34425 let isPseudo = 1;
34426 let isCodeGenOnly = 1;
34427 let DecoderNamespace = "EXT_mmvec";
34428 }
34429 def V6_vpackob : HInst<
34430 (outs HvxVR:$Vd32),
34431 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34432 "$Vd32.b = vpacko($Vu32.h,$Vv32.h)",
34433 tc_f3fc3f83, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
34434 let Inst{7-5} = 0b001;
34435 let Inst{13-13} = 0b0;
34436 let Inst{31-21} = 0b00011111111;
34437 let hasNewValue = 1;
34438 let opNewValue = 0;
34439 let DecoderNamespace = "EXT_mmvec";
34440 }
34441 def V6_vpackob_alt : HInst<
34442 (outs HvxVR:$Vd32),
34443 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34444 "$Vd32 = vpackob($Vu32,$Vv32)",
34445 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34446 let hasNewValue = 1;
34447 let opNewValue = 0;
34448 let isPseudo = 1;
34449 let isCodeGenOnly = 1;
34450 let DecoderNamespace = "EXT_mmvec";
34451 }
34452 def V6_vpackoh : HInst<
34453 (outs HvxVR:$Vd32),
34454 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34455 "$Vd32.h = vpacko($Vu32.w,$Vv32.w)",
34456 tc_f3fc3f83, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
34457 let Inst{7-5} = 0b010;
34458 let Inst{13-13} = 0b0;
34459 let Inst{31-21} = 0b00011111111;
34460 let hasNewValue = 1;
34461 let opNewValue = 0;
34462 let DecoderNamespace = "EXT_mmvec";
34463 }
34464 def V6_vpackoh_alt : HInst<
34465 (outs HvxVR:$Vd32),
34466 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34467 "$Vd32 = vpackoh($Vu32,$Vv32)",
34468 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34469 let hasNewValue = 1;
34470 let opNewValue = 0;
34471 let isPseudo = 1;
34472 let isCodeGenOnly = 1;
34473 let DecoderNamespace = "EXT_mmvec";
34474 }
34475 def V6_vpackwh_sat : HInst<
34476 (outs HvxVR:$Vd32),
34477 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34478 "$Vd32.h = vpack($Vu32.w,$Vv32.w):sat",
34479 tc_f3fc3f83, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
34480 let Inst{7-5} = 0b000;
34481 let Inst{13-13} = 0b0;
34482 let Inst{31-21} = 0b00011111111;
34483 let hasNewValue = 1;
34484 let opNewValue = 0;
34485 let DecoderNamespace = "EXT_mmvec";
34486 }
34487 def V6_vpackwh_sat_alt : HInst<
34488 (outs HvxVR:$Vd32),
34489 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34490 "$Vd32 = vpackwh($Vu32,$Vv32):sat",
34491 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34492 let hasNewValue = 1;
34493 let opNewValue = 0;
34494 let isPseudo = 1;
34495 let isCodeGenOnly = 1;
34496 let DecoderNamespace = "EXT_mmvec";
34497 }
34498 def V6_vpackwuh_sat : HInst<
34499 (outs HvxVR:$Vd32),
34500 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34501 "$Vd32.uh = vpack($Vu32.w,$Vv32.w):sat",
34502 tc_f3fc3f83, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
34503 let Inst{7-5} = 0b111;
34504 let Inst{13-13} = 0b0;
34505 let Inst{31-21} = 0b00011111110;
34506 let hasNewValue = 1;
34507 let opNewValue = 0;
34508 let DecoderNamespace = "EXT_mmvec";
34509 }
34510 def V6_vpackwuh_sat_alt : HInst<
34511 (outs HvxVR:$Vd32),
34512 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34513 "$Vd32 = vpackwuh($Vu32,$Vv32):sat",
34514 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34515 let hasNewValue = 1;
34516 let opNewValue = 0;
34517 let isPseudo = 1;
34518 let isCodeGenOnly = 1;
34519 let DecoderNamespace = "EXT_mmvec";
34520 }
34521 def V6_vpopcounth : HInst<
34522 (outs HvxVR:$Vd32),
34523 (ins HvxVR:$Vu32),
34524 "$Vd32.h = vpopcount($Vu32.h)",
34525 tc_d2cb81ea, TypeCVI_VS>, Enc_e7581c, Requires<[UseHVXV60]> {
34526 let Inst{7-5} = 0b110;
34527 let Inst{13-13} = 0b0;
34528 let Inst{31-16} = 0b0001111000000010;
34529 let hasNewValue = 1;
34530 let opNewValue = 0;
34531 let DecoderNamespace = "EXT_mmvec";
34532 }
34533 def V6_vpopcounth_alt : HInst<
34534 (outs HvxVR:$Vd32),
34535 (ins HvxVR:$Vu32),
34536 "$Vd32 = vpopcounth($Vu32)",
34537 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34538 let hasNewValue = 1;
34539 let opNewValue = 0;
34540 let isPseudo = 1;
34541 let isCodeGenOnly = 1;
34542 let DecoderNamespace = "EXT_mmvec";
34543 }
34544 def V6_vprefixqb : HInst<
34545 (outs HvxVR:$Vd32),
34546 (ins HvxQR:$Qv4),
34547 "$Vd32.b = prefixsum($Qv4)",
34548 tc_d2cb81ea, TypeCVI_VS>, Enc_6f83e7, Requires<[UseHVXV65]> {
34549 let Inst{13-5} = 0b100000010;
34550 let Inst{21-16} = 0b000011;
34551 let Inst{31-24} = 0b00011110;
34552 let hasNewValue = 1;
34553 let opNewValue = 0;
34554 let DecoderNamespace = "EXT_mmvec";
34555 }
34556 def V6_vprefixqh : HInst<
34557 (outs HvxVR:$Vd32),
34558 (ins HvxQR:$Qv4),
34559 "$Vd32.h = prefixsum($Qv4)",
34560 tc_d2cb81ea, TypeCVI_VS>, Enc_6f83e7, Requires<[UseHVXV65]> {
34561 let Inst{13-5} = 0b100001010;
34562 let Inst{21-16} = 0b000011;
34563 let Inst{31-24} = 0b00011110;
34564 let hasNewValue = 1;
34565 let opNewValue = 0;
34566 let DecoderNamespace = "EXT_mmvec";
34567 }
34568 def V6_vprefixqw : HInst<
34569 (outs HvxVR:$Vd32),
34570 (ins HvxQR:$Qv4),
34571 "$Vd32.w = prefixsum($Qv4)",
34572 tc_d2cb81ea, TypeCVI_VS>, Enc_6f83e7, Requires<[UseHVXV65]> {
34573 let Inst{13-5} = 0b100010010;
34574 let Inst{21-16} = 0b000011;
34575 let Inst{31-24} = 0b00011110;
34576 let hasNewValue = 1;
34577 let opNewValue = 0;
34578 let DecoderNamespace = "EXT_mmvec";
34579 }
34580 def V6_vrdelta : HInst<
34581 (outs HvxVR:$Vd32),
34582 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34583 "$Vd32 = vrdelta($Vu32,$Vv32)",
34584 tc_f3fc3f83, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
34585 let Inst{7-5} = 0b011;
34586 let Inst{13-13} = 0b0;
34587 let Inst{31-21} = 0b00011111001;
34588 let hasNewValue = 1;
34589 let opNewValue = 0;
34590 let DecoderNamespace = "EXT_mmvec";
34591 }
34592 def V6_vrmpybub_rtt : HInst<
34593 (outs HvxWR:$Vdd32),
34594 (ins HvxVR:$Vu32, DoubleRegs:$Rtt32),
34595 "$Vdd32.w = vrmpy($Vu32.b,$Rtt32.ub)",
34596 tc_a807365d, TypeCVI_VS_VX>, Enc_cb785b, Requires<[UseHVXV65]> {
34597 let Inst{7-5} = 0b101;
34598 let Inst{13-13} = 0b0;
34599 let Inst{31-21} = 0b00011001110;
34600 let hasNewValue = 1;
34601 let opNewValue = 0;
34602 let DecoderNamespace = "EXT_mmvec";
34603 }
34604 def V6_vrmpybub_rtt_acc : HInst<
34605 (outs HvxWR:$Vxx32),
34606 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, DoubleRegs:$Rtt32),
34607 "$Vxx32.w += vrmpy($Vu32.b,$Rtt32.ub)",
34608 tc_ee927c0e, TypeCVI_VS_VX>, Enc_ad9bef, Requires<[UseHVXV65]> {
34609 let Inst{7-5} = 0b000;
34610 let Inst{13-13} = 0b1;
34611 let Inst{31-21} = 0b00011001101;
34612 let hasNewValue = 1;
34613 let opNewValue = 0;
34614 let isAccumulator = 1;
34615 let DecoderNamespace = "EXT_mmvec";
34616 let Constraints = "$Vxx32 = $Vxx32in";
34617 }
34618 def V6_vrmpybub_rtt_acc_alt : HInst<
34619 (outs HvxWR:$Vxx32),
34620 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, DoubleRegs:$Rtt32),
34621 "$Vxx32.w += vrmpy($Vu32.b,$Rtt32.ub)",
34622 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
34623 let hasNewValue = 1;
34624 let opNewValue = 0;
34625 let isAccumulator = 1;
34626 let isPseudo = 1;
34627 let isCodeGenOnly = 1;
34628 let DecoderNamespace = "EXT_mmvec";
34629 let Constraints = "$Vxx32 = $Vxx32in";
34630 }
34631 def V6_vrmpybub_rtt_alt : HInst<
34632 (outs HvxWR:$Vdd32),
34633 (ins HvxVR:$Vu32, DoubleRegs:$Rtt32),
34634 "$Vdd32.w = vrmpy($Vu32.b,$Rtt32.ub)",
34635 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
34636 let hasNewValue = 1;
34637 let opNewValue = 0;
34638 let isPseudo = 1;
34639 let isCodeGenOnly = 1;
34640 let DecoderNamespace = "EXT_mmvec";
34641 }
34642 def V6_vrmpybus : HInst<
34643 (outs HvxVR:$Vd32),
34644 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34645 "$Vd32.w = vrmpy($Vu32.ub,$Rt32.b)",
34646 tc_69b6dd20, TypeCVI_VX>, Enc_b087ac, Requires<[UseHVXV60]> {
34647 let Inst{7-5} = 0b100;
34648 let Inst{13-13} = 0b0;
34649 let Inst{31-21} = 0b00011001000;
34650 let hasNewValue = 1;
34651 let opNewValue = 0;
34652 let DecoderNamespace = "EXT_mmvec";
34653 }
34654 def V6_vrmpybus_acc : HInst<
34655 (outs HvxVR:$Vx32),
34656 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34657 "$Vx32.w += vrmpy($Vu32.ub,$Rt32.b)",
34658 tc_d725e5b0, TypeCVI_VX>, Enc_5138b3, Requires<[UseHVXV60]> {
34659 let Inst{7-5} = 0b101;
34660 let Inst{13-13} = 0b1;
34661 let Inst{31-21} = 0b00011001000;
34662 let hasNewValue = 1;
34663 let opNewValue = 0;
34664 let isAccumulator = 1;
34665 let DecoderNamespace = "EXT_mmvec";
34666 let Constraints = "$Vx32 = $Vx32in";
34667 }
34668 def V6_vrmpybus_acc_alt : HInst<
34669 (outs HvxVR:$Vx32),
34670 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34671 "$Vx32 += vrmpybus($Vu32,$Rt32)",
34672 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34673 let hasNewValue = 1;
34674 let opNewValue = 0;
34675 let isAccumulator = 1;
34676 let isPseudo = 1;
34677 let isCodeGenOnly = 1;
34678 let DecoderNamespace = "EXT_mmvec";
34679 let Constraints = "$Vx32 = $Vx32in";
34680 }
34681 def V6_vrmpybus_alt : HInst<
34682 (outs HvxVR:$Vd32),
34683 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34684 "$Vd32 = vrmpybus($Vu32,$Rt32)",
34685 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34686 let hasNewValue = 1;
34687 let opNewValue = 0;
34688 let isPseudo = 1;
34689 let isCodeGenOnly = 1;
34690 let DecoderNamespace = "EXT_mmvec";
34691 }
34692 def V6_vrmpybusi : HInst<
34693 (outs HvxWR:$Vdd32),
34694 (ins HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
34695 "$Vdd32.w = vrmpy($Vuu32.ub,$Rt32.b,#$Ii)",
34696 tc_7e9f581b, TypeCVI_VX_DV>, Enc_2f2f04, Requires<[UseHVXV60]> {
34697 let Inst{7-6} = 0b10;
34698 let Inst{13-13} = 0b0;
34699 let Inst{31-21} = 0b00011001010;
34700 let hasNewValue = 1;
34701 let opNewValue = 0;
34702 let DecoderNamespace = "EXT_mmvec";
34703 }
34704 def V6_vrmpybusi_acc : HInst<
34705 (outs HvxWR:$Vxx32),
34706 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
34707 "$Vxx32.w += vrmpy($Vuu32.ub,$Rt32.b,#$Ii)",
34708 tc_41f99e1c, TypeCVI_VX_DV>, Enc_d483b9, Requires<[UseHVXV60]> {
34709 let Inst{7-6} = 0b10;
34710 let Inst{13-13} = 0b1;
34711 let Inst{31-21} = 0b00011001010;
34712 let hasNewValue = 1;
34713 let opNewValue = 0;
34714 let isAccumulator = 1;
34715 let DecoderNamespace = "EXT_mmvec";
34716 let Constraints = "$Vxx32 = $Vxx32in";
34717 }
34718 def V6_vrmpybusi_acc_alt : HInst<
34719 (outs HvxWR:$Vxx32),
34720 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
34721 "$Vxx32 += vrmpybus($Vuu32,$Rt32,#$Ii)",
34722 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34723 let hasNewValue = 1;
34724 let opNewValue = 0;
34725 let isAccumulator = 1;
34726 let isPseudo = 1;
34727 let isCodeGenOnly = 1;
34728 let DecoderNamespace = "EXT_mmvec";
34729 let Constraints = "$Vxx32 = $Vxx32in";
34730 }
34731 def V6_vrmpybusi_alt : HInst<
34732 (outs HvxWR:$Vdd32),
34733 (ins HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
34734 "$Vdd32 = vrmpybus($Vuu32,$Rt32,#$Ii)",
34735 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34736 let hasNewValue = 1;
34737 let opNewValue = 0;
34738 let isPseudo = 1;
34739 let isCodeGenOnly = 1;
34740 let DecoderNamespace = "EXT_mmvec";
34741 }
34742 def V6_vrmpybusv : HInst<
34743 (outs HvxVR:$Vd32),
34744 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34745 "$Vd32.w = vrmpy($Vu32.ub,$Vv32.b)",
34746 tc_908a4c8c, TypeCVI_VX>, Enc_45364e, Requires<[UseHVXV60]> {
34747 let Inst{7-5} = 0b010;
34748 let Inst{13-13} = 0b0;
34749 let Inst{31-21} = 0b00011100000;
34750 let hasNewValue = 1;
34751 let opNewValue = 0;
34752 let DecoderNamespace = "EXT_mmvec";
34753 }
34754 def V6_vrmpybusv_acc : HInst<
34755 (outs HvxVR:$Vx32),
34756 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34757 "$Vx32.w += vrmpy($Vu32.ub,$Vv32.b)",
34758 tc_e172d86a, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
34759 let Inst{7-5} = 0b010;
34760 let Inst{13-13} = 0b1;
34761 let Inst{31-21} = 0b00011100000;
34762 let hasNewValue = 1;
34763 let opNewValue = 0;
34764 let isAccumulator = 1;
34765 let DecoderNamespace = "EXT_mmvec";
34766 let Constraints = "$Vx32 = $Vx32in";
34767 }
34768 def V6_vrmpybusv_acc_alt : HInst<
34769 (outs HvxVR:$Vx32),
34770 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34771 "$Vx32 += vrmpybus($Vu32,$Vv32)",
34772 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34773 let hasNewValue = 1;
34774 let opNewValue = 0;
34775 let isAccumulator = 1;
34776 let isPseudo = 1;
34777 let isCodeGenOnly = 1;
34778 let DecoderNamespace = "EXT_mmvec";
34779 let Constraints = "$Vx32 = $Vx32in";
34780 }
34781 def V6_vrmpybusv_alt : HInst<
34782 (outs HvxVR:$Vd32),
34783 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34784 "$Vd32 = vrmpybus($Vu32,$Vv32)",
34785 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34786 let hasNewValue = 1;
34787 let opNewValue = 0;
34788 let isPseudo = 1;
34789 let isCodeGenOnly = 1;
34790 let DecoderNamespace = "EXT_mmvec";
34791 }
34792 def V6_vrmpybv : HInst<
34793 (outs HvxVR:$Vd32),
34794 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34795 "$Vd32.w = vrmpy($Vu32.b,$Vv32.b)",
34796 tc_908a4c8c, TypeCVI_VX>, Enc_45364e, Requires<[UseHVXV60]> {
34797 let Inst{7-5} = 0b001;
34798 let Inst{13-13} = 0b0;
34799 let Inst{31-21} = 0b00011100000;
34800 let hasNewValue = 1;
34801 let opNewValue = 0;
34802 let DecoderNamespace = "EXT_mmvec";
34803 }
34804 def V6_vrmpybv_acc : HInst<
34805 (outs HvxVR:$Vx32),
34806 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34807 "$Vx32.w += vrmpy($Vu32.b,$Vv32.b)",
34808 tc_e172d86a, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
34809 let Inst{7-5} = 0b001;
34810 let Inst{13-13} = 0b1;
34811 let Inst{31-21} = 0b00011100000;
34812 let hasNewValue = 1;
34813 let opNewValue = 0;
34814 let isAccumulator = 1;
34815 let DecoderNamespace = "EXT_mmvec";
34816 let Constraints = "$Vx32 = $Vx32in";
34817 }
34818 def V6_vrmpybv_acc_alt : HInst<
34819 (outs HvxVR:$Vx32),
34820 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34821 "$Vx32 += vrmpyb($Vu32,$Vv32)",
34822 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34823 let hasNewValue = 1;
34824 let opNewValue = 0;
34825 let isAccumulator = 1;
34826 let isPseudo = 1;
34827 let isCodeGenOnly = 1;
34828 let DecoderNamespace = "EXT_mmvec";
34829 let Constraints = "$Vx32 = $Vx32in";
34830 }
34831 def V6_vrmpybv_alt : HInst<
34832 (outs HvxVR:$Vd32),
34833 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34834 "$Vd32 = vrmpyb($Vu32,$Vv32)",
34835 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34836 let hasNewValue = 1;
34837 let opNewValue = 0;
34838 let isPseudo = 1;
34839 let isCodeGenOnly = 1;
34840 let DecoderNamespace = "EXT_mmvec";
34841 }
34842 def V6_vrmpyub : HInst<
34843 (outs HvxVR:$Vd32),
34844 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34845 "$Vd32.uw = vrmpy($Vu32.ub,$Rt32.ub)",
34846 tc_69b6dd20, TypeCVI_VX>, Enc_b087ac, Requires<[UseHVXV60]> {
34847 let Inst{7-5} = 0b011;
34848 let Inst{13-13} = 0b0;
34849 let Inst{31-21} = 0b00011001000;
34850 let hasNewValue = 1;
34851 let opNewValue = 0;
34852 let DecoderNamespace = "EXT_mmvec";
34853 }
34854 def V6_vrmpyub_acc : HInst<
34855 (outs HvxVR:$Vx32),
34856 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34857 "$Vx32.uw += vrmpy($Vu32.ub,$Rt32.ub)",
34858 tc_d725e5b0, TypeCVI_VX>, Enc_5138b3, Requires<[UseHVXV60]> {
34859 let Inst{7-5} = 0b100;
34860 let Inst{13-13} = 0b1;
34861 let Inst{31-21} = 0b00011001000;
34862 let hasNewValue = 1;
34863 let opNewValue = 0;
34864 let isAccumulator = 1;
34865 let DecoderNamespace = "EXT_mmvec";
34866 let Constraints = "$Vx32 = $Vx32in";
34867 }
34868 def V6_vrmpyub_acc_alt : HInst<
34869 (outs HvxVR:$Vx32),
34870 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34871 "$Vx32 += vrmpyub($Vu32,$Rt32)",
34872 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34873 let hasNewValue = 1;
34874 let opNewValue = 0;
34875 let isAccumulator = 1;
34876 let isPseudo = 1;
34877 let isCodeGenOnly = 1;
34878 let DecoderNamespace = "EXT_mmvec";
34879 let Constraints = "$Vx32 = $Vx32in";
34880 }
34881 def V6_vrmpyub_alt : HInst<
34882 (outs HvxVR:$Vd32),
34883 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34884 "$Vd32 = vrmpyub($Vu32,$Rt32)",
34885 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34886 let hasNewValue = 1;
34887 let opNewValue = 0;
34888 let isPseudo = 1;
34889 let isCodeGenOnly = 1;
34890 let DecoderNamespace = "EXT_mmvec";
34891 }
34892 def V6_vrmpyub_rtt : HInst<
34893 (outs HvxWR:$Vdd32),
34894 (ins HvxVR:$Vu32, DoubleRegs:$Rtt32),
34895 "$Vdd32.uw = vrmpy($Vu32.ub,$Rtt32.ub)",
34896 tc_a807365d, TypeCVI_VS_VX>, Enc_cb785b, Requires<[UseHVXV65]> {
34897 let Inst{7-5} = 0b100;
34898 let Inst{13-13} = 0b0;
34899 let Inst{31-21} = 0b00011001110;
34900 let hasNewValue = 1;
34901 let opNewValue = 0;
34902 let DecoderNamespace = "EXT_mmvec";
34903 }
34904 def V6_vrmpyub_rtt_acc : HInst<
34905 (outs HvxWR:$Vxx32),
34906 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, DoubleRegs:$Rtt32),
34907 "$Vxx32.uw += vrmpy($Vu32.ub,$Rtt32.ub)",
34908 tc_ee927c0e, TypeCVI_VS_VX>, Enc_ad9bef, Requires<[UseHVXV65]> {
34909 let Inst{7-5} = 0b111;
34910 let Inst{13-13} = 0b1;
34911 let Inst{31-21} = 0b00011001101;
34912 let hasNewValue = 1;
34913 let opNewValue = 0;
34914 let isAccumulator = 1;
34915 let DecoderNamespace = "EXT_mmvec";
34916 let Constraints = "$Vxx32 = $Vxx32in";
34917 }
34918 def V6_vrmpyub_rtt_acc_alt : HInst<
34919 (outs HvxWR:$Vxx32),
34920 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, DoubleRegs:$Rtt32),
34921 "$Vxx32.uw += vrmpy($Vu32.ub,$Rtt32.ub)",
34922 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
34923 let hasNewValue = 1;
34924 let opNewValue = 0;
34925 let isAccumulator = 1;
34926 let isPseudo = 1;
34927 let isCodeGenOnly = 1;
34928 let DecoderNamespace = "EXT_mmvec";
34929 let Constraints = "$Vxx32 = $Vxx32in";
34930 }
34931 def V6_vrmpyub_rtt_alt : HInst<
34932 (outs HvxWR:$Vdd32),
34933 (ins HvxVR:$Vu32, DoubleRegs:$Rtt32),
34934 "$Vdd32.uw = vrmpy($Vu32.ub,$Rtt32.ub)",
34935 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
34936 let hasNewValue = 1;
34937 let opNewValue = 0;
34938 let isPseudo = 1;
34939 let isCodeGenOnly = 1;
34940 let DecoderNamespace = "EXT_mmvec";
34941 }
34942 def V6_vrmpyubi : HInst<
34943 (outs HvxWR:$Vdd32),
34944 (ins HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
34945 "$Vdd32.uw = vrmpy($Vuu32.ub,$Rt32.ub,#$Ii)",
34946 tc_7e9f581b, TypeCVI_VX_DV>, Enc_2f2f04, Requires<[UseHVXV60]> {
34947 let Inst{7-6} = 0b11;
34948 let Inst{13-13} = 0b0;
34949 let Inst{31-21} = 0b00011001101;
34950 let hasNewValue = 1;
34951 let opNewValue = 0;
34952 let DecoderNamespace = "EXT_mmvec";
34953 }
34954 def V6_vrmpyubi_acc : HInst<
34955 (outs HvxWR:$Vxx32),
34956 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
34957 "$Vxx32.uw += vrmpy($Vuu32.ub,$Rt32.ub,#$Ii)",
34958 tc_41f99e1c, TypeCVI_VX_DV>, Enc_d483b9, Requires<[UseHVXV60]> {
34959 let Inst{7-6} = 0b11;
34960 let Inst{13-13} = 0b1;
34961 let Inst{31-21} = 0b00011001011;
34962 let hasNewValue = 1;
34963 let opNewValue = 0;
34964 let isAccumulator = 1;
34965 let DecoderNamespace = "EXT_mmvec";
34966 let Constraints = "$Vxx32 = $Vxx32in";
34967 }
34968 def V6_vrmpyubi_acc_alt : HInst<
34969 (outs HvxWR:$Vxx32),
34970 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
34971 "$Vxx32 += vrmpyub($Vuu32,$Rt32,#$Ii)",
34972 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34973 let hasNewValue = 1;
34974 let opNewValue = 0;
34975 let isAccumulator = 1;
34976 let isPseudo = 1;
34977 let isCodeGenOnly = 1;
34978 let DecoderNamespace = "EXT_mmvec";
34979 let Constraints = "$Vxx32 = $Vxx32in";
34980 }
34981 def V6_vrmpyubi_alt : HInst<
34982 (outs HvxWR:$Vdd32),
34983 (ins HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
34984 "$Vdd32 = vrmpyub($Vuu32,$Rt32,#$Ii)",
34985 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34986 let hasNewValue = 1;
34987 let opNewValue = 0;
34988 let isPseudo = 1;
34989 let isCodeGenOnly = 1;
34990 let DecoderNamespace = "EXT_mmvec";
34991 }
34992 def V6_vrmpyubv : HInst<
34993 (outs HvxVR:$Vd32),
34994 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34995 "$Vd32.uw = vrmpy($Vu32.ub,$Vv32.ub)",
34996 tc_908a4c8c, TypeCVI_VX>, Enc_45364e, Requires<[UseHVXV60]> {
34997 let Inst{7-5} = 0b000;
34998 let Inst{13-13} = 0b0;
34999 let Inst{31-21} = 0b00011100000;
35000 let hasNewValue = 1;
35001 let opNewValue = 0;
35002 let DecoderNamespace = "EXT_mmvec";
35003 }
35004 def V6_vrmpyubv_acc : HInst<
35005 (outs HvxVR:$Vx32),
35006 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
35007 "$Vx32.uw += vrmpy($Vu32.ub,$Vv32.ub)",
35008 tc_e172d86a, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
35009 let Inst{7-5} = 0b000;
35010 let Inst{13-13} = 0b1;
35011 let Inst{31-21} = 0b00011100000;
35012 let hasNewValue = 1;
35013 let opNewValue = 0;
35014 let isAccumulator = 1;
35015 let DecoderNamespace = "EXT_mmvec";
35016 let Constraints = "$Vx32 = $Vx32in";
35017 }
35018 def V6_vrmpyubv_acc_alt : HInst<
35019 (outs HvxVR:$Vx32),
35020 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
35021 "$Vx32 += vrmpyub($Vu32,$Vv32)",
35022 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35023 let hasNewValue = 1;
35024 let opNewValue = 0;
35025 let isAccumulator = 1;
35026 let isPseudo = 1;
35027 let isCodeGenOnly = 1;
35028 let DecoderNamespace = "EXT_mmvec";
35029 let Constraints = "$Vx32 = $Vx32in";
35030 }
35031 def V6_vrmpyubv_alt : HInst<
35032 (outs HvxVR:$Vd32),
35033 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35034 "$Vd32 = vrmpyub($Vu32,$Vv32)",
35035 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35036 let hasNewValue = 1;
35037 let opNewValue = 0;
35038 let isPseudo = 1;
35039 let isCodeGenOnly = 1;
35040 let DecoderNamespace = "EXT_mmvec";
35041 }
35042 def V6_vror : HInst<
35043 (outs HvxVR:$Vd32),
35044 (ins HvxVR:$Vu32, IntRegs:$Rt32),
35045 "$Vd32 = vror($Vu32,$Rt32)",
35046 tc_bf142ae2, TypeCVI_VP>, Enc_b087ac, Requires<[UseHVXV60]> {
35047 let Inst{7-5} = 0b001;
35048 let Inst{13-13} = 0b0;
35049 let Inst{31-21} = 0b00011001011;
35050 let hasNewValue = 1;
35051 let opNewValue = 0;
35052 let DecoderNamespace = "EXT_mmvec";
35053 }
35054 def V6_vroundhb : HInst<
35055 (outs HvxVR:$Vd32),
35056 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35057 "$Vd32.b = vround($Vu32.h,$Vv32.h):sat",
35058 tc_45453b98, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
35059 let Inst{7-5} = 0b110;
35060 let Inst{13-13} = 0b0;
35061 let Inst{31-21} = 0b00011111011;
35062 let hasNewValue = 1;
35063 let opNewValue = 0;
35064 let DecoderNamespace = "EXT_mmvec";
35065 }
35066 def V6_vroundhb_alt : HInst<
35067 (outs HvxVR:$Vd32),
35068 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35069 "$Vd32 = vroundhb($Vu32,$Vv32):sat",
35070 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35071 let hasNewValue = 1;
35072 let opNewValue = 0;
35073 let isPseudo = 1;
35074 let isCodeGenOnly = 1;
35075 let DecoderNamespace = "EXT_mmvec";
35076 }
35077 def V6_vroundhub : HInst<
35078 (outs HvxVR:$Vd32),
35079 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35080 "$Vd32.ub = vround($Vu32.h,$Vv32.h):sat",
35081 tc_45453b98, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
35082 let Inst{7-5} = 0b111;
35083 let Inst{13-13} = 0b0;
35084 let Inst{31-21} = 0b00011111011;
35085 let hasNewValue = 1;
35086 let opNewValue = 0;
35087 let DecoderNamespace = "EXT_mmvec";
35088 }
35089 def V6_vroundhub_alt : HInst<
35090 (outs HvxVR:$Vd32),
35091 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35092 "$Vd32 = vroundhub($Vu32,$Vv32):sat",
35093 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35094 let hasNewValue = 1;
35095 let opNewValue = 0;
35096 let isPseudo = 1;
35097 let isCodeGenOnly = 1;
35098 let DecoderNamespace = "EXT_mmvec";
35099 }
35100 def V6_vrounduhub : HInst<
35101 (outs HvxVR:$Vd32),
35102 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35103 "$Vd32.ub = vround($Vu32.uh,$Vv32.uh):sat",
35104 tc_45453b98, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV62]> {
35105 let Inst{7-5} = 0b011;
35106 let Inst{13-13} = 0b0;
35107 let Inst{31-21} = 0b00011111111;
35108 let hasNewValue = 1;
35109 let opNewValue = 0;
35110 let DecoderNamespace = "EXT_mmvec";
35111 }
35112 def V6_vrounduhub_alt : HInst<
35113 (outs HvxVR:$Vd32),
35114 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35115 "$Vd32 = vrounduhub($Vu32,$Vv32):sat",
35116 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
35117 let hasNewValue = 1;
35118 let opNewValue = 0;
35119 let isPseudo = 1;
35120 let isCodeGenOnly = 1;
35121 let DecoderNamespace = "EXT_mmvec";
35122 }
35123 def V6_vrounduwuh : HInst<
35124 (outs HvxVR:$Vd32),
35125 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35126 "$Vd32.uh = vround($Vu32.uw,$Vv32.uw):sat",
35127 tc_45453b98, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV62]> {
35128 let Inst{7-5} = 0b100;
35129 let Inst{13-13} = 0b0;
35130 let Inst{31-21} = 0b00011111111;
35131 let hasNewValue = 1;
35132 let opNewValue = 0;
35133 let DecoderNamespace = "EXT_mmvec";
35134 }
35135 def V6_vrounduwuh_alt : HInst<
35136 (outs HvxVR:$Vd32),
35137 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35138 "$Vd32 = vrounduwuh($Vu32,$Vv32):sat",
35139 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
35140 let hasNewValue = 1;
35141 let opNewValue = 0;
35142 let isPseudo = 1;
35143 let isCodeGenOnly = 1;
35144 let DecoderNamespace = "EXT_mmvec";
35145 }
35146 def V6_vroundwh : HInst<
35147 (outs HvxVR:$Vd32),
35148 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35149 "$Vd32.h = vround($Vu32.w,$Vv32.w):sat",
35150 tc_45453b98, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
35151 let Inst{7-5} = 0b100;
35152 let Inst{13-13} = 0b0;
35153 let Inst{31-21} = 0b00011111011;
35154 let hasNewValue = 1;
35155 let opNewValue = 0;
35156 let DecoderNamespace = "EXT_mmvec";
35157 }
35158 def V6_vroundwh_alt : HInst<
35159 (outs HvxVR:$Vd32),
35160 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35161 "$Vd32 = vroundwh($Vu32,$Vv32):sat",
35162 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35163 let hasNewValue = 1;
35164 let opNewValue = 0;
35165 let isPseudo = 1;
35166 let isCodeGenOnly = 1;
35167 let DecoderNamespace = "EXT_mmvec";
35168 }
35169 def V6_vroundwuh : HInst<
35170 (outs HvxVR:$Vd32),
35171 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35172 "$Vd32.uh = vround($Vu32.w,$Vv32.w):sat",
35173 tc_45453b98, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
35174 let Inst{7-5} = 0b101;
35175 let Inst{13-13} = 0b0;
35176 let Inst{31-21} = 0b00011111011;
35177 let hasNewValue = 1;
35178 let opNewValue = 0;
35179 let DecoderNamespace = "EXT_mmvec";
35180 }
35181 def V6_vroundwuh_alt : HInst<
35182 (outs HvxVR:$Vd32),
35183 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35184 "$Vd32 = vroundwuh($Vu32,$Vv32):sat",
35185 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35186 let hasNewValue = 1;
35187 let opNewValue = 0;
35188 let isPseudo = 1;
35189 let isCodeGenOnly = 1;
35190 let DecoderNamespace = "EXT_mmvec";
35191 }
35192 def V6_vrsadubi : HInst<
35193 (outs HvxWR:$Vdd32),
35194 (ins HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
35195 "$Vdd32.uw = vrsad($Vuu32.ub,$Rt32.ub,#$Ii)",
35196 tc_7e9f581b, TypeCVI_VX_DV>, Enc_2f2f04, Requires<[UseHVXV60]> {
35197 let Inst{7-6} = 0b11;
35198 let Inst{13-13} = 0b0;
35199 let Inst{31-21} = 0b00011001010;
35200 let hasNewValue = 1;
35201 let opNewValue = 0;
35202 let DecoderNamespace = "EXT_mmvec";
35203 }
35204 def V6_vrsadubi_acc : HInst<
35205 (outs HvxWR:$Vxx32),
35206 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
35207 "$Vxx32.uw += vrsad($Vuu32.ub,$Rt32.ub,#$Ii)",
35208 tc_41f99e1c, TypeCVI_VX_DV>, Enc_d483b9, Requires<[UseHVXV60]> {
35209 let Inst{7-6} = 0b11;
35210 let Inst{13-13} = 0b1;
35211 let Inst{31-21} = 0b00011001010;
35212 let hasNewValue = 1;
35213 let opNewValue = 0;
35214 let isAccumulator = 1;
35215 let DecoderNamespace = "EXT_mmvec";
35216 let Constraints = "$Vxx32 = $Vxx32in";
35217 }
35218 def V6_vrsadubi_acc_alt : HInst<
35219 (outs HvxWR:$Vxx32),
35220 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
35221 "$Vxx32 += vrsadub($Vuu32,$Rt32,#$Ii)",
35222 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35223 let hasNewValue = 1;
35224 let opNewValue = 0;
35225 let isAccumulator = 1;
35226 let isPseudo = 1;
35227 let isCodeGenOnly = 1;
35228 let DecoderNamespace = "EXT_mmvec";
35229 let Constraints = "$Vxx32 = $Vxx32in";
35230 }
35231 def V6_vrsadubi_alt : HInst<
35232 (outs HvxWR:$Vdd32),
35233 (ins HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
35234 "$Vdd32 = vrsadub($Vuu32,$Rt32,#$Ii)",
35235 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35236 let hasNewValue = 1;
35237 let opNewValue = 0;
35238 let isPseudo = 1;
35239 let isCodeGenOnly = 1;
35240 let DecoderNamespace = "EXT_mmvec";
35241 }
35242 def V6_vsathub : HInst<
35243 (outs HvxVR:$Vd32),
35244 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35245 "$Vd32.ub = vsat($Vu32.h,$Vv32.h)",
35246 tc_9b9642a1, TypeCVI_VINLANESAT>, Enc_45364e, Requires<[UseHVXV60]> {
35247 let Inst{7-5} = 0b010;
35248 let Inst{13-13} = 0b0;
35249 let Inst{31-21} = 0b00011111011;
35250 let hasNewValue = 1;
35251 let opNewValue = 0;
35252 let DecoderNamespace = "EXT_mmvec";
35253 }
35254 def V6_vsathub_alt : HInst<
35255 (outs HvxVR:$Vd32),
35256 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35257 "$Vd32 = vsathub($Vu32,$Vv32)",
35258 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35259 let hasNewValue = 1;
35260 let opNewValue = 0;
35261 let isPseudo = 1;
35262 let isCodeGenOnly = 1;
35263 let DecoderNamespace = "EXT_mmvec";
35264 }
35265 def V6_vsatuwuh : HInst<
35266 (outs HvxVR:$Vd32),
35267 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35268 "$Vd32.uh = vsat($Vu32.uw,$Vv32.uw)",
35269 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
35270 let Inst{7-5} = 0b110;
35271 let Inst{13-13} = 0b0;
35272 let Inst{31-21} = 0b00011111001;
35273 let hasNewValue = 1;
35274 let opNewValue = 0;
35275 let DecoderNamespace = "EXT_mmvec";
35276 }
35277 def V6_vsatuwuh_alt : HInst<
35278 (outs HvxVR:$Vd32),
35279 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35280 "$Vd32 = vsatuwuh($Vu32,$Vv32)",
35281 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
35282 let hasNewValue = 1;
35283 let opNewValue = 0;
35284 let isPseudo = 1;
35285 let isCodeGenOnly = 1;
35286 let DecoderNamespace = "EXT_mmvec";
35287 }
35288 def V6_vsatwh : HInst<
35289 (outs HvxVR:$Vd32),
35290 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35291 "$Vd32.h = vsat($Vu32.w,$Vv32.w)",
35292 tc_9b9642a1, TypeCVI_VINLANESAT>, Enc_45364e, Requires<[UseHVXV60]> {
35293 let Inst{7-5} = 0b011;
35294 let Inst{13-13} = 0b0;
35295 let Inst{31-21} = 0b00011111011;
35296 let hasNewValue = 1;
35297 let opNewValue = 0;
35298 let DecoderNamespace = "EXT_mmvec";
35299 }
35300 def V6_vsatwh_alt : HInst<
35301 (outs HvxVR:$Vd32),
35302 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35303 "$Vd32 = vsatwh($Vu32,$Vv32)",
35304 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35305 let hasNewValue = 1;
35306 let opNewValue = 0;
35307 let isPseudo = 1;
35308 let isCodeGenOnly = 1;
35309 let DecoderNamespace = "EXT_mmvec";
35310 }
35311 def V6_vsb : HInst<
35312 (outs HvxWR:$Vdd32),
35313 (ins HvxVR:$Vu32),
35314 "$Vdd32.h = vsxt($Vu32.b)",
35315 tc_644584f8, TypeCVI_VA_DV>, Enc_dd766a, Requires<[UseHVXV60]> {
35316 let Inst{7-5} = 0b011;
35317 let Inst{13-13} = 0b0;
35318 let Inst{31-16} = 0b0001111000000010;
35319 let hasNewValue = 1;
35320 let opNewValue = 0;
35321 let DecoderNamespace = "EXT_mmvec";
35322 }
35323 def V6_vsb_alt : HInst<
35324 (outs HvxWR:$Vdd32),
35325 (ins HvxVR:$Vu32),
35326 "$Vdd32 = vsxtb($Vu32)",
35327 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35328 let hasNewValue = 1;
35329 let opNewValue = 0;
35330 let isPseudo = 1;
35331 let isCodeGenOnly = 1;
35332 let DecoderNamespace = "EXT_mmvec";
35333 }
35334 def V6_vscattermh : HInst<
35335 (outs),
35336 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
35337 "vscatter($Rt32,$Mu2,$Vv32.h).h = $Vw32",
35338 tc_4f190ba3, TypeCVI_SCATTER>, Enc_16c48b, Requires<[UseHVXV65]> {
35339 let Inst{7-5} = 0b001;
35340 let Inst{31-21} = 0b00101111001;
35341 let accessSize = HalfWordAccess;
35342 let mayStore = 1;
35343 let DecoderNamespace = "EXT_mmvec";
35344 }
35345 def V6_vscattermh_add : HInst<
35346 (outs),
35347 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
35348 "vscatter($Rt32,$Mu2,$Vv32.h).h += $Vw32",
35349 tc_4f190ba3, TypeCVI_SCATTER>, Enc_16c48b, Requires<[UseHVXV65]> {
35350 let Inst{7-5} = 0b101;
35351 let Inst{31-21} = 0b00101111001;
35352 let accessSize = HalfWordAccess;
35353 let isAccumulator = 1;
35354 let mayStore = 1;
35355 let DecoderNamespace = "EXT_mmvec";
35356 }
35357 def V6_vscattermh_add_alt : HInst<
35358 (outs),
35359 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
35360 "vscatter($Rt32,$Mu2,$Vv32.h) += $Vw32.h",
35361 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
35362 let isAccumulator = 1;
35363 let isPseudo = 1;
35364 let isCodeGenOnly = 1;
35365 let DecoderNamespace = "EXT_mmvec";
35366 }
35367 def V6_vscattermh_alt : HInst<
35368 (outs),
35369 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
35370 "vscatter($Rt32,$Mu2,$Vv32.h) = $Vw32.h",
35371 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
35372 let isPseudo = 1;
35373 let isCodeGenOnly = 1;
35374 let DecoderNamespace = "EXT_mmvec";
35375 }
35376 def V6_vscattermhq : HInst<
35377 (outs),
35378 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
35379 "if ($Qs4) vscatter($Rt32,$Mu2,$Vv32.h).h = $Vw32",
35380 tc_df54ad52, TypeCVI_SCATTER>, Enc_9be1de, Requires<[UseHVXV65]> {
35381 let Inst{7-7} = 0b1;
35382 let Inst{31-21} = 0b00101111100;
35383 let accessSize = HalfWordAccess;
35384 let mayStore = 1;
35385 let DecoderNamespace = "EXT_mmvec";
35386 }
35387 def V6_vscattermhq_alt : HInst<
35388 (outs),
35389 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
35390 "if ($Qs4) vscatter($Rt32,$Mu2,$Vv32.h) = $Vw32.h",
35391 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
35392 let isPseudo = 1;
35393 let isCodeGenOnly = 1;
35394 let DecoderNamespace = "EXT_mmvec";
35395 }
35396 def V6_vscattermhw : HInst<
35397 (outs),
35398 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxWR:$Vvv32, HvxVR:$Vw32),
35399 "vscatter($Rt32,$Mu2,$Vvv32.w).h = $Vw32",
35400 tc_ec58f88a, TypeCVI_SCATTER_DV>, Enc_a641d0, Requires<[UseHVXV65]> {
35401 let Inst{7-5} = 0b010;
35402 let Inst{31-21} = 0b00101111001;
35403 let accessSize = HalfWordAccess;
35404 let mayStore = 1;
35405 let DecoderNamespace = "EXT_mmvec";
35406 }
35407 def V6_vscattermhw_add : HInst<
35408 (outs),
35409 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxWR:$Vvv32, HvxVR:$Vw32),
35410 "vscatter($Rt32,$Mu2,$Vvv32.w).h += $Vw32",
35411 tc_ec58f88a, TypeCVI_SCATTER_DV>, Enc_a641d0, Requires<[UseHVXV65]> {
35412 let Inst{7-5} = 0b110;
35413 let Inst{31-21} = 0b00101111001;
35414 let accessSize = HalfWordAccess;
35415 let isAccumulator = 1;
35416 let mayStore = 1;
35417 let DecoderNamespace = "EXT_mmvec";
35418 }
35419 def V6_vscattermhwq : HInst<
35420 (outs),
35421 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxWR:$Vvv32, HvxVR:$Vw32),
35422 "if ($Qs4) vscatter($Rt32,$Mu2,$Vvv32.w).h = $Vw32",
35423 tc_94f43c04, TypeCVI_SCATTER_DV>, Enc_3d6d37, Requires<[UseHVXV65]> {
35424 let Inst{7-7} = 0b0;
35425 let Inst{31-21} = 0b00101111101;
35426 let accessSize = HalfWordAccess;
35427 let mayStore = 1;
35428 let DecoderNamespace = "EXT_mmvec";
35429 }
35430 def V6_vscattermw : HInst<
35431 (outs),
35432 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
35433 "vscatter($Rt32,$Mu2,$Vv32.w).w = $Vw32",
35434 tc_4f190ba3, TypeCVI_SCATTER>, Enc_16c48b, Requires<[UseHVXV65]> {
35435 let Inst{7-5} = 0b000;
35436 let Inst{31-21} = 0b00101111001;
35437 let accessSize = WordAccess;
35438 let mayStore = 1;
35439 let DecoderNamespace = "EXT_mmvec";
35440 }
35441 def V6_vscattermw_add : HInst<
35442 (outs),
35443 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
35444 "vscatter($Rt32,$Mu2,$Vv32.w).w += $Vw32",
35445 tc_4f190ba3, TypeCVI_SCATTER>, Enc_16c48b, Requires<[UseHVXV65]> {
35446 let Inst{7-5} = 0b100;
35447 let Inst{31-21} = 0b00101111001;
35448 let accessSize = WordAccess;
35449 let isAccumulator = 1;
35450 let mayStore = 1;
35451 let DecoderNamespace = "EXT_mmvec";
35452 }
35453 def V6_vscattermw_add_alt : HInst<
35454 (outs),
35455 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
35456 "vscatter($Rt32,$Mu2,$Vv32.w) += $Vw32.w",
35457 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
35458 let isAccumulator = 1;
35459 let isPseudo = 1;
35460 let isCodeGenOnly = 1;
35461 let DecoderNamespace = "EXT_mmvec";
35462 }
35463 def V6_vscattermw_alt : HInst<
35464 (outs),
35465 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
35466 "vscatter($Rt32,$Mu2,$Vv32.w) = $Vw32.w",
35467 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
35468 let isPseudo = 1;
35469 let isCodeGenOnly = 1;
35470 let DecoderNamespace = "EXT_mmvec";
35471 }
35472 def V6_vscattermwh_add_alt : HInst<
35473 (outs),
35474 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxWR:$Vvv32, HvxVR:$Vw32),
35475 "vscatter($Rt32,$Mu2,$Vvv32.w) += $Vw32.h",
35476 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
35477 let isAccumulator = 1;
35478 let isPseudo = 1;
35479 let isCodeGenOnly = 1;
35480 let DecoderNamespace = "EXT_mmvec";
35481 }
35482 def V6_vscattermwh_alt : HInst<
35483 (outs),
35484 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxWR:$Vvv32, HvxVR:$Vw32),
35485 "vscatter($Rt32,$Mu2,$Vvv32.w) = $Vw32.h",
35486 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
35487 let isPseudo = 1;
35488 let isCodeGenOnly = 1;
35489 let DecoderNamespace = "EXT_mmvec";
35490 }
35491 def V6_vscattermwhq_alt : HInst<
35492 (outs),
35493 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxWR:$Vvv32, HvxVR:$Vw32),
35494 "if ($Qs4) vscatter($Rt32,$Mu2,$Vvv32.w) = $Vw32.h",
35495 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
35496 let isPseudo = 1;
35497 let isCodeGenOnly = 1;
35498 let DecoderNamespace = "EXT_mmvec";
35499 }
35500 def V6_vscattermwq : HInst<
35501 (outs),
35502 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
35503 "if ($Qs4) vscatter($Rt32,$Mu2,$Vv32.w).w = $Vw32",
35504 tc_df54ad52, TypeCVI_SCATTER>, Enc_9be1de, Requires<[UseHVXV65]> {
35505 let Inst{7-7} = 0b0;
35506 let Inst{31-21} = 0b00101111100;
35507 let accessSize = WordAccess;
35508 let mayStore = 1;
35509 let DecoderNamespace = "EXT_mmvec";
35510 }
35511 def V6_vscattermwq_alt : HInst<
35512 (outs),
35513 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
35514 "if ($Qs4) vscatter($Rt32,$Mu2,$Vv32.w) = $Vw32.w",
35515 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
35516 let isPseudo = 1;
35517 let isCodeGenOnly = 1;
35518 let DecoderNamespace = "EXT_mmvec";
35519 }
35520 def V6_vsh : HInst<
35521 (outs HvxWR:$Vdd32),
35522 (ins HvxVR:$Vu32),
35523 "$Vdd32.w = vsxt($Vu32.h)",
35524 tc_644584f8, TypeCVI_VA_DV>, Enc_dd766a, Requires<[UseHVXV60]> {
35525 let Inst{7-5} = 0b100;
35526 let Inst{13-13} = 0b0;
35527 let Inst{31-16} = 0b0001111000000010;
35528 let hasNewValue = 1;
35529 let opNewValue = 0;
35530 let DecoderNamespace = "EXT_mmvec";
35531 }
35532 def V6_vsh_alt : HInst<
35533 (outs HvxWR:$Vdd32),
35534 (ins HvxVR:$Vu32),
35535 "$Vdd32 = vsxth($Vu32)",
35536 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35537 let hasNewValue = 1;
35538 let opNewValue = 0;
35539 let isPseudo = 1;
35540 let isCodeGenOnly = 1;
35541 let DecoderNamespace = "EXT_mmvec";
35542 }
35543 def V6_vshufeh : HInst<
35544 (outs HvxVR:$Vd32),
35545 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35546 "$Vd32.h = vshuffe($Vu32.h,$Vv32.h)",
35547 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
35548 let Inst{7-5} = 0b011;
35549 let Inst{13-13} = 0b0;
35550 let Inst{31-21} = 0b00011111010;
35551 let hasNewValue = 1;
35552 let opNewValue = 0;
35553 let DecoderNamespace = "EXT_mmvec";
35554 }
35555 def V6_vshufeh_alt : HInst<
35556 (outs HvxVR:$Vd32),
35557 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35558 "$Vd32 = vshuffeh($Vu32,$Vv32)",
35559 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35560 let hasNewValue = 1;
35561 let opNewValue = 0;
35562 let isPseudo = 1;
35563 let isCodeGenOnly = 1;
35564 let DecoderNamespace = "EXT_mmvec";
35565 }
35566 def V6_vshuff : HInst<
35567 (outs HvxVR:$Vy32, HvxVR:$Vx32),
35568 (ins HvxVR:$Vy32in, HvxVR:$Vx32in, IntRegs:$Rt32),
35569 "vshuff($Vy32,$Vx32,$Rt32)",
35570 tc_5c120602, TypeCVI_VP_VS>, Enc_989021, Requires<[UseHVXV60]> {
35571 let Inst{7-5} = 0b001;
35572 let Inst{13-13} = 0b1;
35573 let Inst{31-21} = 0b00011001111;
35574 let hasNewValue = 1;
35575 let opNewValue = 0;
35576 let hasNewValue2 = 1;
35577 let opNewValue2 = 1;
35578 let DecoderNamespace = "EXT_mmvec";
35579 let Constraints = "$Vy32 = $Vy32in, $Vx32 = $Vx32in";
35580 }
35581 def V6_vshuffb : HInst<
35582 (outs HvxVR:$Vd32),
35583 (ins HvxVR:$Vu32),
35584 "$Vd32.b = vshuff($Vu32.b)",
35585 tc_e6299d16, TypeCVI_VP>, Enc_e7581c, Requires<[UseHVXV60]> {
35586 let Inst{7-5} = 0b000;
35587 let Inst{13-13} = 0b0;
35588 let Inst{31-16} = 0b0001111000000010;
35589 let hasNewValue = 1;
35590 let opNewValue = 0;
35591 let DecoderNamespace = "EXT_mmvec";
35592 }
35593 def V6_vshuffb_alt : HInst<
35594 (outs HvxVR:$Vd32),
35595 (ins HvxVR:$Vu32),
35596 "$Vd32 = vshuffb($Vu32)",
35597 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35598 let hasNewValue = 1;
35599 let opNewValue = 0;
35600 let isPseudo = 1;
35601 let isCodeGenOnly = 1;
35602 let DecoderNamespace = "EXT_mmvec";
35603 }
35604 def V6_vshuffeb : HInst<
35605 (outs HvxVR:$Vd32),
35606 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35607 "$Vd32.b = vshuffe($Vu32.b,$Vv32.b)",
35608 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
35609 let Inst{7-5} = 0b001;
35610 let Inst{13-13} = 0b0;
35611 let Inst{31-21} = 0b00011111010;
35612 let hasNewValue = 1;
35613 let opNewValue = 0;
35614 let DecoderNamespace = "EXT_mmvec";
35615 }
35616 def V6_vshuffeb_alt : HInst<
35617 (outs HvxVR:$Vd32),
35618 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35619 "$Vd32 = vshuffeb($Vu32,$Vv32)",
35620 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35621 let hasNewValue = 1;
35622 let opNewValue = 0;
35623 let isPseudo = 1;
35624 let isCodeGenOnly = 1;
35625 let DecoderNamespace = "EXT_mmvec";
35626 }
35627 def V6_vshuffh : HInst<
35628 (outs HvxVR:$Vd32),
35629 (ins HvxVR:$Vu32),
35630 "$Vd32.h = vshuff($Vu32.h)",
35631 tc_e6299d16, TypeCVI_VP>, Enc_e7581c, Requires<[UseHVXV60]> {
35632 let Inst{7-5} = 0b111;
35633 let Inst{13-13} = 0b0;
35634 let Inst{31-16} = 0b0001111000000001;
35635 let hasNewValue = 1;
35636 let opNewValue = 0;
35637 let DecoderNamespace = "EXT_mmvec";
35638 }
35639 def V6_vshuffh_alt : HInst<
35640 (outs HvxVR:$Vd32),
35641 (ins HvxVR:$Vu32),
35642 "$Vd32 = vshuffh($Vu32)",
35643 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35644 let hasNewValue = 1;
35645 let opNewValue = 0;
35646 let isPseudo = 1;
35647 let isCodeGenOnly = 1;
35648 let DecoderNamespace = "EXT_mmvec";
35649 }
35650 def V6_vshuffob : HInst<
35651 (outs HvxVR:$Vd32),
35652 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35653 "$Vd32.b = vshuffo($Vu32.b,$Vv32.b)",
35654 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
35655 let Inst{7-5} = 0b010;
35656 let Inst{13-13} = 0b0;
35657 let Inst{31-21} = 0b00011111010;
35658 let hasNewValue = 1;
35659 let opNewValue = 0;
35660 let DecoderNamespace = "EXT_mmvec";
35661 }
35662 def V6_vshuffob_alt : HInst<
35663 (outs HvxVR:$Vd32),
35664 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35665 "$Vd32 = vshuffob($Vu32,$Vv32)",
35666 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35667 let hasNewValue = 1;
35668 let opNewValue = 0;
35669 let isPseudo = 1;
35670 let isCodeGenOnly = 1;
35671 let DecoderNamespace = "EXT_mmvec";
35672 }
35673 def V6_vshuffvdd : HInst<
35674 (outs HvxWR:$Vdd32),
35675 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
35676 "$Vdd32 = vshuff($Vu32,$Vv32,$Rt8)",
35677 tc_4e2a5159, TypeCVI_VP_VS>, Enc_24a7dc, Requires<[UseHVXV60]> {
35678 let Inst{7-5} = 0b011;
35679 let Inst{13-13} = 0b1;
35680 let Inst{31-24} = 0b00011011;
35681 let hasNewValue = 1;
35682 let opNewValue = 0;
35683 let DecoderNamespace = "EXT_mmvec";
35684 }
35685 def V6_vshufoeb : HInst<
35686 (outs HvxWR:$Vdd32),
35687 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35688 "$Vdd32.b = vshuffoe($Vu32.b,$Vv32.b)",
35689 tc_97c165b9, TypeCVI_VA_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
35690 let Inst{7-5} = 0b110;
35691 let Inst{13-13} = 0b0;
35692 let Inst{31-21} = 0b00011111010;
35693 let hasNewValue = 1;
35694 let opNewValue = 0;
35695 let DecoderNamespace = "EXT_mmvec";
35696 }
35697 def V6_vshufoeb_alt : HInst<
35698 (outs HvxWR:$Vdd32),
35699 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35700 "$Vdd32 = vshuffoeb($Vu32,$Vv32)",
35701 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35702 let hasNewValue = 1;
35703 let opNewValue = 0;
35704 let isPseudo = 1;
35705 let isCodeGenOnly = 1;
35706 let DecoderNamespace = "EXT_mmvec";
35707 }
35708 def V6_vshufoeh : HInst<
35709 (outs HvxWR:$Vdd32),
35710 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35711 "$Vdd32.h = vshuffoe($Vu32.h,$Vv32.h)",
35712 tc_97c165b9, TypeCVI_VA_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
35713 let Inst{7-5} = 0b101;
35714 let Inst{13-13} = 0b0;
35715 let Inst{31-21} = 0b00011111010;
35716 let hasNewValue = 1;
35717 let opNewValue = 0;
35718 let DecoderNamespace = "EXT_mmvec";
35719 }
35720 def V6_vshufoeh_alt : HInst<
35721 (outs HvxWR:$Vdd32),
35722 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35723 "$Vdd32 = vshuffoeh($Vu32,$Vv32)",
35724 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35725 let hasNewValue = 1;
35726 let opNewValue = 0;
35727 let isPseudo = 1;
35728 let isCodeGenOnly = 1;
35729 let DecoderNamespace = "EXT_mmvec";
35730 }
35731 def V6_vshufoh : HInst<
35732 (outs HvxVR:$Vd32),
35733 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35734 "$Vd32.h = vshuffo($Vu32.h,$Vv32.h)",
35735 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
35736 let Inst{7-5} = 0b100;
35737 let Inst{13-13} = 0b0;
35738 let Inst{31-21} = 0b00011111010;
35739 let hasNewValue = 1;
35740 let opNewValue = 0;
35741 let DecoderNamespace = "EXT_mmvec";
35742 }
35743 def V6_vshufoh_alt : HInst<
35744 (outs HvxVR:$Vd32),
35745 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35746 "$Vd32 = vshuffoh($Vu32,$Vv32)",
35747 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35748 let hasNewValue = 1;
35749 let opNewValue = 0;
35750 let isPseudo = 1;
35751 let isCodeGenOnly = 1;
35752 let DecoderNamespace = "EXT_mmvec";
35753 }
35754 def V6_vsubb : HInst<
35755 (outs HvxVR:$Vd32),
35756 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35757 "$Vd32.b = vsub($Vu32.b,$Vv32.b)",
35758 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
35759 let Inst{7-5} = 0b101;
35760 let Inst{13-13} = 0b0;
35761 let Inst{31-21} = 0b00011100010;
35762 let hasNewValue = 1;
35763 let opNewValue = 0;
35764 let DecoderNamespace = "EXT_mmvec";
35765 }
35766 def V6_vsubb_alt : HInst<
35767 (outs HvxVR:$Vd32),
35768 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35769 "$Vd32 = vsubb($Vu32,$Vv32)",
35770 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35771 let hasNewValue = 1;
35772 let opNewValue = 0;
35773 let isPseudo = 1;
35774 let isCodeGenOnly = 1;
35775 let DecoderNamespace = "EXT_mmvec";
35776 }
35777 def V6_vsubb_dv : HInst<
35778 (outs HvxWR:$Vdd32),
35779 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
35780 "$Vdd32.b = vsub($Vuu32.b,$Vvv32.b)",
35781 tc_97c165b9, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
35782 let Inst{7-5} = 0b011;
35783 let Inst{13-13} = 0b0;
35784 let Inst{31-21} = 0b00011100100;
35785 let hasNewValue = 1;
35786 let opNewValue = 0;
35787 let DecoderNamespace = "EXT_mmvec";
35788 }
35789 def V6_vsubb_dv_alt : HInst<
35790 (outs HvxWR:$Vdd32),
35791 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
35792 "$Vdd32 = vsubb($Vuu32,$Vvv32)",
35793 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35794 let hasNewValue = 1;
35795 let opNewValue = 0;
35796 let isPseudo = 1;
35797 let isCodeGenOnly = 1;
35798 let DecoderNamespace = "EXT_mmvec";
35799 }
35800 def V6_vsubbnq : HInst<
35801 (outs HvxVR:$Vx32),
35802 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
35803 "if (!$Qv4) $Vx32.b -= $Vu32.b",
35804 tc_a3127e12, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
35805 let Inst{7-5} = 0b001;
35806 let Inst{13-13} = 0b1;
35807 let Inst{21-16} = 0b000010;
35808 let Inst{31-24} = 0b00011110;
35809 let hasNewValue = 1;
35810 let opNewValue = 0;
35811 let DecoderNamespace = "EXT_mmvec";
35812 let Constraints = "$Vx32 = $Vx32in";
35813 }
35814 def V6_vsubbnq_alt : HInst<
35815 (outs HvxVR:$Vx32),
35816 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
35817 "if (!$Qv4.b) $Vx32.b -= $Vu32.b",
35818 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35819 let hasNewValue = 1;
35820 let opNewValue = 0;
35821 let isPseudo = 1;
35822 let isCodeGenOnly = 1;
35823 let DecoderNamespace = "EXT_mmvec";
35824 let Constraints = "$Vx32 = $Vx32in";
35825 }
35826 def V6_vsubbq : HInst<
35827 (outs HvxVR:$Vx32),
35828 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
35829 "if ($Qv4) $Vx32.b -= $Vu32.b",
35830 tc_a3127e12, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
35831 let Inst{7-5} = 0b110;
35832 let Inst{13-13} = 0b1;
35833 let Inst{21-16} = 0b000001;
35834 let Inst{31-24} = 0b00011110;
35835 let hasNewValue = 1;
35836 let opNewValue = 0;
35837 let DecoderNamespace = "EXT_mmvec";
35838 let Constraints = "$Vx32 = $Vx32in";
35839 }
35840 def V6_vsubbq_alt : HInst<
35841 (outs HvxVR:$Vx32),
35842 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
35843 "if ($Qv4.b) $Vx32.b -= $Vu32.b",
35844 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35845 let hasNewValue = 1;
35846 let opNewValue = 0;
35847 let isPseudo = 1;
35848 let isCodeGenOnly = 1;
35849 let DecoderNamespace = "EXT_mmvec";
35850 let Constraints = "$Vx32 = $Vx32in";
35851 }
35852 def V6_vsubbsat : HInst<
35853 (outs HvxVR:$Vd32),
35854 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35855 "$Vd32.b = vsub($Vu32.b,$Vv32.b):sat",
35856 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
35857 let Inst{7-5} = 0b010;
35858 let Inst{13-13} = 0b0;
35859 let Inst{31-21} = 0b00011111001;
35860 let hasNewValue = 1;
35861 let opNewValue = 0;
35862 let DecoderNamespace = "EXT_mmvec";
35863 }
35864 def V6_vsubbsat_alt : HInst<
35865 (outs HvxVR:$Vd32),
35866 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35867 "$Vd32 = vsubb($Vu32,$Vv32):sat",
35868 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
35869 let hasNewValue = 1;
35870 let opNewValue = 0;
35871 let isPseudo = 1;
35872 let isCodeGenOnly = 1;
35873 let DecoderNamespace = "EXT_mmvec";
35874 }
35875 def V6_vsubbsat_dv : HInst<
35876 (outs HvxWR:$Vdd32),
35877 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
35878 "$Vdd32.b = vsub($Vuu32.b,$Vvv32.b):sat",
35879 tc_97c165b9, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV62]> {
35880 let Inst{7-5} = 0b001;
35881 let Inst{13-13} = 0b0;
35882 let Inst{31-21} = 0b00011110101;
35883 let hasNewValue = 1;
35884 let opNewValue = 0;
35885 let DecoderNamespace = "EXT_mmvec";
35886 }
35887 def V6_vsubbsat_dv_alt : HInst<
35888 (outs HvxWR:$Vdd32),
35889 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
35890 "$Vdd32 = vsubb($Vuu32,$Vvv32):sat",
35891 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
35892 let hasNewValue = 1;
35893 let opNewValue = 0;
35894 let isPseudo = 1;
35895 let isCodeGenOnly = 1;
35896 let DecoderNamespace = "EXT_mmvec";
35897 }
35898 def V6_vsubcarry : HInst<
35899 (outs HvxVR:$Vd32, HvxQR:$Qx4),
35900 (ins HvxVR:$Vu32, HvxVR:$Vv32, HvxQR:$Qx4in),
35901 "$Vd32.w = vsub($Vu32.w,$Vv32.w,$Qx4):carry",
35902 tc_5a9fc4ec, TypeCVI_VA>, Enc_b43b67, Requires<[UseHVXV62]> {
35903 let Inst{7-7} = 0b1;
35904 let Inst{13-13} = 0b1;
35905 let Inst{31-21} = 0b00011100101;
35906 let hasNewValue = 1;
35907 let opNewValue = 0;
35908 let DecoderNamespace = "EXT_mmvec";
35909 let Constraints = "$Qx4 = $Qx4in";
35910 }
35911 def V6_vsubh : HInst<
35912 (outs HvxVR:$Vd32),
35913 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35914 "$Vd32.h = vsub($Vu32.h,$Vv32.h)",
35915 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
35916 let Inst{7-5} = 0b110;
35917 let Inst{13-13} = 0b0;
35918 let Inst{31-21} = 0b00011100010;
35919 let hasNewValue = 1;
35920 let opNewValue = 0;
35921 let DecoderNamespace = "EXT_mmvec";
35922 }
35923 def V6_vsubh_alt : HInst<
35924 (outs HvxVR:$Vd32),
35925 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35926 "$Vd32 = vsubh($Vu32,$Vv32)",
35927 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35928 let hasNewValue = 1;
35929 let opNewValue = 0;
35930 let isPseudo = 1;
35931 let isCodeGenOnly = 1;
35932 let DecoderNamespace = "EXT_mmvec";
35933 }
35934 def V6_vsubh_dv : HInst<
35935 (outs HvxWR:$Vdd32),
35936 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
35937 "$Vdd32.h = vsub($Vuu32.h,$Vvv32.h)",
35938 tc_97c165b9, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
35939 let Inst{7-5} = 0b100;
35940 let Inst{13-13} = 0b0;
35941 let Inst{31-21} = 0b00011100100;
35942 let hasNewValue = 1;
35943 let opNewValue = 0;
35944 let DecoderNamespace = "EXT_mmvec";
35945 }
35946 def V6_vsubh_dv_alt : HInst<
35947 (outs HvxWR:$Vdd32),
35948 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
35949 "$Vdd32 = vsubh($Vuu32,$Vvv32)",
35950 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35951 let hasNewValue = 1;
35952 let opNewValue = 0;
35953 let isPseudo = 1;
35954 let isCodeGenOnly = 1;
35955 let DecoderNamespace = "EXT_mmvec";
35956 }
35957 def V6_vsubhnq : HInst<
35958 (outs HvxVR:$Vx32),
35959 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
35960 "if (!$Qv4) $Vx32.h -= $Vu32.h",
35961 tc_a3127e12, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
35962 let Inst{7-5} = 0b010;
35963 let Inst{13-13} = 0b1;
35964 let Inst{21-16} = 0b000010;
35965 let Inst{31-24} = 0b00011110;
35966 let hasNewValue = 1;
35967 let opNewValue = 0;
35968 let DecoderNamespace = "EXT_mmvec";
35969 let Constraints = "$Vx32 = $Vx32in";
35970 }
35971 def V6_vsubhnq_alt : HInst<
35972 (outs HvxVR:$Vx32),
35973 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
35974 "if (!$Qv4.h) $Vx32.h -= $Vu32.h",
35975 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35976 let hasNewValue = 1;
35977 let opNewValue = 0;
35978 let isPseudo = 1;
35979 let isCodeGenOnly = 1;
35980 let DecoderNamespace = "EXT_mmvec";
35981 let Constraints = "$Vx32 = $Vx32in";
35982 }
35983 def V6_vsubhq : HInst<
35984 (outs HvxVR:$Vx32),
35985 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
35986 "if ($Qv4) $Vx32.h -= $Vu32.h",
35987 tc_a3127e12, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
35988 let Inst{7-5} = 0b111;
35989 let Inst{13-13} = 0b1;
35990 let Inst{21-16} = 0b000001;
35991 let Inst{31-24} = 0b00011110;
35992 let hasNewValue = 1;
35993 let opNewValue = 0;
35994 let DecoderNamespace = "EXT_mmvec";
35995 let Constraints = "$Vx32 = $Vx32in";
35996 }
35997 def V6_vsubhq_alt : HInst<
35998 (outs HvxVR:$Vx32),
35999 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
36000 "if ($Qv4.h) $Vx32.h -= $Vu32.h",
36001 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36002 let hasNewValue = 1;
36003 let opNewValue = 0;
36004 let isPseudo = 1;
36005 let isCodeGenOnly = 1;
36006 let DecoderNamespace = "EXT_mmvec";
36007 let Constraints = "$Vx32 = $Vx32in";
36008 }
36009 def V6_vsubhsat : HInst<
36010 (outs HvxVR:$Vd32),
36011 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36012 "$Vd32.h = vsub($Vu32.h,$Vv32.h):sat",
36013 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
36014 let Inst{7-5} = 0b010;
36015 let Inst{13-13} = 0b0;
36016 let Inst{31-21} = 0b00011100011;
36017 let hasNewValue = 1;
36018 let opNewValue = 0;
36019 let DecoderNamespace = "EXT_mmvec";
36020 }
36021 def V6_vsubhsat_alt : HInst<
36022 (outs HvxVR:$Vd32),
36023 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36024 "$Vd32 = vsubh($Vu32,$Vv32):sat",
36025 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36026 let hasNewValue = 1;
36027 let opNewValue = 0;
36028 let isPseudo = 1;
36029 let isCodeGenOnly = 1;
36030 let DecoderNamespace = "EXT_mmvec";
36031 }
36032 def V6_vsubhsat_dv : HInst<
36033 (outs HvxWR:$Vdd32),
36034 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36035 "$Vdd32.h = vsub($Vuu32.h,$Vvv32.h):sat",
36036 tc_97c165b9, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
36037 let Inst{7-5} = 0b000;
36038 let Inst{13-13} = 0b0;
36039 let Inst{31-21} = 0b00011100101;
36040 let hasNewValue = 1;
36041 let opNewValue = 0;
36042 let DecoderNamespace = "EXT_mmvec";
36043 }
36044 def V6_vsubhsat_dv_alt : HInst<
36045 (outs HvxWR:$Vdd32),
36046 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36047 "$Vdd32 = vsubh($Vuu32,$Vvv32):sat",
36048 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36049 let hasNewValue = 1;
36050 let opNewValue = 0;
36051 let isPseudo = 1;
36052 let isCodeGenOnly = 1;
36053 let DecoderNamespace = "EXT_mmvec";
36054 }
36055 def V6_vsubhw : HInst<
36056 (outs HvxWR:$Vdd32),
36057 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36058 "$Vdd32.w = vsub($Vu32.h,$Vv32.h)",
36059 tc_eda67dcd, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
36060 let Inst{7-5} = 0b111;
36061 let Inst{13-13} = 0b0;
36062 let Inst{31-21} = 0b00011100101;
36063 let hasNewValue = 1;
36064 let opNewValue = 0;
36065 let DecoderNamespace = "EXT_mmvec";
36066 }
36067 def V6_vsubhw_alt : HInst<
36068 (outs HvxWR:$Vdd32),
36069 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36070 "$Vdd32 = vsubh($Vu32,$Vv32)",
36071 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36072 let hasNewValue = 1;
36073 let opNewValue = 0;
36074 let isPseudo = 1;
36075 let isCodeGenOnly = 1;
36076 let DecoderNamespace = "EXT_mmvec";
36077 }
36078 def V6_vsububh : HInst<
36079 (outs HvxWR:$Vdd32),
36080 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36081 "$Vdd32.h = vsub($Vu32.ub,$Vv32.ub)",
36082 tc_eda67dcd, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
36083 let Inst{7-5} = 0b101;
36084 let Inst{13-13} = 0b0;
36085 let Inst{31-21} = 0b00011100101;
36086 let hasNewValue = 1;
36087 let opNewValue = 0;
36088 let DecoderNamespace = "EXT_mmvec";
36089 }
36090 def V6_vsububh_alt : HInst<
36091 (outs HvxWR:$Vdd32),
36092 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36093 "$Vdd32 = vsubub($Vu32,$Vv32)",
36094 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36095 let hasNewValue = 1;
36096 let opNewValue = 0;
36097 let isPseudo = 1;
36098 let isCodeGenOnly = 1;
36099 let DecoderNamespace = "EXT_mmvec";
36100 }
36101 def V6_vsububsat : HInst<
36102 (outs HvxVR:$Vd32),
36103 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36104 "$Vd32.ub = vsub($Vu32.ub,$Vv32.ub):sat",
36105 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
36106 let Inst{7-5} = 0b000;
36107 let Inst{13-13} = 0b0;
36108 let Inst{31-21} = 0b00011100011;
36109 let hasNewValue = 1;
36110 let opNewValue = 0;
36111 let DecoderNamespace = "EXT_mmvec";
36112 }
36113 def V6_vsububsat_alt : HInst<
36114 (outs HvxVR:$Vd32),
36115 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36116 "$Vd32 = vsubub($Vu32,$Vv32):sat",
36117 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36118 let hasNewValue = 1;
36119 let opNewValue = 0;
36120 let isPseudo = 1;
36121 let isCodeGenOnly = 1;
36122 let DecoderNamespace = "EXT_mmvec";
36123 }
36124 def V6_vsububsat_dv : HInst<
36125 (outs HvxWR:$Vdd32),
36126 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36127 "$Vdd32.ub = vsub($Vuu32.ub,$Vvv32.ub):sat",
36128 tc_97c165b9, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
36129 let Inst{7-5} = 0b110;
36130 let Inst{13-13} = 0b0;
36131 let Inst{31-21} = 0b00011100100;
36132 let hasNewValue = 1;
36133 let opNewValue = 0;
36134 let DecoderNamespace = "EXT_mmvec";
36135 }
36136 def V6_vsububsat_dv_alt : HInst<
36137 (outs HvxWR:$Vdd32),
36138 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36139 "$Vdd32 = vsubub($Vuu32,$Vvv32):sat",
36140 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36141 let hasNewValue = 1;
36142 let opNewValue = 0;
36143 let isPseudo = 1;
36144 let isCodeGenOnly = 1;
36145 let DecoderNamespace = "EXT_mmvec";
36146 }
36147 def V6_vsubububb_sat : HInst<
36148 (outs HvxVR:$Vd32),
36149 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36150 "$Vd32.ub = vsub($Vu32.ub,$Vv32.b):sat",
36151 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
36152 let Inst{7-5} = 0b101;
36153 let Inst{13-13} = 0b0;
36154 let Inst{31-21} = 0b00011110101;
36155 let hasNewValue = 1;
36156 let opNewValue = 0;
36157 let DecoderNamespace = "EXT_mmvec";
36158 }
36159 def V6_vsubuhsat : HInst<
36160 (outs HvxVR:$Vd32),
36161 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36162 "$Vd32.uh = vsub($Vu32.uh,$Vv32.uh):sat",
36163 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
36164 let Inst{7-5} = 0b001;
36165 let Inst{13-13} = 0b0;
36166 let Inst{31-21} = 0b00011100011;
36167 let hasNewValue = 1;
36168 let opNewValue = 0;
36169 let DecoderNamespace = "EXT_mmvec";
36170 }
36171 def V6_vsubuhsat_alt : HInst<
36172 (outs HvxVR:$Vd32),
36173 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36174 "$Vd32 = vsubuh($Vu32,$Vv32):sat",
36175 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36176 let hasNewValue = 1;
36177 let opNewValue = 0;
36178 let isPseudo = 1;
36179 let isCodeGenOnly = 1;
36180 let DecoderNamespace = "EXT_mmvec";
36181 }
36182 def V6_vsubuhsat_dv : HInst<
36183 (outs HvxWR:$Vdd32),
36184 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36185 "$Vdd32.uh = vsub($Vuu32.uh,$Vvv32.uh):sat",
36186 tc_97c165b9, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
36187 let Inst{7-5} = 0b111;
36188 let Inst{13-13} = 0b0;
36189 let Inst{31-21} = 0b00011100100;
36190 let hasNewValue = 1;
36191 let opNewValue = 0;
36192 let DecoderNamespace = "EXT_mmvec";
36193 }
36194 def V6_vsubuhsat_dv_alt : HInst<
36195 (outs HvxWR:$Vdd32),
36196 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36197 "$Vdd32 = vsubuh($Vuu32,$Vvv32):sat",
36198 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36199 let hasNewValue = 1;
36200 let opNewValue = 0;
36201 let isPseudo = 1;
36202 let isCodeGenOnly = 1;
36203 let DecoderNamespace = "EXT_mmvec";
36204 }
36205 def V6_vsubuhw : HInst<
36206 (outs HvxWR:$Vdd32),
36207 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36208 "$Vdd32.w = vsub($Vu32.uh,$Vv32.uh)",
36209 tc_eda67dcd, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
36210 let Inst{7-5} = 0b110;
36211 let Inst{13-13} = 0b0;
36212 let Inst{31-21} = 0b00011100101;
36213 let hasNewValue = 1;
36214 let opNewValue = 0;
36215 let DecoderNamespace = "EXT_mmvec";
36216 }
36217 def V6_vsubuhw_alt : HInst<
36218 (outs HvxWR:$Vdd32),
36219 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36220 "$Vdd32 = vsubuh($Vu32,$Vv32)",
36221 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36222 let hasNewValue = 1;
36223 let opNewValue = 0;
36224 let isPseudo = 1;
36225 let isCodeGenOnly = 1;
36226 let DecoderNamespace = "EXT_mmvec";
36227 }
36228 def V6_vsubuwsat : HInst<
36229 (outs HvxVR:$Vd32),
36230 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36231 "$Vd32.uw = vsub($Vu32.uw,$Vv32.uw):sat",
36232 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
36233 let Inst{7-5} = 0b100;
36234 let Inst{13-13} = 0b0;
36235 let Inst{31-21} = 0b00011111110;
36236 let hasNewValue = 1;
36237 let opNewValue = 0;
36238 let DecoderNamespace = "EXT_mmvec";
36239 }
36240 def V6_vsubuwsat_alt : HInst<
36241 (outs HvxVR:$Vd32),
36242 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36243 "$Vd32 = vsubuw($Vu32,$Vv32):sat",
36244 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
36245 let hasNewValue = 1;
36246 let opNewValue = 0;
36247 let isPseudo = 1;
36248 let isCodeGenOnly = 1;
36249 let DecoderNamespace = "EXT_mmvec";
36250 }
36251 def V6_vsubuwsat_dv : HInst<
36252 (outs HvxWR:$Vdd32),
36253 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36254 "$Vdd32.uw = vsub($Vuu32.uw,$Vvv32.uw):sat",
36255 tc_97c165b9, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV62]> {
36256 let Inst{7-5} = 0b011;
36257 let Inst{13-13} = 0b0;
36258 let Inst{31-21} = 0b00011110101;
36259 let hasNewValue = 1;
36260 let opNewValue = 0;
36261 let DecoderNamespace = "EXT_mmvec";
36262 }
36263 def V6_vsubuwsat_dv_alt : HInst<
36264 (outs HvxWR:$Vdd32),
36265 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36266 "$Vdd32 = vsubuw($Vuu32,$Vvv32):sat",
36267 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
36268 let hasNewValue = 1;
36269 let opNewValue = 0;
36270 let isPseudo = 1;
36271 let isCodeGenOnly = 1;
36272 let DecoderNamespace = "EXT_mmvec";
36273 }
36274 def V6_vsubw : HInst<
36275 (outs HvxVR:$Vd32),
36276 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36277 "$Vd32.w = vsub($Vu32.w,$Vv32.w)",
36278 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
36279 let Inst{7-5} = 0b111;
36280 let Inst{13-13} = 0b0;
36281 let Inst{31-21} = 0b00011100010;
36282 let hasNewValue = 1;
36283 let opNewValue = 0;
36284 let DecoderNamespace = "EXT_mmvec";
36285 }
36286 def V6_vsubw_alt : HInst<
36287 (outs HvxVR:$Vd32),
36288 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36289 "$Vd32 = vsubw($Vu32,$Vv32)",
36290 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36291 let hasNewValue = 1;
36292 let opNewValue = 0;
36293 let isPseudo = 1;
36294 let isCodeGenOnly = 1;
36295 let DecoderNamespace = "EXT_mmvec";
36296 }
36297 def V6_vsubw_dv : HInst<
36298 (outs HvxWR:$Vdd32),
36299 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36300 "$Vdd32.w = vsub($Vuu32.w,$Vvv32.w)",
36301 tc_97c165b9, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
36302 let Inst{7-5} = 0b101;
36303 let Inst{13-13} = 0b0;
36304 let Inst{31-21} = 0b00011100100;
36305 let hasNewValue = 1;
36306 let opNewValue = 0;
36307 let DecoderNamespace = "EXT_mmvec";
36308 }
36309 def V6_vsubw_dv_alt : HInst<
36310 (outs HvxWR:$Vdd32),
36311 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36312 "$Vdd32 = vsubw($Vuu32,$Vvv32)",
36313 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36314 let hasNewValue = 1;
36315 let opNewValue = 0;
36316 let isPseudo = 1;
36317 let isCodeGenOnly = 1;
36318 let DecoderNamespace = "EXT_mmvec";
36319 }
36320 def V6_vsubwnq : HInst<
36321 (outs HvxVR:$Vx32),
36322 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
36323 "if (!$Qv4) $Vx32.w -= $Vu32.w",
36324 tc_a3127e12, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
36325 let Inst{7-5} = 0b011;
36326 let Inst{13-13} = 0b1;
36327 let Inst{21-16} = 0b000010;
36328 let Inst{31-24} = 0b00011110;
36329 let hasNewValue = 1;
36330 let opNewValue = 0;
36331 let DecoderNamespace = "EXT_mmvec";
36332 let Constraints = "$Vx32 = $Vx32in";
36333 }
36334 def V6_vsubwnq_alt : HInst<
36335 (outs HvxVR:$Vx32),
36336 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
36337 "if (!$Qv4.w) $Vx32.w -= $Vu32.w",
36338 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36339 let hasNewValue = 1;
36340 let opNewValue = 0;
36341 let isPseudo = 1;
36342 let isCodeGenOnly = 1;
36343 let DecoderNamespace = "EXT_mmvec";
36344 let Constraints = "$Vx32 = $Vx32in";
36345 }
36346 def V6_vsubwq : HInst<
36347 (outs HvxVR:$Vx32),
36348 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
36349 "if ($Qv4) $Vx32.w -= $Vu32.w",
36350 tc_a3127e12, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
36351 let Inst{7-5} = 0b000;
36352 let Inst{13-13} = 0b1;
36353 let Inst{21-16} = 0b000010;
36354 let Inst{31-24} = 0b00011110;
36355 let hasNewValue = 1;
36356 let opNewValue = 0;
36357 let DecoderNamespace = "EXT_mmvec";
36358 let Constraints = "$Vx32 = $Vx32in";
36359 }
36360 def V6_vsubwq_alt : HInst<
36361 (outs HvxVR:$Vx32),
36362 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
36363 "if ($Qv4.w) $Vx32.w -= $Vu32.w",
36364 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36365 let hasNewValue = 1;
36366 let opNewValue = 0;
36367 let isPseudo = 1;
36368 let isCodeGenOnly = 1;
36369 let DecoderNamespace = "EXT_mmvec";
36370 let Constraints = "$Vx32 = $Vx32in";
36371 }
36372 def V6_vsubwsat : HInst<
36373 (outs HvxVR:$Vd32),
36374 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36375 "$Vd32.w = vsub($Vu32.w,$Vv32.w):sat",
36376 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
36377 let Inst{7-5} = 0b011;
36378 let Inst{13-13} = 0b0;
36379 let Inst{31-21} = 0b00011100011;
36380 let hasNewValue = 1;
36381 let opNewValue = 0;
36382 let DecoderNamespace = "EXT_mmvec";
36383 }
36384 def V6_vsubwsat_alt : HInst<
36385 (outs HvxVR:$Vd32),
36386 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36387 "$Vd32 = vsubw($Vu32,$Vv32):sat",
36388 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36389 let hasNewValue = 1;
36390 let opNewValue = 0;
36391 let isPseudo = 1;
36392 let isCodeGenOnly = 1;
36393 let DecoderNamespace = "EXT_mmvec";
36394 }
36395 def V6_vsubwsat_dv : HInst<
36396 (outs HvxWR:$Vdd32),
36397 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36398 "$Vdd32.w = vsub($Vuu32.w,$Vvv32.w):sat",
36399 tc_97c165b9, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
36400 let Inst{7-5} = 0b001;
36401 let Inst{13-13} = 0b0;
36402 let Inst{31-21} = 0b00011100101;
36403 let hasNewValue = 1;
36404 let opNewValue = 0;
36405 let DecoderNamespace = "EXT_mmvec";
36406 }
36407 def V6_vsubwsat_dv_alt : HInst<
36408 (outs HvxWR:$Vdd32),
36409 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36410 "$Vdd32 = vsubw($Vuu32,$Vvv32):sat",
36411 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36412 let hasNewValue = 1;
36413 let opNewValue = 0;
36414 let isPseudo = 1;
36415 let isCodeGenOnly = 1;
36416 let DecoderNamespace = "EXT_mmvec";
36417 }
36418 def V6_vswap : HInst<
36419 (outs HvxWR:$Vdd32),
36420 (ins HvxQR:$Qt4, HvxVR:$Vu32, HvxVR:$Vv32),
36421 "$Vdd32 = vswap($Qt4,$Vu32,$Vv32)",
36422 tc_316c637c, TypeCVI_VA_DV>, Enc_3dac0b, Requires<[UseHVXV60]> {
36423 let Inst{7-7} = 0b0;
36424 let Inst{13-13} = 0b1;
36425 let Inst{31-21} = 0b00011110101;
36426 let hasNewValue = 1;
36427 let opNewValue = 0;
36428 let DecoderNamespace = "EXT_mmvec";
36429 }
36430 def V6_vtmpyb : HInst<
36431 (outs HvxWR:$Vdd32),
36432 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
36433 "$Vdd32.h = vtmpy($Vuu32.b,$Rt32.b)",
36434 tc_7c3f55c4, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV60]> {
36435 let Inst{7-5} = 0b000;
36436 let Inst{13-13} = 0b0;
36437 let Inst{31-21} = 0b00011001000;
36438 let hasNewValue = 1;
36439 let opNewValue = 0;
36440 let DecoderNamespace = "EXT_mmvec";
36441 }
36442 def V6_vtmpyb_acc : HInst<
36443 (outs HvxWR:$Vxx32),
36444 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
36445 "$Vxx32.h += vtmpy($Vuu32.b,$Rt32.b)",
36446 tc_d98f4d63, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV60]> {
36447 let Inst{7-5} = 0b000;
36448 let Inst{13-13} = 0b1;
36449 let Inst{31-21} = 0b00011001000;
36450 let hasNewValue = 1;
36451 let opNewValue = 0;
36452 let isAccumulator = 1;
36453 let DecoderNamespace = "EXT_mmvec";
36454 let Constraints = "$Vxx32 = $Vxx32in";
36455 }
36456 def V6_vtmpyb_acc_alt : HInst<
36457 (outs HvxWR:$Vxx32),
36458 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
36459 "$Vxx32 += vtmpyb($Vuu32,$Rt32)",
36460 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36461 let hasNewValue = 1;
36462 let opNewValue = 0;
36463 let isAccumulator = 1;
36464 let isPseudo = 1;
36465 let isCodeGenOnly = 1;
36466 let DecoderNamespace = "EXT_mmvec";
36467 let Constraints = "$Vxx32 = $Vxx32in";
36468 }
36469 def V6_vtmpyb_alt : HInst<
36470 (outs HvxWR:$Vdd32),
36471 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
36472 "$Vdd32 = vtmpyb($Vuu32,$Rt32)",
36473 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36474 let hasNewValue = 1;
36475 let opNewValue = 0;
36476 let isPseudo = 1;
36477 let isCodeGenOnly = 1;
36478 let DecoderNamespace = "EXT_mmvec";
36479 }
36480 def V6_vtmpybus : HInst<
36481 (outs HvxWR:$Vdd32),
36482 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
36483 "$Vdd32.h = vtmpy($Vuu32.ub,$Rt32.b)",
36484 tc_7c3f55c4, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV60]> {
36485 let Inst{7-5} = 0b001;
36486 let Inst{13-13} = 0b0;
36487 let Inst{31-21} = 0b00011001000;
36488 let hasNewValue = 1;
36489 let opNewValue = 0;
36490 let DecoderNamespace = "EXT_mmvec";
36491 }
36492 def V6_vtmpybus_acc : HInst<
36493 (outs HvxWR:$Vxx32),
36494 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
36495 "$Vxx32.h += vtmpy($Vuu32.ub,$Rt32.b)",
36496 tc_d98f4d63, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV60]> {
36497 let Inst{7-5} = 0b001;
36498 let Inst{13-13} = 0b1;
36499 let Inst{31-21} = 0b00011001000;
36500 let hasNewValue = 1;
36501 let opNewValue = 0;
36502 let isAccumulator = 1;
36503 let DecoderNamespace = "EXT_mmvec";
36504 let Constraints = "$Vxx32 = $Vxx32in";
36505 }
36506 def V6_vtmpybus_acc_alt : HInst<
36507 (outs HvxWR:$Vxx32),
36508 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
36509 "$Vxx32 += vtmpybus($Vuu32,$Rt32)",
36510 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36511 let hasNewValue = 1;
36512 let opNewValue = 0;
36513 let isAccumulator = 1;
36514 let isPseudo = 1;
36515 let isCodeGenOnly = 1;
36516 let DecoderNamespace = "EXT_mmvec";
36517 let Constraints = "$Vxx32 = $Vxx32in";
36518 }
36519 def V6_vtmpybus_alt : HInst<
36520 (outs HvxWR:$Vdd32),
36521 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
36522 "$Vdd32 = vtmpybus($Vuu32,$Rt32)",
36523 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36524 let hasNewValue = 1;
36525 let opNewValue = 0;
36526 let isPseudo = 1;
36527 let isCodeGenOnly = 1;
36528 let DecoderNamespace = "EXT_mmvec";
36529 }
36530 def V6_vtmpyhb : HInst<
36531 (outs HvxWR:$Vdd32),
36532 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
36533 "$Vdd32.w = vtmpy($Vuu32.h,$Rt32.b)",
36534 tc_7c3f55c4, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV60]> {
36535 let Inst{7-5} = 0b100;
36536 let Inst{13-13} = 0b0;
36537 let Inst{31-21} = 0b00011001101;
36538 let hasNewValue = 1;
36539 let opNewValue = 0;
36540 let DecoderNamespace = "EXT_mmvec";
36541 }
36542 def V6_vtmpyhb_acc : HInst<
36543 (outs HvxWR:$Vxx32),
36544 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
36545 "$Vxx32.w += vtmpy($Vuu32.h,$Rt32.b)",
36546 tc_d98f4d63, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV60]> {
36547 let Inst{7-5} = 0b010;
36548 let Inst{13-13} = 0b1;
36549 let Inst{31-21} = 0b00011001000;
36550 let hasNewValue = 1;
36551 let opNewValue = 0;
36552 let isAccumulator = 1;
36553 let DecoderNamespace = "EXT_mmvec";
36554 let Constraints = "$Vxx32 = $Vxx32in";
36555 }
36556 def V6_vtmpyhb_acc_alt : HInst<
36557 (outs HvxWR:$Vxx32),
36558 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
36559 "$Vxx32 += vtmpyhb($Vuu32,$Rt32)",
36560 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36561 let hasNewValue = 1;
36562 let opNewValue = 0;
36563 let isAccumulator = 1;
36564 let isPseudo = 1;
36565 let isCodeGenOnly = 1;
36566 let DecoderNamespace = "EXT_mmvec";
36567 let Constraints = "$Vxx32 = $Vxx32in";
36568 }
36569 def V6_vtmpyhb_alt : HInst<
36570 (outs HvxWR:$Vdd32),
36571 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
36572 "$Vdd32 = vtmpyhb($Vuu32,$Rt32)",
36573 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36574 let hasNewValue = 1;
36575 let opNewValue = 0;
36576 let isPseudo = 1;
36577 let isCodeGenOnly = 1;
36578 let DecoderNamespace = "EXT_mmvec";
36579 }
36580 def V6_vtran2x2_map : HInst<
36581 (outs HvxVR:$Vy32, HvxVR:$Vx32),
36582 (ins HvxVR:$Vy32in, HvxVR:$Vx32in, IntRegs:$Rt32),
36583 "vtrans2x2($Vy32,$Vx32,$Rt32)",
36584 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36585 let hasNewValue = 1;
36586 let opNewValue = 0;
36587 let hasNewValue2 = 1;
36588 let opNewValue2 = 1;
36589 let isPseudo = 1;
36590 let isCodeGenOnly = 1;
36591 let DecoderNamespace = "EXT_mmvec";
36592 let Constraints = "$Vy32 = $Vy32in, $Vx32 = $Vx32in";
36593 }
36594 def V6_vunpackb : HInst<
36595 (outs HvxWR:$Vdd32),
36596 (ins HvxVR:$Vu32),
36597 "$Vdd32.h = vunpack($Vu32.b)",
36598 tc_d7bea0ec, TypeCVI_VP_VS>, Enc_dd766a, Requires<[UseHVXV60]> {
36599 let Inst{7-5} = 0b010;
36600 let Inst{13-13} = 0b0;
36601 let Inst{31-16} = 0b0001111000000001;
36602 let hasNewValue = 1;
36603 let opNewValue = 0;
36604 let DecoderNamespace = "EXT_mmvec";
36605 }
36606 def V6_vunpackb_alt : HInst<
36607 (outs HvxWR:$Vdd32),
36608 (ins HvxVR:$Vu32),
36609 "$Vdd32 = vunpackb($Vu32)",
36610 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36611 let hasNewValue = 1;
36612 let opNewValue = 0;
36613 let isPseudo = 1;
36614 let isCodeGenOnly = 1;
36615 let DecoderNamespace = "EXT_mmvec";
36616 }
36617 def V6_vunpackh : HInst<
36618 (outs HvxWR:$Vdd32),
36619 (ins HvxVR:$Vu32),
36620 "$Vdd32.w = vunpack($Vu32.h)",
36621 tc_d7bea0ec, TypeCVI_VP_VS>, Enc_dd766a, Requires<[UseHVXV60]> {
36622 let Inst{7-5} = 0b011;
36623 let Inst{13-13} = 0b0;
36624 let Inst{31-16} = 0b0001111000000001;
36625 let hasNewValue = 1;
36626 let opNewValue = 0;
36627 let DecoderNamespace = "EXT_mmvec";
36628 }
36629 def V6_vunpackh_alt : HInst<
36630 (outs HvxWR:$Vdd32),
36631 (ins HvxVR:$Vu32),
36632 "$Vdd32 = vunpackh($Vu32)",
36633 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36634 let hasNewValue = 1;
36635 let opNewValue = 0;
36636 let isPseudo = 1;
36637 let isCodeGenOnly = 1;
36638 let DecoderNamespace = "EXT_mmvec";
36639 }
36640 def V6_vunpackob : HInst<
36641 (outs HvxWR:$Vxx32),
36642 (ins HvxWR:$Vxx32in, HvxVR:$Vu32),
36643 "$Vxx32.h |= vunpacko($Vu32.b)",
36644 tc_72ad7b54, TypeCVI_VP_VS>, Enc_500cb0, Requires<[UseHVXV60]> {
36645 let Inst{7-5} = 0b000;
36646 let Inst{13-13} = 0b1;
36647 let Inst{31-16} = 0b0001111000000000;
36648 let hasNewValue = 1;
36649 let opNewValue = 0;
36650 let isAccumulator = 1;
36651 let DecoderNamespace = "EXT_mmvec";
36652 let Constraints = "$Vxx32 = $Vxx32in";
36653 }
36654 def V6_vunpackob_alt : HInst<
36655 (outs HvxWR:$Vxx32),
36656 (ins HvxWR:$Vxx32in, HvxVR:$Vu32),
36657 "$Vxx32 |= vunpackob($Vu32)",
36658 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36659 let hasNewValue = 1;
36660 let opNewValue = 0;
36661 let isAccumulator = 1;
36662 let isPseudo = 1;
36663 let DecoderNamespace = "EXT_mmvec";
36664 let Constraints = "$Vxx32 = $Vxx32in";
36665 }
36666 def V6_vunpackoh : HInst<
36667 (outs HvxWR:$Vxx32),
36668 (ins HvxWR:$Vxx32in, HvxVR:$Vu32),
36669 "$Vxx32.w |= vunpacko($Vu32.h)",
36670 tc_72ad7b54, TypeCVI_VP_VS>, Enc_500cb0, Requires<[UseHVXV60]> {
36671 let Inst{7-5} = 0b001;
36672 let Inst{13-13} = 0b1;
36673 let Inst{31-16} = 0b0001111000000000;
36674 let hasNewValue = 1;
36675 let opNewValue = 0;
36676 let isAccumulator = 1;
36677 let DecoderNamespace = "EXT_mmvec";
36678 let Constraints = "$Vxx32 = $Vxx32in";
36679 }
36680 def V6_vunpackoh_alt : HInst<
36681 (outs HvxWR:$Vxx32),
36682 (ins HvxWR:$Vxx32in, HvxVR:$Vu32),
36683 "$Vxx32 |= vunpackoh($Vu32)",
36684 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36685 let hasNewValue = 1;
36686 let opNewValue = 0;
36687 let isAccumulator = 1;
36688 let isPseudo = 1;
36689 let isCodeGenOnly = 1;
36690 let DecoderNamespace = "EXT_mmvec";
36691 let Constraints = "$Vxx32 = $Vxx32in";
36692 }
36693 def V6_vunpackub : HInst<
36694 (outs HvxWR:$Vdd32),
36695 (ins HvxVR:$Vu32),
36696 "$Vdd32.uh = vunpack($Vu32.ub)",
36697 tc_d7bea0ec, TypeCVI_VP_VS>, Enc_dd766a, Requires<[UseHVXV60]> {
36698 let Inst{7-5} = 0b000;
36699 let Inst{13-13} = 0b0;
36700 let Inst{31-16} = 0b0001111000000001;
36701 let hasNewValue = 1;
36702 let opNewValue = 0;
36703 let DecoderNamespace = "EXT_mmvec";
36704 }
36705 def V6_vunpackub_alt : HInst<
36706 (outs HvxWR:$Vdd32),
36707 (ins HvxVR:$Vu32),
36708 "$Vdd32 = vunpackub($Vu32)",
36709 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36710 let hasNewValue = 1;
36711 let opNewValue = 0;
36712 let isPseudo = 1;
36713 let isCodeGenOnly = 1;
36714 let DecoderNamespace = "EXT_mmvec";
36715 }
36716 def V6_vunpackuh : HInst<
36717 (outs HvxWR:$Vdd32),
36718 (ins HvxVR:$Vu32),
36719 "$Vdd32.uw = vunpack($Vu32.uh)",
36720 tc_d7bea0ec, TypeCVI_VP_VS>, Enc_dd766a, Requires<[UseHVXV60]> {
36721 let Inst{7-5} = 0b001;
36722 let Inst{13-13} = 0b0;
36723 let Inst{31-16} = 0b0001111000000001;
36724 let hasNewValue = 1;
36725 let opNewValue = 0;
36726 let DecoderNamespace = "EXT_mmvec";
36727 }
36728 def V6_vunpackuh_alt : HInst<
36729 (outs HvxWR:$Vdd32),
36730 (ins HvxVR:$Vu32),
36731 "$Vdd32 = vunpackuh($Vu32)",
36732 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36733 let hasNewValue = 1;
36734 let opNewValue = 0;
36735 let isPseudo = 1;
36736 let isCodeGenOnly = 1;
36737 let DecoderNamespace = "EXT_mmvec";
36738 }
36739 def V6_vwhist128 : HInst<
36740 (outs),
36741 (ins),
36742 "vwhist128",
36743 tc_e5053c8f, TypeCVI_HIST>, Enc_e3b0c4, Requires<[UseHVXV62]> {
36744 let Inst{13-0} = 0b10010010000000;
36745 let Inst{31-16} = 0b0001111000000000;
36746 let DecoderNamespace = "EXT_mmvec";
36747 }
36748 def V6_vwhist128m : HInst<
36749 (outs),
36750 (ins u1_0Imm:$Ii),
36751 "vwhist128(#$Ii)",
36752 tc_b77635b4, TypeCVI_HIST>, Enc_efaed8, Requires<[UseHVXV62]> {
36753 let Inst{7-0} = 0b10000000;
36754 let Inst{13-9} = 0b10011;
36755 let Inst{31-16} = 0b0001111000000000;
36756 let DecoderNamespace = "EXT_mmvec";
36757 }
36758 def V6_vwhist128q : HInst<
36759 (outs),
36760 (ins HvxQR:$Qv4),
36761 "vwhist128($Qv4)",
36762 tc_cedf314b, TypeCVI_HIST>, Enc_217147, Requires<[UseHVXV62]> {
36763 let Inst{13-0} = 0b10010010000000;
36764 let Inst{21-16} = 0b000010;
36765 let Inst{31-24} = 0b00011110;
36766 let DecoderNamespace = "EXT_mmvec";
36767 }
36768 def V6_vwhist128qm : HInst<
36769 (outs),
36770 (ins HvxQR:$Qv4, u1_0Imm:$Ii),
36771 "vwhist128($Qv4,#$Ii)",
36772 tc_28978789, TypeCVI_HIST>, Enc_802dc0, Requires<[UseHVXV62]> {
36773 let Inst{7-0} = 0b10000000;
36774 let Inst{13-9} = 0b10011;
36775 let Inst{21-16} = 0b000010;
36776 let Inst{31-24} = 0b00011110;
36777 let DecoderNamespace = "EXT_mmvec";
36778 }
36779 def V6_vwhist256 : HInst<
36780 (outs),
36781 (ins),
36782 "vwhist256",
36783 tc_e5053c8f, TypeCVI_HIST>, Enc_e3b0c4, Requires<[UseHVXV62]> {
36784 let Inst{13-0} = 0b10001010000000;
36785 let Inst{31-16} = 0b0001111000000000;
36786 let DecoderNamespace = "EXT_mmvec";
36787 }
36788 def V6_vwhist256_sat : HInst<
36789 (outs),
36790 (ins),
36791 "vwhist256:sat",
36792 tc_e5053c8f, TypeCVI_HIST>, Enc_e3b0c4, Requires<[UseHVXV62]> {
36793 let Inst{13-0} = 0b10001110000000;
36794 let Inst{31-16} = 0b0001111000000000;
36795 let DecoderNamespace = "EXT_mmvec";
36796 }
36797 def V6_vwhist256q : HInst<
36798 (outs),
36799 (ins HvxQR:$Qv4),
36800 "vwhist256($Qv4)",
36801 tc_cedf314b, TypeCVI_HIST>, Enc_217147, Requires<[UseHVXV62]> {
36802 let Inst{13-0} = 0b10001010000000;
36803 let Inst{21-16} = 0b000010;
36804 let Inst{31-24} = 0b00011110;
36805 let DecoderNamespace = "EXT_mmvec";
36806 }
36807 def V6_vwhist256q_sat : HInst<
36808 (outs),
36809 (ins HvxQR:$Qv4),
36810 "vwhist256($Qv4):sat",
36811 tc_cedf314b, TypeCVI_HIST>, Enc_217147, Requires<[UseHVXV62]> {
36812 let Inst{13-0} = 0b10001110000000;
36813 let Inst{21-16} = 0b000010;
36814 let Inst{31-24} = 0b00011110;
36815 let DecoderNamespace = "EXT_mmvec";
36816 }
36817 def V6_vxor : HInst<
36818 (outs HvxVR:$Vd32),
36819 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36820 "$Vd32 = vxor($Vu32,$Vv32)",
36821 tc_bbaf280e, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
36822 let Inst{7-5} = 0b111;
36823 let Inst{13-13} = 0b0;
36824 let Inst{31-21} = 0b00011100001;
36825 let hasNewValue = 1;
36826 let opNewValue = 0;
36827 let DecoderNamespace = "EXT_mmvec";
36828 }
36829 def V6_vzb : HInst<
36830 (outs HvxWR:$Vdd32),
36831 (ins HvxVR:$Vu32),
36832 "$Vdd32.uh = vzxt($Vu32.ub)",
36833 tc_644584f8, TypeCVI_VA_DV>, Enc_dd766a, Requires<[UseHVXV60]> {
36834 let Inst{7-5} = 0b001;
36835 let Inst{13-13} = 0b0;
36836 let Inst{31-16} = 0b0001111000000010;
36837 let hasNewValue = 1;
36838 let opNewValue = 0;
36839 let DecoderNamespace = "EXT_mmvec";
36840 }
36841 def V6_vzb_alt : HInst<
36842 (outs HvxWR:$Vdd32),
36843 (ins HvxVR:$Vu32),
36844 "$Vdd32 = vzxtb($Vu32)",
36845 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36846 let hasNewValue = 1;
36847 let opNewValue = 0;
36848 let isPseudo = 1;
36849 let isCodeGenOnly = 1;
36850 let DecoderNamespace = "EXT_mmvec";
36851 }
36852 def V6_vzh : HInst<
36853 (outs HvxWR:$Vdd32),
36854 (ins HvxVR:$Vu32),
36855 "$Vdd32.uw = vzxt($Vu32.uh)",
36856 tc_644584f8, TypeCVI_VA_DV>, Enc_dd766a, Requires<[UseHVXV60]> {
36857 let Inst{7-5} = 0b010;
36858 let Inst{13-13} = 0b0;
36859 let Inst{31-16} = 0b0001111000000010;
36860 let hasNewValue = 1;
36861 let opNewValue = 0;
36862 let DecoderNamespace = "EXT_mmvec";
36863 }
36864 def V6_vzh_alt : HInst<
36865 (outs HvxWR:$Vdd32),
36866 (ins HvxVR:$Vu32),
36867 "$Vdd32 = vzxth($Vu32)",
36868 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36869 let hasNewValue = 1;
36870 let opNewValue = 0;
36871 let isPseudo = 1;
36872 let isCodeGenOnly = 1;
36873 let DecoderNamespace = "EXT_mmvec";
36874 }
36875 def Y2_barrier : HInst<
36876 (outs),
36877 (ins),
36878 "barrier",
36879 tc_367f7f3d, TypeST>, Enc_e3b0c4 {
36880 let Inst{13-0} = 0b00000000000000;
36881 let Inst{31-16} = 0b1010100000000000;
36882 let isSoloAX = 1;
36883 let hasSideEffects = 1;
36884 }
36885 def Y2_break : HInst<
36886 (outs),
36887 (ins),
36888 "brkpt",
36889 tc_4ca572d4, TypeCR>, Enc_e3b0c4 {
36890 let Inst{13-0} = 0b00000000000000;
36891 let Inst{31-16} = 0b0110110000100000;
36892 let isSolo = 1;
36893 }
36894 def Y2_dccleana : HInst<
36895 (outs),
36896 (ins IntRegs:$Rs32),
36897 "dccleana($Rs32)",
36898 tc_00e7c26e, TypeST>, Enc_ecbcc8 {
36899 let Inst{13-0} = 0b00000000000000;
36900 let Inst{31-21} = 0b10100000000;
36901 let isRestrictSlot1AOK = 1;
36902 let hasSideEffects = 1;
36903 }
36904 def Y2_dccleaninva : HInst<
36905 (outs),
36906 (ins IntRegs:$Rs32),
36907 "dccleaninva($Rs32)",
36908 tc_00e7c26e, TypeST>, Enc_ecbcc8 {
36909 let Inst{13-0} = 0b00000000000000;
36910 let Inst{31-21} = 0b10100000010;
36911 let isRestrictSlot1AOK = 1;
36912 let hasSideEffects = 1;
36913 }
36914 def Y2_dcfetch : HInst<
36915 (outs),
36916 (ins IntRegs:$Rs32),
36917 "dcfetch($Rs32)",
36918 tc_3da80ba5, TypeMAPPING> {
36919 let hasSideEffects = 1;
36920 let isPseudo = 1;
36921 let isCodeGenOnly = 1;
36922 }
36923 def Y2_dcfetchbo : HInst<
36924 (outs),
36925 (ins IntRegs:$Rs32, u11_3Imm:$Ii),
36926 "dcfetch($Rs32+#$Ii)",
36927 tc_4d9914c9, TypeLD>, Enc_2d829e {
36928 let Inst{13-11} = 0b000;
36929 let Inst{31-21} = 0b10010100000;
36930 let addrMode = BaseImmOffset;
36931 let isRestrictNoSlot1Store = 1;
36932 let hasSideEffects = 1;
36933 }
36934 def Y2_dcinva : HInst<
36935 (outs),
36936 (ins IntRegs:$Rs32),
36937 "dcinva($Rs32)",
36938 tc_00e7c26e, TypeST>, Enc_ecbcc8 {
36939 let Inst{13-0} = 0b00000000000000;
36940 let Inst{31-21} = 0b10100000001;
36941 let isRestrictSlot1AOK = 1;
36942 let hasSideEffects = 1;
36943 }
36944 def Y2_dczeroa : HInst<
36945 (outs),
36946 (ins IntRegs:$Rs32),
36947 "dczeroa($Rs32)",
36948 tc_00e7c26e, TypeST>, Enc_ecbcc8 {
36949 let Inst{13-0} = 0b00000000000000;
36950 let Inst{31-21} = 0b10100000110;
36951 let isRestrictSlot1AOK = 1;
36952 let mayStore = 1;
36953 let hasSideEffects = 1;
36954 }
36955 def Y2_icinva : HInst<
36956 (outs),
36957 (ins IntRegs:$Rs32),
36958 "icinva($Rs32)",
36959 tc_999d32db, TypeJ>, Enc_ecbcc8 {
36960 let Inst{13-0} = 0b00000000000000;
36961 let Inst{31-21} = 0b01010110110;
36962 let isSolo = 1;
36963 }
36964 def Y2_isync : HInst<
36965 (outs),
36966 (ins),
36967 "isync",
36968 tc_b13761ae, TypeJ>, Enc_e3b0c4 {
36969 let Inst{13-0} = 0b00000000000010;
36970 let Inst{31-16} = 0b0101011111000000;
36971 let isSolo = 1;
36972 }
36973 def Y2_syncht : HInst<
36974 (outs),
36975 (ins),
36976 "syncht",
36977 tc_367f7f3d, TypeST>, Enc_e3b0c4 {
36978 let Inst{13-0} = 0b00000000000000;
36979 let Inst{31-16} = 0b1010100001000000;
36980 let isSolo = 1;
36981 }
36982 def Y4_l2fetch : HInst<
36983 (outs),
36984 (ins IntRegs:$Rs32, IntRegs:$Rt32),
36985 "l2fetch($Rs32,$Rt32)",
36986 tc_daa058fa, TypeST>, Enc_ca3887 {
36987 let Inst{7-0} = 0b00000000;
36988 let Inst{13-13} = 0b0;
36989 let Inst{31-21} = 0b10100110000;
36990 let isSoloAX = 1;
36991 let mayStore = 1;
36992 let hasSideEffects = 1;
36993 }
36994 def Y4_trace : HInst<
36995 (outs),
36996 (ins IntRegs:$Rs32),
36997 "trace($Rs32)",
36998 tc_c82dc1ff, TypeCR>, Enc_ecbcc8 {
36999 let Inst{13-0} = 0b00000000000000;
37000 let Inst{31-21} = 0b01100010010;
37001 let isSoloAX = 1;
37002 }
37003 def Y5_l2fetch : HInst<
37004 (outs),
37005 (ins IntRegs:$Rs32, DoubleRegs:$Rtt32),
37006 "l2fetch($Rs32,$Rtt32)",
37007 tc_daa058fa, TypeST>, Enc_e6abcf, Requires<[HasV5]> {
37008 let Inst{7-0} = 0b00000000;
37009 let Inst{13-13} = 0b0;
37010 let Inst{31-21} = 0b10100110100;
37011 let isSoloAX = 1;
37012 let mayStore = 1;
37013 let hasSideEffects = 1;
37014 }
37015 def dep_A2_addsat : HInst<
37016 (outs IntRegs:$Rd32),
37017 (ins IntRegs:$Rs32, IntRegs:$Rt32),
37018 "$Rd32 = add($Rs32,$Rt32):sat:deprecated",
37019 tc_b44c6e2a, TypeALU64>, Enc_5ab2be {
37020 let Inst{7-5} = 0b000;
37021 let Inst{13-13} = 0b0;
37022 let Inst{31-21} = 0b11010101100;
37023 let hasNewValue = 1;
37024 let opNewValue = 0;
37025 let prefersSlot3 = 1;
37026 let Defs = [USR_OVF];
37027 }
37028 def dep_A2_subsat : HInst<
37029 (outs IntRegs:$Rd32),
37030 (ins IntRegs:$Rt32, IntRegs:$Rs32),
37031 "$Rd32 = sub($Rt32,$Rs32):sat:deprecated",
37032 tc_b44c6e2a, TypeALU64>, Enc_bd6011 {
37033 let Inst{7-5} = 0b100;
37034 let Inst{13-13} = 0b0;
37035 let Inst{31-21} = 0b11010101100;
37036 let hasNewValue = 1;
37037 let opNewValue = 0;
37038 let prefersSlot3 = 1;
37039 let Defs = [USR_OVF];
37040 }
37041 def dep_S2_packhl : HInst<
37042 (outs DoubleRegs:$Rdd32),
37043 (ins IntRegs:$Rs32, IntRegs:$Rt32),
37044 "$Rdd32 = packhl($Rs32,$Rt32):deprecated",
37045 tc_540fdfbc, TypeALU64>, Enc_be32a5 {
37046 let Inst{7-5} = 0b000;
37047 let Inst{13-13} = 0b0;
37048 let Inst{31-21} = 0b11010100000;
37049 }