]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm-project/llvm/lib/Target/Hexagon/HexagonDepInstrInfo.td
MFC r355940:
[FreeBSD/FreeBSD.git] / contrib / llvm-project / llvm / lib / Target / Hexagon / HexagonDepInstrInfo.td
1 //===----------------------------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 // Automatically generated file, please consult code owner before editing.
9 //===----------------------------------------------------------------------===//
10
11 def A2_abs : HInst<
12 (outs IntRegs:$Rd32),
13 (ins IntRegs:$Rs32),
14 "$Rd32 = abs($Rs32)",
15 tc_cf8126ae, TypeS_2op>, Enc_5e2823 {
16 let Inst{13-5} = 0b000000100;
17 let Inst{31-21} = 0b10001100100;
18 let hasNewValue = 1;
19 let opNewValue = 0;
20 let prefersSlot3 = 1;
21 }
22 def A2_absp : HInst<
23 (outs DoubleRegs:$Rdd32),
24 (ins DoubleRegs:$Rss32),
25 "$Rdd32 = abs($Rss32)",
26 tc_cf8126ae, TypeS_2op>, Enc_b9c5fb {
27 let Inst{13-5} = 0b000000110;
28 let Inst{31-21} = 0b10000000100;
29 let prefersSlot3 = 1;
30 }
31 def A2_abssat : HInst<
32 (outs IntRegs:$Rd32),
33 (ins IntRegs:$Rs32),
34 "$Rd32 = abs($Rs32):sat",
35 tc_cf8126ae, TypeS_2op>, Enc_5e2823 {
36 let Inst{13-5} = 0b000000101;
37 let Inst{31-21} = 0b10001100100;
38 let hasNewValue = 1;
39 let opNewValue = 0;
40 let prefersSlot3 = 1;
41 let Defs = [USR_OVF];
42 }
43 def A2_add : HInst<
44 (outs IntRegs:$Rd32),
45 (ins IntRegs:$Rs32, IntRegs:$Rt32),
46 "$Rd32 = add($Rs32,$Rt32)",
47 tc_5a2711e5, TypeALU32_3op>, Enc_5ab2be, PredNewRel, ImmRegRel {
48 let Inst{7-5} = 0b000;
49 let Inst{13-13} = 0b0;
50 let Inst{31-21} = 0b11110011000;
51 let hasNewValue = 1;
52 let opNewValue = 0;
53 let CextOpcode = "A2_add";
54 let InputType = "reg";
55 let BaseOpcode = "A2_add";
56 let isCommutable = 1;
57 let isPredicable = 1;
58 }
59 def A2_addh_h16_hh : HInst<
60 (outs IntRegs:$Rd32),
61 (ins IntRegs:$Rt32, IntRegs:$Rs32),
62 "$Rd32 = add($Rt32.h,$Rs32.h):<<16",
63 tc_679309b8, TypeALU64>, Enc_bd6011 {
64 let Inst{7-5} = 0b011;
65 let Inst{13-13} = 0b0;
66 let Inst{31-21} = 0b11010101010;
67 let hasNewValue = 1;
68 let opNewValue = 0;
69 let prefersSlot3 = 1;
70 }
71 def A2_addh_h16_hl : HInst<
72 (outs IntRegs:$Rd32),
73 (ins IntRegs:$Rt32, IntRegs:$Rs32),
74 "$Rd32 = add($Rt32.h,$Rs32.l):<<16",
75 tc_679309b8, TypeALU64>, Enc_bd6011 {
76 let Inst{7-5} = 0b010;
77 let Inst{13-13} = 0b0;
78 let Inst{31-21} = 0b11010101010;
79 let hasNewValue = 1;
80 let opNewValue = 0;
81 let prefersSlot3 = 1;
82 }
83 def A2_addh_h16_lh : HInst<
84 (outs IntRegs:$Rd32),
85 (ins IntRegs:$Rt32, IntRegs:$Rs32),
86 "$Rd32 = add($Rt32.l,$Rs32.h):<<16",
87 tc_679309b8, TypeALU64>, Enc_bd6011 {
88 let Inst{7-5} = 0b001;
89 let Inst{13-13} = 0b0;
90 let Inst{31-21} = 0b11010101010;
91 let hasNewValue = 1;
92 let opNewValue = 0;
93 let prefersSlot3 = 1;
94 }
95 def A2_addh_h16_ll : HInst<
96 (outs IntRegs:$Rd32),
97 (ins IntRegs:$Rt32, IntRegs:$Rs32),
98 "$Rd32 = add($Rt32.l,$Rs32.l):<<16",
99 tc_679309b8, TypeALU64>, Enc_bd6011 {
100 let Inst{7-5} = 0b000;
101 let Inst{13-13} = 0b0;
102 let Inst{31-21} = 0b11010101010;
103 let hasNewValue = 1;
104 let opNewValue = 0;
105 let prefersSlot3 = 1;
106 }
107 def A2_addh_h16_sat_hh : HInst<
108 (outs IntRegs:$Rd32),
109 (ins IntRegs:$Rt32, IntRegs:$Rs32),
110 "$Rd32 = add($Rt32.h,$Rs32.h):sat:<<16",
111 tc_779080bf, TypeALU64>, Enc_bd6011 {
112 let Inst{7-5} = 0b111;
113 let Inst{13-13} = 0b0;
114 let Inst{31-21} = 0b11010101010;
115 let hasNewValue = 1;
116 let opNewValue = 0;
117 let prefersSlot3 = 1;
118 let Defs = [USR_OVF];
119 }
120 def A2_addh_h16_sat_hl : HInst<
121 (outs IntRegs:$Rd32),
122 (ins IntRegs:$Rt32, IntRegs:$Rs32),
123 "$Rd32 = add($Rt32.h,$Rs32.l):sat:<<16",
124 tc_779080bf, TypeALU64>, Enc_bd6011 {
125 let Inst{7-5} = 0b110;
126 let Inst{13-13} = 0b0;
127 let Inst{31-21} = 0b11010101010;
128 let hasNewValue = 1;
129 let opNewValue = 0;
130 let prefersSlot3 = 1;
131 let Defs = [USR_OVF];
132 }
133 def A2_addh_h16_sat_lh : HInst<
134 (outs IntRegs:$Rd32),
135 (ins IntRegs:$Rt32, IntRegs:$Rs32),
136 "$Rd32 = add($Rt32.l,$Rs32.h):sat:<<16",
137 tc_779080bf, TypeALU64>, Enc_bd6011 {
138 let Inst{7-5} = 0b101;
139 let Inst{13-13} = 0b0;
140 let Inst{31-21} = 0b11010101010;
141 let hasNewValue = 1;
142 let opNewValue = 0;
143 let prefersSlot3 = 1;
144 let Defs = [USR_OVF];
145 }
146 def A2_addh_h16_sat_ll : HInst<
147 (outs IntRegs:$Rd32),
148 (ins IntRegs:$Rt32, IntRegs:$Rs32),
149 "$Rd32 = add($Rt32.l,$Rs32.l):sat:<<16",
150 tc_779080bf, TypeALU64>, Enc_bd6011 {
151 let Inst{7-5} = 0b100;
152 let Inst{13-13} = 0b0;
153 let Inst{31-21} = 0b11010101010;
154 let hasNewValue = 1;
155 let opNewValue = 0;
156 let prefersSlot3 = 1;
157 let Defs = [USR_OVF];
158 }
159 def A2_addh_l16_hl : HInst<
160 (outs IntRegs:$Rd32),
161 (ins IntRegs:$Rt32, IntRegs:$Rs32),
162 "$Rd32 = add($Rt32.l,$Rs32.h)",
163 tc_4414d8b1, TypeALU64>, Enc_bd6011 {
164 let Inst{7-5} = 0b010;
165 let Inst{13-13} = 0b0;
166 let Inst{31-21} = 0b11010101000;
167 let hasNewValue = 1;
168 let opNewValue = 0;
169 let prefersSlot3 = 1;
170 }
171 def A2_addh_l16_ll : HInst<
172 (outs IntRegs:$Rd32),
173 (ins IntRegs:$Rt32, IntRegs:$Rs32),
174 "$Rd32 = add($Rt32.l,$Rs32.l)",
175 tc_4414d8b1, TypeALU64>, Enc_bd6011 {
176 let Inst{7-5} = 0b000;
177 let Inst{13-13} = 0b0;
178 let Inst{31-21} = 0b11010101000;
179 let hasNewValue = 1;
180 let opNewValue = 0;
181 let prefersSlot3 = 1;
182 }
183 def A2_addh_l16_sat_hl : HInst<
184 (outs IntRegs:$Rd32),
185 (ins IntRegs:$Rt32, IntRegs:$Rs32),
186 "$Rd32 = add($Rt32.l,$Rs32.h):sat",
187 tc_779080bf, TypeALU64>, Enc_bd6011 {
188 let Inst{7-5} = 0b110;
189 let Inst{13-13} = 0b0;
190 let Inst{31-21} = 0b11010101000;
191 let hasNewValue = 1;
192 let opNewValue = 0;
193 let prefersSlot3 = 1;
194 let Defs = [USR_OVF];
195 }
196 def A2_addh_l16_sat_ll : HInst<
197 (outs IntRegs:$Rd32),
198 (ins IntRegs:$Rt32, IntRegs:$Rs32),
199 "$Rd32 = add($Rt32.l,$Rs32.l):sat",
200 tc_779080bf, TypeALU64>, Enc_bd6011 {
201 let Inst{7-5} = 0b100;
202 let Inst{13-13} = 0b0;
203 let Inst{31-21} = 0b11010101000;
204 let hasNewValue = 1;
205 let opNewValue = 0;
206 let prefersSlot3 = 1;
207 let Defs = [USR_OVF];
208 }
209 def A2_addi : HInst<
210 (outs IntRegs:$Rd32),
211 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
212 "$Rd32 = add($Rs32,#$Ii)",
213 tc_5a2711e5, TypeALU32_ADDI>, Enc_cb9321, PredNewRel, ImmRegRel {
214 let Inst{31-28} = 0b1011;
215 let hasNewValue = 1;
216 let opNewValue = 0;
217 let CextOpcode = "A2_add";
218 let InputType = "imm";
219 let BaseOpcode = "A2_addi";
220 let isPredicable = 1;
221 let isAdd = 1;
222 let isExtendable = 1;
223 let opExtendable = 2;
224 let isExtentSigned = 1;
225 let opExtentBits = 16;
226 let opExtentAlign = 0;
227 }
228 def A2_addp : HInst<
229 (outs DoubleRegs:$Rdd32),
230 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
231 "$Rdd32 = add($Rss32,$Rtt32)",
232 tc_946df596, TypeALU64>, Enc_a56825 {
233 let Inst{7-5} = 0b111;
234 let Inst{13-13} = 0b0;
235 let Inst{31-21} = 0b11010011000;
236 let isCommutable = 1;
237 let isAdd = 1;
238 }
239 def A2_addpsat : HInst<
240 (outs DoubleRegs:$Rdd32),
241 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
242 "$Rdd32 = add($Rss32,$Rtt32):sat",
243 tc_779080bf, TypeALU64>, Enc_a56825 {
244 let Inst{7-5} = 0b101;
245 let Inst{13-13} = 0b0;
246 let Inst{31-21} = 0b11010011011;
247 let prefersSlot3 = 1;
248 let Defs = [USR_OVF];
249 let isCommutable = 1;
250 }
251 def A2_addsat : HInst<
252 (outs IntRegs:$Rd32),
253 (ins IntRegs:$Rs32, IntRegs:$Rt32),
254 "$Rd32 = add($Rs32,$Rt32):sat",
255 tc_61830035, TypeALU32_3op>, Enc_5ab2be {
256 let Inst{7-5} = 0b000;
257 let Inst{13-13} = 0b0;
258 let Inst{31-21} = 0b11110110010;
259 let hasNewValue = 1;
260 let opNewValue = 0;
261 let prefersSlot3 = 1;
262 let Defs = [USR_OVF];
263 let InputType = "reg";
264 let isCommutable = 1;
265 }
266 def A2_addsp : HInst<
267 (outs DoubleRegs:$Rdd32),
268 (ins IntRegs:$Rs32, DoubleRegs:$Rtt32),
269 "$Rdd32 = add($Rs32,$Rtt32)",
270 tc_679309b8, TypeALU64> {
271 let isPseudo = 1;
272 }
273 def A2_addsph : HInst<
274 (outs DoubleRegs:$Rdd32),
275 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
276 "$Rdd32 = add($Rss32,$Rtt32):raw:hi",
277 tc_679309b8, TypeALU64>, Enc_a56825 {
278 let Inst{7-5} = 0b111;
279 let Inst{13-13} = 0b0;
280 let Inst{31-21} = 0b11010011011;
281 let prefersSlot3 = 1;
282 }
283 def A2_addspl : HInst<
284 (outs DoubleRegs:$Rdd32),
285 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
286 "$Rdd32 = add($Rss32,$Rtt32):raw:lo",
287 tc_679309b8, TypeALU64>, Enc_a56825 {
288 let Inst{7-5} = 0b110;
289 let Inst{13-13} = 0b0;
290 let Inst{31-21} = 0b11010011011;
291 let prefersSlot3 = 1;
292 }
293 def A2_and : HInst<
294 (outs IntRegs:$Rd32),
295 (ins IntRegs:$Rs32, IntRegs:$Rt32),
296 "$Rd32 = and($Rs32,$Rt32)",
297 tc_5a2711e5, TypeALU32_3op>, Enc_5ab2be, PredNewRel, ImmRegRel {
298 let Inst{7-5} = 0b000;
299 let Inst{13-13} = 0b0;
300 let Inst{31-21} = 0b11110001000;
301 let hasNewValue = 1;
302 let opNewValue = 0;
303 let CextOpcode = "A2_and";
304 let InputType = "reg";
305 let BaseOpcode = "A2_and";
306 let isCommutable = 1;
307 let isPredicable = 1;
308 }
309 def A2_andir : HInst<
310 (outs IntRegs:$Rd32),
311 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
312 "$Rd32 = and($Rs32,#$Ii)",
313 tc_5a2711e5, TypeALU32_2op>, Enc_140c83, ImmRegRel {
314 let Inst{31-22} = 0b0111011000;
315 let hasNewValue = 1;
316 let opNewValue = 0;
317 let CextOpcode = "A2_and";
318 let InputType = "imm";
319 let isExtendable = 1;
320 let opExtendable = 2;
321 let isExtentSigned = 1;
322 let opExtentBits = 10;
323 let opExtentAlign = 0;
324 }
325 def A2_andp : HInst<
326 (outs DoubleRegs:$Rdd32),
327 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
328 "$Rdd32 = and($Rss32,$Rtt32)",
329 tc_946df596, TypeALU64>, Enc_a56825 {
330 let Inst{7-5} = 0b000;
331 let Inst{13-13} = 0b0;
332 let Inst{31-21} = 0b11010011111;
333 let isCommutable = 1;
334 }
335 def A2_aslh : HInst<
336 (outs IntRegs:$Rd32),
337 (ins IntRegs:$Rs32),
338 "$Rd32 = aslh($Rs32)",
339 tc_57890846, TypeALU32_2op>, Enc_5e2823, PredNewRel {
340 let Inst{13-5} = 0b000000000;
341 let Inst{31-21} = 0b01110000000;
342 let hasNewValue = 1;
343 let opNewValue = 0;
344 let BaseOpcode = "A2_aslh";
345 let isPredicable = 1;
346 }
347 def A2_asrh : HInst<
348 (outs IntRegs:$Rd32),
349 (ins IntRegs:$Rs32),
350 "$Rd32 = asrh($Rs32)",
351 tc_57890846, TypeALU32_2op>, Enc_5e2823, PredNewRel {
352 let Inst{13-5} = 0b000000000;
353 let Inst{31-21} = 0b01110000001;
354 let hasNewValue = 1;
355 let opNewValue = 0;
356 let BaseOpcode = "A2_asrh";
357 let isPredicable = 1;
358 }
359 def A2_combine_hh : HInst<
360 (outs IntRegs:$Rd32),
361 (ins IntRegs:$Rt32, IntRegs:$Rs32),
362 "$Rd32 = combine($Rt32.h,$Rs32.h)",
363 tc_5a2711e5, TypeALU32_3op>, Enc_bd6011 {
364 let Inst{7-5} = 0b000;
365 let Inst{13-13} = 0b0;
366 let Inst{31-21} = 0b11110011100;
367 let hasNewValue = 1;
368 let opNewValue = 0;
369 let InputType = "reg";
370 }
371 def A2_combine_hl : HInst<
372 (outs IntRegs:$Rd32),
373 (ins IntRegs:$Rt32, IntRegs:$Rs32),
374 "$Rd32 = combine($Rt32.h,$Rs32.l)",
375 tc_5a2711e5, TypeALU32_3op>, Enc_bd6011 {
376 let Inst{7-5} = 0b000;
377 let Inst{13-13} = 0b0;
378 let Inst{31-21} = 0b11110011101;
379 let hasNewValue = 1;
380 let opNewValue = 0;
381 let InputType = "reg";
382 }
383 def A2_combine_lh : HInst<
384 (outs IntRegs:$Rd32),
385 (ins IntRegs:$Rt32, IntRegs:$Rs32),
386 "$Rd32 = combine($Rt32.l,$Rs32.h)",
387 tc_5a2711e5, TypeALU32_3op>, Enc_bd6011 {
388 let Inst{7-5} = 0b000;
389 let Inst{13-13} = 0b0;
390 let Inst{31-21} = 0b11110011110;
391 let hasNewValue = 1;
392 let opNewValue = 0;
393 let InputType = "reg";
394 }
395 def A2_combine_ll : HInst<
396 (outs IntRegs:$Rd32),
397 (ins IntRegs:$Rt32, IntRegs:$Rs32),
398 "$Rd32 = combine($Rt32.l,$Rs32.l)",
399 tc_5a2711e5, TypeALU32_3op>, Enc_bd6011 {
400 let Inst{7-5} = 0b000;
401 let Inst{13-13} = 0b0;
402 let Inst{31-21} = 0b11110011111;
403 let hasNewValue = 1;
404 let opNewValue = 0;
405 let InputType = "reg";
406 }
407 def A2_combineii : HInst<
408 (outs DoubleRegs:$Rdd32),
409 (ins s32_0Imm:$Ii, s8_0Imm:$II),
410 "$Rdd32 = combine(#$Ii,#$II)",
411 tc_5a2711e5, TypeALU32_2op>, Enc_18c338 {
412 let Inst{31-23} = 0b011111000;
413 let isReMaterializable = 1;
414 let isAsCheapAsAMove = 1;
415 let isMoveImm = 1;
416 let isExtendable = 1;
417 let opExtendable = 1;
418 let isExtentSigned = 1;
419 let opExtentBits = 8;
420 let opExtentAlign = 0;
421 }
422 def A2_combinew : HInst<
423 (outs DoubleRegs:$Rdd32),
424 (ins IntRegs:$Rs32, IntRegs:$Rt32),
425 "$Rdd32 = combine($Rs32,$Rt32)",
426 tc_5a2711e5, TypeALU32_3op>, Enc_be32a5, PredNewRel {
427 let Inst{7-5} = 0b000;
428 let Inst{13-13} = 0b0;
429 let Inst{31-21} = 0b11110101000;
430 let InputType = "reg";
431 let BaseOpcode = "A2_combinew";
432 let isPredicable = 1;
433 }
434 def A2_max : HInst<
435 (outs IntRegs:$Rd32),
436 (ins IntRegs:$Rs32, IntRegs:$Rt32),
437 "$Rd32 = max($Rs32,$Rt32)",
438 tc_779080bf, TypeALU64>, Enc_5ab2be {
439 let Inst{7-5} = 0b000;
440 let Inst{13-13} = 0b0;
441 let Inst{31-21} = 0b11010101110;
442 let hasNewValue = 1;
443 let opNewValue = 0;
444 let prefersSlot3 = 1;
445 }
446 def A2_maxp : HInst<
447 (outs DoubleRegs:$Rdd32),
448 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
449 "$Rdd32 = max($Rss32,$Rtt32)",
450 tc_779080bf, TypeALU64>, Enc_a56825 {
451 let Inst{7-5} = 0b100;
452 let Inst{13-13} = 0b0;
453 let Inst{31-21} = 0b11010011110;
454 let prefersSlot3 = 1;
455 }
456 def A2_maxu : HInst<
457 (outs IntRegs:$Rd32),
458 (ins IntRegs:$Rs32, IntRegs:$Rt32),
459 "$Rd32 = maxu($Rs32,$Rt32)",
460 tc_779080bf, TypeALU64>, Enc_5ab2be {
461 let Inst{7-5} = 0b100;
462 let Inst{13-13} = 0b0;
463 let Inst{31-21} = 0b11010101110;
464 let hasNewValue = 1;
465 let opNewValue = 0;
466 let prefersSlot3 = 1;
467 }
468 def A2_maxup : HInst<
469 (outs DoubleRegs:$Rdd32),
470 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
471 "$Rdd32 = maxu($Rss32,$Rtt32)",
472 tc_779080bf, TypeALU64>, Enc_a56825 {
473 let Inst{7-5} = 0b101;
474 let Inst{13-13} = 0b0;
475 let Inst{31-21} = 0b11010011110;
476 let prefersSlot3 = 1;
477 }
478 def A2_min : HInst<
479 (outs IntRegs:$Rd32),
480 (ins IntRegs:$Rt32, IntRegs:$Rs32),
481 "$Rd32 = min($Rt32,$Rs32)",
482 tc_779080bf, TypeALU64>, Enc_bd6011 {
483 let Inst{7-5} = 0b000;
484 let Inst{13-13} = 0b0;
485 let Inst{31-21} = 0b11010101101;
486 let hasNewValue = 1;
487 let opNewValue = 0;
488 let prefersSlot3 = 1;
489 }
490 def A2_minp : HInst<
491 (outs DoubleRegs:$Rdd32),
492 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
493 "$Rdd32 = min($Rtt32,$Rss32)",
494 tc_779080bf, TypeALU64>, Enc_ea23e4 {
495 let Inst{7-5} = 0b110;
496 let Inst{13-13} = 0b0;
497 let Inst{31-21} = 0b11010011101;
498 let prefersSlot3 = 1;
499 }
500 def A2_minu : HInst<
501 (outs IntRegs:$Rd32),
502 (ins IntRegs:$Rt32, IntRegs:$Rs32),
503 "$Rd32 = minu($Rt32,$Rs32)",
504 tc_779080bf, TypeALU64>, Enc_bd6011 {
505 let Inst{7-5} = 0b100;
506 let Inst{13-13} = 0b0;
507 let Inst{31-21} = 0b11010101101;
508 let hasNewValue = 1;
509 let opNewValue = 0;
510 let prefersSlot3 = 1;
511 }
512 def A2_minup : HInst<
513 (outs DoubleRegs:$Rdd32),
514 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
515 "$Rdd32 = minu($Rtt32,$Rss32)",
516 tc_779080bf, TypeALU64>, Enc_ea23e4 {
517 let Inst{7-5} = 0b111;
518 let Inst{13-13} = 0b0;
519 let Inst{31-21} = 0b11010011101;
520 let prefersSlot3 = 1;
521 }
522 def A2_neg : HInst<
523 (outs IntRegs:$Rd32),
524 (ins IntRegs:$Rs32),
525 "$Rd32 = neg($Rs32)",
526 tc_57890846, TypeALU32_2op> {
527 let hasNewValue = 1;
528 let opNewValue = 0;
529 let isPseudo = 1;
530 let isCodeGenOnly = 1;
531 }
532 def A2_negp : HInst<
533 (outs DoubleRegs:$Rdd32),
534 (ins DoubleRegs:$Rss32),
535 "$Rdd32 = neg($Rss32)",
536 tc_0ae0825c, TypeS_2op>, Enc_b9c5fb {
537 let Inst{13-5} = 0b000000101;
538 let Inst{31-21} = 0b10000000100;
539 }
540 def A2_negsat : HInst<
541 (outs IntRegs:$Rd32),
542 (ins IntRegs:$Rs32),
543 "$Rd32 = neg($Rs32):sat",
544 tc_cf8126ae, TypeS_2op>, Enc_5e2823 {
545 let Inst{13-5} = 0b000000110;
546 let Inst{31-21} = 0b10001100100;
547 let hasNewValue = 1;
548 let opNewValue = 0;
549 let prefersSlot3 = 1;
550 let Defs = [USR_OVF];
551 }
552 def A2_nop : HInst<
553 (outs),
554 (ins),
555 "nop",
556 tc_2eabeebe, TypeALU32_2op>, Enc_e3b0c4 {
557 let Inst{13-0} = 0b00000000000000;
558 let Inst{31-16} = 0b0111111100000000;
559 }
560 def A2_not : HInst<
561 (outs IntRegs:$Rd32),
562 (ins IntRegs:$Rs32),
563 "$Rd32 = not($Rs32)",
564 tc_57890846, TypeALU32_2op> {
565 let hasNewValue = 1;
566 let opNewValue = 0;
567 let isPseudo = 1;
568 let isCodeGenOnly = 1;
569 }
570 def A2_notp : HInst<
571 (outs DoubleRegs:$Rdd32),
572 (ins DoubleRegs:$Rss32),
573 "$Rdd32 = not($Rss32)",
574 tc_0ae0825c, TypeS_2op>, Enc_b9c5fb {
575 let Inst{13-5} = 0b000000100;
576 let Inst{31-21} = 0b10000000100;
577 }
578 def A2_or : HInst<
579 (outs IntRegs:$Rd32),
580 (ins IntRegs:$Rs32, IntRegs:$Rt32),
581 "$Rd32 = or($Rs32,$Rt32)",
582 tc_5a2711e5, TypeALU32_3op>, Enc_5ab2be, PredNewRel, ImmRegRel {
583 let Inst{7-5} = 0b000;
584 let Inst{13-13} = 0b0;
585 let Inst{31-21} = 0b11110001001;
586 let hasNewValue = 1;
587 let opNewValue = 0;
588 let CextOpcode = "A2_or";
589 let InputType = "reg";
590 let BaseOpcode = "A2_or";
591 let isCommutable = 1;
592 let isPredicable = 1;
593 }
594 def A2_orir : HInst<
595 (outs IntRegs:$Rd32),
596 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
597 "$Rd32 = or($Rs32,#$Ii)",
598 tc_5a2711e5, TypeALU32_2op>, Enc_140c83, ImmRegRel {
599 let Inst{31-22} = 0b0111011010;
600 let hasNewValue = 1;
601 let opNewValue = 0;
602 let CextOpcode = "A2_or";
603 let InputType = "imm";
604 let isExtendable = 1;
605 let opExtendable = 2;
606 let isExtentSigned = 1;
607 let opExtentBits = 10;
608 let opExtentAlign = 0;
609 }
610 def A2_orp : HInst<
611 (outs DoubleRegs:$Rdd32),
612 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
613 "$Rdd32 = or($Rss32,$Rtt32)",
614 tc_946df596, TypeALU64>, Enc_a56825 {
615 let Inst{7-5} = 0b010;
616 let Inst{13-13} = 0b0;
617 let Inst{31-21} = 0b11010011111;
618 let isCommutable = 1;
619 }
620 def A2_paddf : HInst<
621 (outs IntRegs:$Rd32),
622 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
623 "if (!$Pu4) $Rd32 = add($Rs32,$Rt32)",
624 tc_4c5ba658, TypeALU32_3op>, Enc_ea4c54, PredNewRel, ImmRegRel {
625 let Inst{7-7} = 0b1;
626 let Inst{13-13} = 0b0;
627 let Inst{31-21} = 0b11111011000;
628 let isPredicated = 1;
629 let isPredicatedFalse = 1;
630 let hasNewValue = 1;
631 let opNewValue = 0;
632 let CextOpcode = "A2_add";
633 let InputType = "reg";
634 let BaseOpcode = "A2_add";
635 }
636 def A2_paddfnew : HInst<
637 (outs IntRegs:$Rd32),
638 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
639 "if (!$Pu4.new) $Rd32 = add($Rs32,$Rt32)",
640 tc_05c070ec, TypeALU32_3op>, Enc_ea4c54, PredNewRel, ImmRegRel {
641 let Inst{7-7} = 0b1;
642 let Inst{13-13} = 0b1;
643 let Inst{31-21} = 0b11111011000;
644 let isPredicated = 1;
645 let isPredicatedFalse = 1;
646 let hasNewValue = 1;
647 let opNewValue = 0;
648 let isPredicatedNew = 1;
649 let CextOpcode = "A2_add";
650 let InputType = "reg";
651 let BaseOpcode = "A2_add";
652 }
653 def A2_paddif : HInst<
654 (outs IntRegs:$Rd32),
655 (ins PredRegs:$Pu4, IntRegs:$Rs32, s32_0Imm:$Ii),
656 "if (!$Pu4) $Rd32 = add($Rs32,#$Ii)",
657 tc_4c5ba658, TypeALU32_2op>, Enc_e38e1f, PredNewRel, ImmRegRel {
658 let Inst{13-13} = 0b0;
659 let Inst{31-23} = 0b011101001;
660 let isPredicated = 1;
661 let isPredicatedFalse = 1;
662 let hasNewValue = 1;
663 let opNewValue = 0;
664 let CextOpcode = "A2_add";
665 let InputType = "imm";
666 let BaseOpcode = "A2_addi";
667 let isExtendable = 1;
668 let opExtendable = 3;
669 let isExtentSigned = 1;
670 let opExtentBits = 8;
671 let opExtentAlign = 0;
672 }
673 def A2_paddifnew : HInst<
674 (outs IntRegs:$Rd32),
675 (ins PredRegs:$Pu4, IntRegs:$Rs32, s32_0Imm:$Ii),
676 "if (!$Pu4.new) $Rd32 = add($Rs32,#$Ii)",
677 tc_05c070ec, TypeALU32_2op>, Enc_e38e1f, PredNewRel, ImmRegRel {
678 let Inst{13-13} = 0b1;
679 let Inst{31-23} = 0b011101001;
680 let isPredicated = 1;
681 let isPredicatedFalse = 1;
682 let hasNewValue = 1;
683 let opNewValue = 0;
684 let isPredicatedNew = 1;
685 let CextOpcode = "A2_add";
686 let InputType = "imm";
687 let BaseOpcode = "A2_addi";
688 let isExtendable = 1;
689 let opExtendable = 3;
690 let isExtentSigned = 1;
691 let opExtentBits = 8;
692 let opExtentAlign = 0;
693 }
694 def A2_paddit : HInst<
695 (outs IntRegs:$Rd32),
696 (ins PredRegs:$Pu4, IntRegs:$Rs32, s32_0Imm:$Ii),
697 "if ($Pu4) $Rd32 = add($Rs32,#$Ii)",
698 tc_4c5ba658, TypeALU32_2op>, Enc_e38e1f, PredNewRel, ImmRegRel {
699 let Inst{13-13} = 0b0;
700 let Inst{31-23} = 0b011101000;
701 let isPredicated = 1;
702 let hasNewValue = 1;
703 let opNewValue = 0;
704 let CextOpcode = "A2_add";
705 let InputType = "imm";
706 let BaseOpcode = "A2_addi";
707 let isExtendable = 1;
708 let opExtendable = 3;
709 let isExtentSigned = 1;
710 let opExtentBits = 8;
711 let opExtentAlign = 0;
712 }
713 def A2_padditnew : HInst<
714 (outs IntRegs:$Rd32),
715 (ins PredRegs:$Pu4, IntRegs:$Rs32, s32_0Imm:$Ii),
716 "if ($Pu4.new) $Rd32 = add($Rs32,#$Ii)",
717 tc_05c070ec, TypeALU32_2op>, Enc_e38e1f, PredNewRel, ImmRegRel {
718 let Inst{13-13} = 0b1;
719 let Inst{31-23} = 0b011101000;
720 let isPredicated = 1;
721 let hasNewValue = 1;
722 let opNewValue = 0;
723 let isPredicatedNew = 1;
724 let CextOpcode = "A2_add";
725 let InputType = "imm";
726 let BaseOpcode = "A2_addi";
727 let isExtendable = 1;
728 let opExtendable = 3;
729 let isExtentSigned = 1;
730 let opExtentBits = 8;
731 let opExtentAlign = 0;
732 }
733 def A2_paddt : HInst<
734 (outs IntRegs:$Rd32),
735 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
736 "if ($Pu4) $Rd32 = add($Rs32,$Rt32)",
737 tc_4c5ba658, TypeALU32_3op>, Enc_ea4c54, PredNewRel, ImmRegRel {
738 let Inst{7-7} = 0b0;
739 let Inst{13-13} = 0b0;
740 let Inst{31-21} = 0b11111011000;
741 let isPredicated = 1;
742 let hasNewValue = 1;
743 let opNewValue = 0;
744 let CextOpcode = "A2_add";
745 let InputType = "reg";
746 let BaseOpcode = "A2_add";
747 }
748 def A2_paddtnew : HInst<
749 (outs IntRegs:$Rd32),
750 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
751 "if ($Pu4.new) $Rd32 = add($Rs32,$Rt32)",
752 tc_05c070ec, TypeALU32_3op>, Enc_ea4c54, PredNewRel, ImmRegRel {
753 let Inst{7-7} = 0b0;
754 let Inst{13-13} = 0b1;
755 let Inst{31-21} = 0b11111011000;
756 let isPredicated = 1;
757 let hasNewValue = 1;
758 let opNewValue = 0;
759 let isPredicatedNew = 1;
760 let CextOpcode = "A2_add";
761 let InputType = "reg";
762 let BaseOpcode = "A2_add";
763 }
764 def A2_pandf : HInst<
765 (outs IntRegs:$Rd32),
766 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
767 "if (!$Pu4) $Rd32 = and($Rs32,$Rt32)",
768 tc_4c5ba658, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
769 let Inst{7-7} = 0b1;
770 let Inst{13-13} = 0b0;
771 let Inst{31-21} = 0b11111001000;
772 let isPredicated = 1;
773 let isPredicatedFalse = 1;
774 let hasNewValue = 1;
775 let opNewValue = 0;
776 let BaseOpcode = "A2_and";
777 }
778 def A2_pandfnew : HInst<
779 (outs IntRegs:$Rd32),
780 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
781 "if (!$Pu4.new) $Rd32 = and($Rs32,$Rt32)",
782 tc_05c070ec, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
783 let Inst{7-7} = 0b1;
784 let Inst{13-13} = 0b1;
785 let Inst{31-21} = 0b11111001000;
786 let isPredicated = 1;
787 let isPredicatedFalse = 1;
788 let hasNewValue = 1;
789 let opNewValue = 0;
790 let isPredicatedNew = 1;
791 let BaseOpcode = "A2_and";
792 }
793 def A2_pandt : HInst<
794 (outs IntRegs:$Rd32),
795 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
796 "if ($Pu4) $Rd32 = and($Rs32,$Rt32)",
797 tc_4c5ba658, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
798 let Inst{7-7} = 0b0;
799 let Inst{13-13} = 0b0;
800 let Inst{31-21} = 0b11111001000;
801 let isPredicated = 1;
802 let hasNewValue = 1;
803 let opNewValue = 0;
804 let BaseOpcode = "A2_and";
805 }
806 def A2_pandtnew : HInst<
807 (outs IntRegs:$Rd32),
808 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
809 "if ($Pu4.new) $Rd32 = and($Rs32,$Rt32)",
810 tc_05c070ec, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
811 let Inst{7-7} = 0b0;
812 let Inst{13-13} = 0b1;
813 let Inst{31-21} = 0b11111001000;
814 let isPredicated = 1;
815 let hasNewValue = 1;
816 let opNewValue = 0;
817 let isPredicatedNew = 1;
818 let BaseOpcode = "A2_and";
819 }
820 def A2_porf : HInst<
821 (outs IntRegs:$Rd32),
822 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
823 "if (!$Pu4) $Rd32 = or($Rs32,$Rt32)",
824 tc_4c5ba658, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
825 let Inst{7-7} = 0b1;
826 let Inst{13-13} = 0b0;
827 let Inst{31-21} = 0b11111001001;
828 let isPredicated = 1;
829 let isPredicatedFalse = 1;
830 let hasNewValue = 1;
831 let opNewValue = 0;
832 let BaseOpcode = "A2_or";
833 }
834 def A2_porfnew : HInst<
835 (outs IntRegs:$Rd32),
836 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
837 "if (!$Pu4.new) $Rd32 = or($Rs32,$Rt32)",
838 tc_05c070ec, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
839 let Inst{7-7} = 0b1;
840 let Inst{13-13} = 0b1;
841 let Inst{31-21} = 0b11111001001;
842 let isPredicated = 1;
843 let isPredicatedFalse = 1;
844 let hasNewValue = 1;
845 let opNewValue = 0;
846 let isPredicatedNew = 1;
847 let BaseOpcode = "A2_or";
848 }
849 def A2_port : HInst<
850 (outs IntRegs:$Rd32),
851 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
852 "if ($Pu4) $Rd32 = or($Rs32,$Rt32)",
853 tc_4c5ba658, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
854 let Inst{7-7} = 0b0;
855 let Inst{13-13} = 0b0;
856 let Inst{31-21} = 0b11111001001;
857 let isPredicated = 1;
858 let hasNewValue = 1;
859 let opNewValue = 0;
860 let BaseOpcode = "A2_or";
861 }
862 def A2_portnew : HInst<
863 (outs IntRegs:$Rd32),
864 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
865 "if ($Pu4.new) $Rd32 = or($Rs32,$Rt32)",
866 tc_05c070ec, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
867 let Inst{7-7} = 0b0;
868 let Inst{13-13} = 0b1;
869 let Inst{31-21} = 0b11111001001;
870 let isPredicated = 1;
871 let hasNewValue = 1;
872 let opNewValue = 0;
873 let isPredicatedNew = 1;
874 let BaseOpcode = "A2_or";
875 }
876 def A2_psubf : HInst<
877 (outs IntRegs:$Rd32),
878 (ins PredRegs:$Pu4, IntRegs:$Rt32, IntRegs:$Rs32),
879 "if (!$Pu4) $Rd32 = sub($Rt32,$Rs32)",
880 tc_4c5ba658, TypeALU32_3op>, Enc_9b0bc1, PredNewRel {
881 let Inst{7-7} = 0b1;
882 let Inst{13-13} = 0b0;
883 let Inst{31-21} = 0b11111011001;
884 let isPredicated = 1;
885 let isPredicatedFalse = 1;
886 let hasNewValue = 1;
887 let opNewValue = 0;
888 let BaseOpcode = "A2_sub";
889 }
890 def A2_psubfnew : HInst<
891 (outs IntRegs:$Rd32),
892 (ins PredRegs:$Pu4, IntRegs:$Rt32, IntRegs:$Rs32),
893 "if (!$Pu4.new) $Rd32 = sub($Rt32,$Rs32)",
894 tc_05c070ec, TypeALU32_3op>, Enc_9b0bc1, PredNewRel {
895 let Inst{7-7} = 0b1;
896 let Inst{13-13} = 0b1;
897 let Inst{31-21} = 0b11111011001;
898 let isPredicated = 1;
899 let isPredicatedFalse = 1;
900 let hasNewValue = 1;
901 let opNewValue = 0;
902 let isPredicatedNew = 1;
903 let BaseOpcode = "A2_sub";
904 }
905 def A2_psubt : HInst<
906 (outs IntRegs:$Rd32),
907 (ins PredRegs:$Pu4, IntRegs:$Rt32, IntRegs:$Rs32),
908 "if ($Pu4) $Rd32 = sub($Rt32,$Rs32)",
909 tc_4c5ba658, TypeALU32_3op>, Enc_9b0bc1, PredNewRel {
910 let Inst{7-7} = 0b0;
911 let Inst{13-13} = 0b0;
912 let Inst{31-21} = 0b11111011001;
913 let isPredicated = 1;
914 let hasNewValue = 1;
915 let opNewValue = 0;
916 let BaseOpcode = "A2_sub";
917 }
918 def A2_psubtnew : HInst<
919 (outs IntRegs:$Rd32),
920 (ins PredRegs:$Pu4, IntRegs:$Rt32, IntRegs:$Rs32),
921 "if ($Pu4.new) $Rd32 = sub($Rt32,$Rs32)",
922 tc_05c070ec, TypeALU32_3op>, Enc_9b0bc1, PredNewRel {
923 let Inst{7-7} = 0b0;
924 let Inst{13-13} = 0b1;
925 let Inst{31-21} = 0b11111011001;
926 let isPredicated = 1;
927 let hasNewValue = 1;
928 let opNewValue = 0;
929 let isPredicatedNew = 1;
930 let BaseOpcode = "A2_sub";
931 }
932 def A2_pxorf : HInst<
933 (outs IntRegs:$Rd32),
934 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
935 "if (!$Pu4) $Rd32 = xor($Rs32,$Rt32)",
936 tc_4c5ba658, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
937 let Inst{7-7} = 0b1;
938 let Inst{13-13} = 0b0;
939 let Inst{31-21} = 0b11111001011;
940 let isPredicated = 1;
941 let isPredicatedFalse = 1;
942 let hasNewValue = 1;
943 let opNewValue = 0;
944 let BaseOpcode = "A2_xor";
945 }
946 def A2_pxorfnew : HInst<
947 (outs IntRegs:$Rd32),
948 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
949 "if (!$Pu4.new) $Rd32 = xor($Rs32,$Rt32)",
950 tc_05c070ec, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
951 let Inst{7-7} = 0b1;
952 let Inst{13-13} = 0b1;
953 let Inst{31-21} = 0b11111001011;
954 let isPredicated = 1;
955 let isPredicatedFalse = 1;
956 let hasNewValue = 1;
957 let opNewValue = 0;
958 let isPredicatedNew = 1;
959 let BaseOpcode = "A2_xor";
960 }
961 def A2_pxort : HInst<
962 (outs IntRegs:$Rd32),
963 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
964 "if ($Pu4) $Rd32 = xor($Rs32,$Rt32)",
965 tc_4c5ba658, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
966 let Inst{7-7} = 0b0;
967 let Inst{13-13} = 0b0;
968 let Inst{31-21} = 0b11111001011;
969 let isPredicated = 1;
970 let hasNewValue = 1;
971 let opNewValue = 0;
972 let BaseOpcode = "A2_xor";
973 }
974 def A2_pxortnew : HInst<
975 (outs IntRegs:$Rd32),
976 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
977 "if ($Pu4.new) $Rd32 = xor($Rs32,$Rt32)",
978 tc_05c070ec, TypeALU32_3op>, Enc_ea4c54, PredNewRel {
979 let Inst{7-7} = 0b0;
980 let Inst{13-13} = 0b1;
981 let Inst{31-21} = 0b11111001011;
982 let isPredicated = 1;
983 let hasNewValue = 1;
984 let opNewValue = 0;
985 let isPredicatedNew = 1;
986 let BaseOpcode = "A2_xor";
987 }
988 def A2_roundsat : HInst<
989 (outs IntRegs:$Rd32),
990 (ins DoubleRegs:$Rss32),
991 "$Rd32 = round($Rss32):sat",
992 tc_cf8126ae, TypeS_2op>, Enc_90cd8b {
993 let Inst{13-5} = 0b000000001;
994 let Inst{31-21} = 0b10001000110;
995 let hasNewValue = 1;
996 let opNewValue = 0;
997 let prefersSlot3 = 1;
998 let Defs = [USR_OVF];
999 }
1000 def A2_sat : HInst<
1001 (outs IntRegs:$Rd32),
1002 (ins DoubleRegs:$Rss32),
1003 "$Rd32 = sat($Rss32)",
1004 tc_0ae0825c, TypeS_2op>, Enc_90cd8b {
1005 let Inst{13-5} = 0b000000000;
1006 let Inst{31-21} = 0b10001000110;
1007 let hasNewValue = 1;
1008 let opNewValue = 0;
1009 let Defs = [USR_OVF];
1010 }
1011 def A2_satb : HInst<
1012 (outs IntRegs:$Rd32),
1013 (ins IntRegs:$Rs32),
1014 "$Rd32 = satb($Rs32)",
1015 tc_0ae0825c, TypeS_2op>, Enc_5e2823 {
1016 let Inst{13-5} = 0b000000111;
1017 let Inst{31-21} = 0b10001100110;
1018 let hasNewValue = 1;
1019 let opNewValue = 0;
1020 let Defs = [USR_OVF];
1021 }
1022 def A2_sath : HInst<
1023 (outs IntRegs:$Rd32),
1024 (ins IntRegs:$Rs32),
1025 "$Rd32 = sath($Rs32)",
1026 tc_0ae0825c, TypeS_2op>, Enc_5e2823 {
1027 let Inst{13-5} = 0b000000100;
1028 let Inst{31-21} = 0b10001100110;
1029 let hasNewValue = 1;
1030 let opNewValue = 0;
1031 let Defs = [USR_OVF];
1032 }
1033 def A2_satub : HInst<
1034 (outs IntRegs:$Rd32),
1035 (ins IntRegs:$Rs32),
1036 "$Rd32 = satub($Rs32)",
1037 tc_0ae0825c, TypeS_2op>, Enc_5e2823 {
1038 let Inst{13-5} = 0b000000110;
1039 let Inst{31-21} = 0b10001100110;
1040 let hasNewValue = 1;
1041 let opNewValue = 0;
1042 let Defs = [USR_OVF];
1043 }
1044 def A2_satuh : HInst<
1045 (outs IntRegs:$Rd32),
1046 (ins IntRegs:$Rs32),
1047 "$Rd32 = satuh($Rs32)",
1048 tc_0ae0825c, TypeS_2op>, Enc_5e2823 {
1049 let Inst{13-5} = 0b000000101;
1050 let Inst{31-21} = 0b10001100110;
1051 let hasNewValue = 1;
1052 let opNewValue = 0;
1053 let Defs = [USR_OVF];
1054 }
1055 def A2_sub : HInst<
1056 (outs IntRegs:$Rd32),
1057 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1058 "$Rd32 = sub($Rt32,$Rs32)",
1059 tc_5a2711e5, TypeALU32_3op>, Enc_bd6011, PredNewRel, ImmRegRel {
1060 let Inst{7-5} = 0b000;
1061 let Inst{13-13} = 0b0;
1062 let Inst{31-21} = 0b11110011001;
1063 let hasNewValue = 1;
1064 let opNewValue = 0;
1065 let CextOpcode = "A2_sub";
1066 let InputType = "reg";
1067 let BaseOpcode = "A2_sub";
1068 let isPredicable = 1;
1069 }
1070 def A2_subh_h16_hh : HInst<
1071 (outs IntRegs:$Rd32),
1072 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1073 "$Rd32 = sub($Rt32.h,$Rs32.h):<<16",
1074 tc_679309b8, TypeALU64>, Enc_bd6011 {
1075 let Inst{7-5} = 0b011;
1076 let Inst{13-13} = 0b0;
1077 let Inst{31-21} = 0b11010101011;
1078 let hasNewValue = 1;
1079 let opNewValue = 0;
1080 let prefersSlot3 = 1;
1081 }
1082 def A2_subh_h16_hl : HInst<
1083 (outs IntRegs:$Rd32),
1084 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1085 "$Rd32 = sub($Rt32.h,$Rs32.l):<<16",
1086 tc_679309b8, TypeALU64>, Enc_bd6011 {
1087 let Inst{7-5} = 0b010;
1088 let Inst{13-13} = 0b0;
1089 let Inst{31-21} = 0b11010101011;
1090 let hasNewValue = 1;
1091 let opNewValue = 0;
1092 let prefersSlot3 = 1;
1093 }
1094 def A2_subh_h16_lh : HInst<
1095 (outs IntRegs:$Rd32),
1096 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1097 "$Rd32 = sub($Rt32.l,$Rs32.h):<<16",
1098 tc_679309b8, TypeALU64>, Enc_bd6011 {
1099 let Inst{7-5} = 0b001;
1100 let Inst{13-13} = 0b0;
1101 let Inst{31-21} = 0b11010101011;
1102 let hasNewValue = 1;
1103 let opNewValue = 0;
1104 let prefersSlot3 = 1;
1105 }
1106 def A2_subh_h16_ll : HInst<
1107 (outs IntRegs:$Rd32),
1108 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1109 "$Rd32 = sub($Rt32.l,$Rs32.l):<<16",
1110 tc_679309b8, TypeALU64>, Enc_bd6011 {
1111 let Inst{7-5} = 0b000;
1112 let Inst{13-13} = 0b0;
1113 let Inst{31-21} = 0b11010101011;
1114 let hasNewValue = 1;
1115 let opNewValue = 0;
1116 let prefersSlot3 = 1;
1117 }
1118 def A2_subh_h16_sat_hh : HInst<
1119 (outs IntRegs:$Rd32),
1120 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1121 "$Rd32 = sub($Rt32.h,$Rs32.h):sat:<<16",
1122 tc_779080bf, TypeALU64>, Enc_bd6011 {
1123 let Inst{7-5} = 0b111;
1124 let Inst{13-13} = 0b0;
1125 let Inst{31-21} = 0b11010101011;
1126 let hasNewValue = 1;
1127 let opNewValue = 0;
1128 let prefersSlot3 = 1;
1129 let Defs = [USR_OVF];
1130 }
1131 def A2_subh_h16_sat_hl : HInst<
1132 (outs IntRegs:$Rd32),
1133 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1134 "$Rd32 = sub($Rt32.h,$Rs32.l):sat:<<16",
1135 tc_779080bf, TypeALU64>, Enc_bd6011 {
1136 let Inst{7-5} = 0b110;
1137 let Inst{13-13} = 0b0;
1138 let Inst{31-21} = 0b11010101011;
1139 let hasNewValue = 1;
1140 let opNewValue = 0;
1141 let prefersSlot3 = 1;
1142 let Defs = [USR_OVF];
1143 }
1144 def A2_subh_h16_sat_lh : HInst<
1145 (outs IntRegs:$Rd32),
1146 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1147 "$Rd32 = sub($Rt32.l,$Rs32.h):sat:<<16",
1148 tc_779080bf, TypeALU64>, Enc_bd6011 {
1149 let Inst{7-5} = 0b101;
1150 let Inst{13-13} = 0b0;
1151 let Inst{31-21} = 0b11010101011;
1152 let hasNewValue = 1;
1153 let opNewValue = 0;
1154 let prefersSlot3 = 1;
1155 let Defs = [USR_OVF];
1156 }
1157 def A2_subh_h16_sat_ll : HInst<
1158 (outs IntRegs:$Rd32),
1159 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1160 "$Rd32 = sub($Rt32.l,$Rs32.l):sat:<<16",
1161 tc_779080bf, TypeALU64>, Enc_bd6011 {
1162 let Inst{7-5} = 0b100;
1163 let Inst{13-13} = 0b0;
1164 let Inst{31-21} = 0b11010101011;
1165 let hasNewValue = 1;
1166 let opNewValue = 0;
1167 let prefersSlot3 = 1;
1168 let Defs = [USR_OVF];
1169 }
1170 def A2_subh_l16_hl : HInst<
1171 (outs IntRegs:$Rd32),
1172 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1173 "$Rd32 = sub($Rt32.l,$Rs32.h)",
1174 tc_4414d8b1, TypeALU64>, Enc_bd6011 {
1175 let Inst{7-5} = 0b010;
1176 let Inst{13-13} = 0b0;
1177 let Inst{31-21} = 0b11010101001;
1178 let hasNewValue = 1;
1179 let opNewValue = 0;
1180 let prefersSlot3 = 1;
1181 }
1182 def A2_subh_l16_ll : HInst<
1183 (outs IntRegs:$Rd32),
1184 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1185 "$Rd32 = sub($Rt32.l,$Rs32.l)",
1186 tc_4414d8b1, TypeALU64>, Enc_bd6011 {
1187 let Inst{7-5} = 0b000;
1188 let Inst{13-13} = 0b0;
1189 let Inst{31-21} = 0b11010101001;
1190 let hasNewValue = 1;
1191 let opNewValue = 0;
1192 let prefersSlot3 = 1;
1193 }
1194 def A2_subh_l16_sat_hl : HInst<
1195 (outs IntRegs:$Rd32),
1196 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1197 "$Rd32 = sub($Rt32.l,$Rs32.h):sat",
1198 tc_779080bf, TypeALU64>, Enc_bd6011 {
1199 let Inst{7-5} = 0b110;
1200 let Inst{13-13} = 0b0;
1201 let Inst{31-21} = 0b11010101001;
1202 let hasNewValue = 1;
1203 let opNewValue = 0;
1204 let prefersSlot3 = 1;
1205 let Defs = [USR_OVF];
1206 }
1207 def A2_subh_l16_sat_ll : HInst<
1208 (outs IntRegs:$Rd32),
1209 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1210 "$Rd32 = sub($Rt32.l,$Rs32.l):sat",
1211 tc_779080bf, TypeALU64>, Enc_bd6011 {
1212 let Inst{7-5} = 0b100;
1213 let Inst{13-13} = 0b0;
1214 let Inst{31-21} = 0b11010101001;
1215 let hasNewValue = 1;
1216 let opNewValue = 0;
1217 let prefersSlot3 = 1;
1218 let Defs = [USR_OVF];
1219 }
1220 def A2_subp : HInst<
1221 (outs DoubleRegs:$Rdd32),
1222 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
1223 "$Rdd32 = sub($Rtt32,$Rss32)",
1224 tc_946df596, TypeALU64>, Enc_ea23e4 {
1225 let Inst{7-5} = 0b111;
1226 let Inst{13-13} = 0b0;
1227 let Inst{31-21} = 0b11010011001;
1228 }
1229 def A2_subri : HInst<
1230 (outs IntRegs:$Rd32),
1231 (ins s32_0Imm:$Ii, IntRegs:$Rs32),
1232 "$Rd32 = sub(#$Ii,$Rs32)",
1233 tc_5a2711e5, TypeALU32_2op>, Enc_140c83, PredNewRel, ImmRegRel {
1234 let Inst{31-22} = 0b0111011001;
1235 let hasNewValue = 1;
1236 let opNewValue = 0;
1237 let CextOpcode = "A2_sub";
1238 let InputType = "imm";
1239 let isExtendable = 1;
1240 let opExtendable = 1;
1241 let isExtentSigned = 1;
1242 let opExtentBits = 10;
1243 let opExtentAlign = 0;
1244 }
1245 def A2_subsat : HInst<
1246 (outs IntRegs:$Rd32),
1247 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1248 "$Rd32 = sub($Rt32,$Rs32):sat",
1249 tc_61830035, TypeALU32_3op>, Enc_bd6011 {
1250 let Inst{7-5} = 0b000;
1251 let Inst{13-13} = 0b0;
1252 let Inst{31-21} = 0b11110110110;
1253 let hasNewValue = 1;
1254 let opNewValue = 0;
1255 let prefersSlot3 = 1;
1256 let Defs = [USR_OVF];
1257 let InputType = "reg";
1258 }
1259 def A2_svaddh : HInst<
1260 (outs IntRegs:$Rd32),
1261 (ins IntRegs:$Rs32, IntRegs:$Rt32),
1262 "$Rd32 = vaddh($Rs32,$Rt32)",
1263 tc_5a2711e5, TypeALU32_3op>, Enc_5ab2be {
1264 let Inst{7-5} = 0b000;
1265 let Inst{13-13} = 0b0;
1266 let Inst{31-21} = 0b11110110000;
1267 let hasNewValue = 1;
1268 let opNewValue = 0;
1269 let InputType = "reg";
1270 let isCommutable = 1;
1271 }
1272 def A2_svaddhs : HInst<
1273 (outs IntRegs:$Rd32),
1274 (ins IntRegs:$Rs32, IntRegs:$Rt32),
1275 "$Rd32 = vaddh($Rs32,$Rt32):sat",
1276 tc_61830035, TypeALU32_3op>, Enc_5ab2be {
1277 let Inst{7-5} = 0b000;
1278 let Inst{13-13} = 0b0;
1279 let Inst{31-21} = 0b11110110001;
1280 let hasNewValue = 1;
1281 let opNewValue = 0;
1282 let prefersSlot3 = 1;
1283 let Defs = [USR_OVF];
1284 let InputType = "reg";
1285 let isCommutable = 1;
1286 }
1287 def A2_svadduhs : HInst<
1288 (outs IntRegs:$Rd32),
1289 (ins IntRegs:$Rs32, IntRegs:$Rt32),
1290 "$Rd32 = vadduh($Rs32,$Rt32):sat",
1291 tc_61830035, TypeALU32_3op>, Enc_5ab2be {
1292 let Inst{7-5} = 0b000;
1293 let Inst{13-13} = 0b0;
1294 let Inst{31-21} = 0b11110110011;
1295 let hasNewValue = 1;
1296 let opNewValue = 0;
1297 let prefersSlot3 = 1;
1298 let Defs = [USR_OVF];
1299 let InputType = "reg";
1300 let isCommutable = 1;
1301 }
1302 def A2_svavgh : HInst<
1303 (outs IntRegs:$Rd32),
1304 (ins IntRegs:$Rs32, IntRegs:$Rt32),
1305 "$Rd32 = vavgh($Rs32,$Rt32)",
1306 tc_1c80410a, TypeALU32_3op>, Enc_5ab2be {
1307 let Inst{7-5} = 0b000;
1308 let Inst{13-13} = 0b0;
1309 let Inst{31-21} = 0b11110111000;
1310 let hasNewValue = 1;
1311 let opNewValue = 0;
1312 let prefersSlot3 = 1;
1313 let InputType = "reg";
1314 let isCommutable = 1;
1315 }
1316 def A2_svavghs : HInst<
1317 (outs IntRegs:$Rd32),
1318 (ins IntRegs:$Rs32, IntRegs:$Rt32),
1319 "$Rd32 = vavgh($Rs32,$Rt32):rnd",
1320 tc_d08ee0f4, TypeALU32_3op>, Enc_5ab2be {
1321 let Inst{7-5} = 0b000;
1322 let Inst{13-13} = 0b0;
1323 let Inst{31-21} = 0b11110111001;
1324 let hasNewValue = 1;
1325 let opNewValue = 0;
1326 let prefersSlot3 = 1;
1327 let InputType = "reg";
1328 let isCommutable = 1;
1329 }
1330 def A2_svnavgh : HInst<
1331 (outs IntRegs:$Rd32),
1332 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1333 "$Rd32 = vnavgh($Rt32,$Rs32)",
1334 tc_1c80410a, TypeALU32_3op>, Enc_bd6011 {
1335 let Inst{7-5} = 0b000;
1336 let Inst{13-13} = 0b0;
1337 let Inst{31-21} = 0b11110111011;
1338 let hasNewValue = 1;
1339 let opNewValue = 0;
1340 let prefersSlot3 = 1;
1341 let InputType = "reg";
1342 }
1343 def A2_svsubh : HInst<
1344 (outs IntRegs:$Rd32),
1345 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1346 "$Rd32 = vsubh($Rt32,$Rs32)",
1347 tc_5a2711e5, TypeALU32_3op>, Enc_bd6011 {
1348 let Inst{7-5} = 0b000;
1349 let Inst{13-13} = 0b0;
1350 let Inst{31-21} = 0b11110110100;
1351 let hasNewValue = 1;
1352 let opNewValue = 0;
1353 let InputType = "reg";
1354 }
1355 def A2_svsubhs : HInst<
1356 (outs IntRegs:$Rd32),
1357 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1358 "$Rd32 = vsubh($Rt32,$Rs32):sat",
1359 tc_61830035, TypeALU32_3op>, Enc_bd6011 {
1360 let Inst{7-5} = 0b000;
1361 let Inst{13-13} = 0b0;
1362 let Inst{31-21} = 0b11110110101;
1363 let hasNewValue = 1;
1364 let opNewValue = 0;
1365 let prefersSlot3 = 1;
1366 let Defs = [USR_OVF];
1367 let InputType = "reg";
1368 }
1369 def A2_svsubuhs : HInst<
1370 (outs IntRegs:$Rd32),
1371 (ins IntRegs:$Rt32, IntRegs:$Rs32),
1372 "$Rd32 = vsubuh($Rt32,$Rs32):sat",
1373 tc_61830035, TypeALU32_3op>, Enc_bd6011 {
1374 let Inst{7-5} = 0b000;
1375 let Inst{13-13} = 0b0;
1376 let Inst{31-21} = 0b11110110111;
1377 let hasNewValue = 1;
1378 let opNewValue = 0;
1379 let prefersSlot3 = 1;
1380 let Defs = [USR_OVF];
1381 let InputType = "reg";
1382 }
1383 def A2_swiz : HInst<
1384 (outs IntRegs:$Rd32),
1385 (ins IntRegs:$Rs32),
1386 "$Rd32 = swiz($Rs32)",
1387 tc_0ae0825c, TypeS_2op>, Enc_5e2823 {
1388 let Inst{13-5} = 0b000000111;
1389 let Inst{31-21} = 0b10001100100;
1390 let hasNewValue = 1;
1391 let opNewValue = 0;
1392 }
1393 def A2_sxtb : HInst<
1394 (outs IntRegs:$Rd32),
1395 (ins IntRegs:$Rs32),
1396 "$Rd32 = sxtb($Rs32)",
1397 tc_57890846, TypeALU32_2op>, Enc_5e2823, PredNewRel {
1398 let Inst{13-5} = 0b000000000;
1399 let Inst{31-21} = 0b01110000101;
1400 let hasNewValue = 1;
1401 let opNewValue = 0;
1402 let BaseOpcode = "A2_sxtb";
1403 let isPredicable = 1;
1404 }
1405 def A2_sxth : HInst<
1406 (outs IntRegs:$Rd32),
1407 (ins IntRegs:$Rs32),
1408 "$Rd32 = sxth($Rs32)",
1409 tc_57890846, TypeALU32_2op>, Enc_5e2823, PredNewRel {
1410 let Inst{13-5} = 0b000000000;
1411 let Inst{31-21} = 0b01110000111;
1412 let hasNewValue = 1;
1413 let opNewValue = 0;
1414 let BaseOpcode = "A2_sxth";
1415 let isPredicable = 1;
1416 }
1417 def A2_sxtw : HInst<
1418 (outs DoubleRegs:$Rdd32),
1419 (ins IntRegs:$Rs32),
1420 "$Rdd32 = sxtw($Rs32)",
1421 tc_0ae0825c, TypeS_2op>, Enc_3a3d62 {
1422 let Inst{13-5} = 0b000000000;
1423 let Inst{31-21} = 0b10000100010;
1424 }
1425 def A2_tfr : HInst<
1426 (outs IntRegs:$Rd32),
1427 (ins IntRegs:$Rs32),
1428 "$Rd32 = $Rs32",
1429 tc_57890846, TypeALU32_2op>, Enc_5e2823, PredNewRel {
1430 let Inst{13-5} = 0b000000000;
1431 let Inst{31-21} = 0b01110000011;
1432 let hasNewValue = 1;
1433 let opNewValue = 0;
1434 let InputType = "reg";
1435 let BaseOpcode = "A2_tfr";
1436 let isPredicable = 1;
1437 }
1438 def A2_tfrcrr : HInst<
1439 (outs IntRegs:$Rd32),
1440 (ins CtrRegs:$Cs32),
1441 "$Rd32 = $Cs32",
1442 tc_b9272d6c, TypeCR>, Enc_0cb018 {
1443 let Inst{13-5} = 0b000000000;
1444 let Inst{31-21} = 0b01101010000;
1445 let hasNewValue = 1;
1446 let opNewValue = 0;
1447 }
1448 def A2_tfrf : HInst<
1449 (outs IntRegs:$Rd32),
1450 (ins PredRegs:$Pu4, IntRegs:$Rs32),
1451 "if (!$Pu4) $Rd32 = $Rs32",
1452 tc_4c5ba658, TypeALU32_2op>, PredNewRel, ImmRegRel {
1453 let isPredicated = 1;
1454 let isPredicatedFalse = 1;
1455 let hasNewValue = 1;
1456 let opNewValue = 0;
1457 let CextOpcode = "A2_tfr";
1458 let InputType = "reg";
1459 let BaseOpcode = "A2_tfr";
1460 let isPseudo = 1;
1461 let isCodeGenOnly = 1;
1462 }
1463 def A2_tfrfnew : HInst<
1464 (outs IntRegs:$Rd32),
1465 (ins PredRegs:$Pu4, IntRegs:$Rs32),
1466 "if (!$Pu4.new) $Rd32 = $Rs32",
1467 tc_05c070ec, TypeALU32_2op>, PredNewRel, ImmRegRel {
1468 let isPredicated = 1;
1469 let isPredicatedFalse = 1;
1470 let hasNewValue = 1;
1471 let opNewValue = 0;
1472 let isPredicatedNew = 1;
1473 let CextOpcode = "A2_tfr";
1474 let InputType = "reg";
1475 let BaseOpcode = "A2_tfr";
1476 let isPseudo = 1;
1477 let isCodeGenOnly = 1;
1478 }
1479 def A2_tfrih : HInst<
1480 (outs IntRegs:$Rx32),
1481 (ins IntRegs:$Rx32in, u16_0Imm:$Ii),
1482 "$Rx32.h = #$Ii",
1483 tc_5a2711e5, TypeALU32_2op>, Enc_51436c {
1484 let Inst{21-21} = 0b1;
1485 let Inst{31-24} = 0b01110010;
1486 let hasNewValue = 1;
1487 let opNewValue = 0;
1488 let Constraints = "$Rx32 = $Rx32in";
1489 }
1490 def A2_tfril : HInst<
1491 (outs IntRegs:$Rx32),
1492 (ins IntRegs:$Rx32in, u16_0Imm:$Ii),
1493 "$Rx32.l = #$Ii",
1494 tc_5a2711e5, TypeALU32_2op>, Enc_51436c {
1495 let Inst{21-21} = 0b1;
1496 let Inst{31-24} = 0b01110001;
1497 let hasNewValue = 1;
1498 let opNewValue = 0;
1499 let Constraints = "$Rx32 = $Rx32in";
1500 }
1501 def A2_tfrp : HInst<
1502 (outs DoubleRegs:$Rdd32),
1503 (ins DoubleRegs:$Rss32),
1504 "$Rdd32 = $Rss32",
1505 tc_5a2711e5, TypeALU32_2op>, PredNewRel {
1506 let BaseOpcode = "A2_tfrp";
1507 let isPredicable = 1;
1508 let isPseudo = 1;
1509 }
1510 def A2_tfrpf : HInst<
1511 (outs DoubleRegs:$Rdd32),
1512 (ins PredRegs:$Pu4, DoubleRegs:$Rss32),
1513 "if (!$Pu4) $Rdd32 = $Rss32",
1514 tc_5a2711e5, TypeALU32_2op>, PredNewRel {
1515 let isPredicated = 1;
1516 let isPredicatedFalse = 1;
1517 let BaseOpcode = "A2_tfrp";
1518 let isPseudo = 1;
1519 }
1520 def A2_tfrpfnew : HInst<
1521 (outs DoubleRegs:$Rdd32),
1522 (ins PredRegs:$Pu4, DoubleRegs:$Rss32),
1523 "if (!$Pu4.new) $Rdd32 = $Rss32",
1524 tc_1ae57e39, TypeALU32_2op>, PredNewRel {
1525 let isPredicated = 1;
1526 let isPredicatedFalse = 1;
1527 let isPredicatedNew = 1;
1528 let BaseOpcode = "A2_tfrp";
1529 let isPseudo = 1;
1530 }
1531 def A2_tfrpi : HInst<
1532 (outs DoubleRegs:$Rdd32),
1533 (ins s8_0Imm:$Ii),
1534 "$Rdd32 = #$Ii",
1535 tc_5a2711e5, TypeALU64> {
1536 let isReMaterializable = 1;
1537 let isAsCheapAsAMove = 1;
1538 let isMoveImm = 1;
1539 let isPseudo = 1;
1540 }
1541 def A2_tfrpt : HInst<
1542 (outs DoubleRegs:$Rdd32),
1543 (ins PredRegs:$Pu4, DoubleRegs:$Rss32),
1544 "if ($Pu4) $Rdd32 = $Rss32",
1545 tc_5a2711e5, TypeALU32_2op>, PredNewRel {
1546 let isPredicated = 1;
1547 let BaseOpcode = "A2_tfrp";
1548 let isPseudo = 1;
1549 }
1550 def A2_tfrptnew : HInst<
1551 (outs DoubleRegs:$Rdd32),
1552 (ins PredRegs:$Pu4, DoubleRegs:$Rss32),
1553 "if ($Pu4.new) $Rdd32 = $Rss32",
1554 tc_1ae57e39, TypeALU32_2op>, PredNewRel {
1555 let isPredicated = 1;
1556 let isPredicatedNew = 1;
1557 let BaseOpcode = "A2_tfrp";
1558 let isPseudo = 1;
1559 }
1560 def A2_tfrrcr : HInst<
1561 (outs CtrRegs:$Cd32),
1562 (ins IntRegs:$Rs32),
1563 "$Cd32 = $Rs32",
1564 tc_434c8e1e, TypeCR>, Enc_bd811a {
1565 let Inst{13-5} = 0b000000000;
1566 let Inst{31-21} = 0b01100010001;
1567 let hasNewValue = 1;
1568 let opNewValue = 0;
1569 }
1570 def A2_tfrsi : HInst<
1571 (outs IntRegs:$Rd32),
1572 (ins s32_0Imm:$Ii),
1573 "$Rd32 = #$Ii",
1574 tc_57890846, TypeALU32_2op>, Enc_5e87ce, PredNewRel, ImmRegRel {
1575 let Inst{21-21} = 0b0;
1576 let Inst{31-24} = 0b01111000;
1577 let hasNewValue = 1;
1578 let opNewValue = 0;
1579 let CextOpcode = "A2_tfr";
1580 let InputType = "imm";
1581 let BaseOpcode = "A2_tfrsi";
1582 let isPredicable = 1;
1583 let isReMaterializable = 1;
1584 let isAsCheapAsAMove = 1;
1585 let isMoveImm = 1;
1586 let isExtendable = 1;
1587 let opExtendable = 1;
1588 let isExtentSigned = 1;
1589 let opExtentBits = 16;
1590 let opExtentAlign = 0;
1591 }
1592 def A2_tfrt : HInst<
1593 (outs IntRegs:$Rd32),
1594 (ins PredRegs:$Pu4, IntRegs:$Rs32),
1595 "if ($Pu4) $Rd32 = $Rs32",
1596 tc_4c5ba658, TypeALU32_2op>, PredNewRel, ImmRegRel {
1597 let isPredicated = 1;
1598 let hasNewValue = 1;
1599 let opNewValue = 0;
1600 let CextOpcode = "A2_tfr";
1601 let InputType = "reg";
1602 let BaseOpcode = "A2_tfr";
1603 let isPseudo = 1;
1604 let isCodeGenOnly = 1;
1605 }
1606 def A2_tfrtnew : HInst<
1607 (outs IntRegs:$Rd32),
1608 (ins PredRegs:$Pu4, IntRegs:$Rs32),
1609 "if ($Pu4.new) $Rd32 = $Rs32",
1610 tc_05c070ec, TypeALU32_2op>, PredNewRel, ImmRegRel {
1611 let isPredicated = 1;
1612 let hasNewValue = 1;
1613 let opNewValue = 0;
1614 let isPredicatedNew = 1;
1615 let CextOpcode = "A2_tfr";
1616 let InputType = "reg";
1617 let BaseOpcode = "A2_tfr";
1618 let isPseudo = 1;
1619 let isCodeGenOnly = 1;
1620 }
1621 def A2_vabsh : HInst<
1622 (outs DoubleRegs:$Rdd32),
1623 (ins DoubleRegs:$Rss32),
1624 "$Rdd32 = vabsh($Rss32)",
1625 tc_cf8126ae, TypeS_2op>, Enc_b9c5fb {
1626 let Inst{13-5} = 0b000000100;
1627 let Inst{31-21} = 0b10000000010;
1628 let prefersSlot3 = 1;
1629 }
1630 def A2_vabshsat : HInst<
1631 (outs DoubleRegs:$Rdd32),
1632 (ins DoubleRegs:$Rss32),
1633 "$Rdd32 = vabsh($Rss32):sat",
1634 tc_cf8126ae, TypeS_2op>, Enc_b9c5fb {
1635 let Inst{13-5} = 0b000000101;
1636 let Inst{31-21} = 0b10000000010;
1637 let prefersSlot3 = 1;
1638 let Defs = [USR_OVF];
1639 }
1640 def A2_vabsw : HInst<
1641 (outs DoubleRegs:$Rdd32),
1642 (ins DoubleRegs:$Rss32),
1643 "$Rdd32 = vabsw($Rss32)",
1644 tc_cf8126ae, TypeS_2op>, Enc_b9c5fb {
1645 let Inst{13-5} = 0b000000110;
1646 let Inst{31-21} = 0b10000000010;
1647 let prefersSlot3 = 1;
1648 }
1649 def A2_vabswsat : HInst<
1650 (outs DoubleRegs:$Rdd32),
1651 (ins DoubleRegs:$Rss32),
1652 "$Rdd32 = vabsw($Rss32):sat",
1653 tc_cf8126ae, TypeS_2op>, Enc_b9c5fb {
1654 let Inst{13-5} = 0b000000111;
1655 let Inst{31-21} = 0b10000000010;
1656 let prefersSlot3 = 1;
1657 let Defs = [USR_OVF];
1658 }
1659 def A2_vaddb_map : HInst<
1660 (outs DoubleRegs:$Rdd32),
1661 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1662 "$Rdd32 = vaddb($Rss32,$Rtt32)",
1663 tc_946df596, TypeMAPPING> {
1664 let isPseudo = 1;
1665 let isCodeGenOnly = 1;
1666 }
1667 def A2_vaddh : HInst<
1668 (outs DoubleRegs:$Rdd32),
1669 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1670 "$Rdd32 = vaddh($Rss32,$Rtt32)",
1671 tc_946df596, TypeALU64>, Enc_a56825 {
1672 let Inst{7-5} = 0b010;
1673 let Inst{13-13} = 0b0;
1674 let Inst{31-21} = 0b11010011000;
1675 }
1676 def A2_vaddhs : HInst<
1677 (outs DoubleRegs:$Rdd32),
1678 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1679 "$Rdd32 = vaddh($Rss32,$Rtt32):sat",
1680 tc_779080bf, TypeALU64>, Enc_a56825 {
1681 let Inst{7-5} = 0b011;
1682 let Inst{13-13} = 0b0;
1683 let Inst{31-21} = 0b11010011000;
1684 let prefersSlot3 = 1;
1685 let Defs = [USR_OVF];
1686 }
1687 def A2_vaddub : HInst<
1688 (outs DoubleRegs:$Rdd32),
1689 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1690 "$Rdd32 = vaddub($Rss32,$Rtt32)",
1691 tc_946df596, TypeALU64>, Enc_a56825 {
1692 let Inst{7-5} = 0b000;
1693 let Inst{13-13} = 0b0;
1694 let Inst{31-21} = 0b11010011000;
1695 }
1696 def A2_vaddubs : HInst<
1697 (outs DoubleRegs:$Rdd32),
1698 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1699 "$Rdd32 = vaddub($Rss32,$Rtt32):sat",
1700 tc_779080bf, TypeALU64>, Enc_a56825 {
1701 let Inst{7-5} = 0b001;
1702 let Inst{13-13} = 0b0;
1703 let Inst{31-21} = 0b11010011000;
1704 let prefersSlot3 = 1;
1705 let Defs = [USR_OVF];
1706 }
1707 def A2_vadduhs : HInst<
1708 (outs DoubleRegs:$Rdd32),
1709 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1710 "$Rdd32 = vadduh($Rss32,$Rtt32):sat",
1711 tc_779080bf, TypeALU64>, Enc_a56825 {
1712 let Inst{7-5} = 0b100;
1713 let Inst{13-13} = 0b0;
1714 let Inst{31-21} = 0b11010011000;
1715 let prefersSlot3 = 1;
1716 let Defs = [USR_OVF];
1717 }
1718 def A2_vaddw : HInst<
1719 (outs DoubleRegs:$Rdd32),
1720 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1721 "$Rdd32 = vaddw($Rss32,$Rtt32)",
1722 tc_946df596, TypeALU64>, Enc_a56825 {
1723 let Inst{7-5} = 0b101;
1724 let Inst{13-13} = 0b0;
1725 let Inst{31-21} = 0b11010011000;
1726 }
1727 def A2_vaddws : HInst<
1728 (outs DoubleRegs:$Rdd32),
1729 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1730 "$Rdd32 = vaddw($Rss32,$Rtt32):sat",
1731 tc_779080bf, TypeALU64>, Enc_a56825 {
1732 let Inst{7-5} = 0b110;
1733 let Inst{13-13} = 0b0;
1734 let Inst{31-21} = 0b11010011000;
1735 let prefersSlot3 = 1;
1736 let Defs = [USR_OVF];
1737 }
1738 def A2_vavgh : HInst<
1739 (outs DoubleRegs:$Rdd32),
1740 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1741 "$Rdd32 = vavgh($Rss32,$Rtt32)",
1742 tc_6132ba3d, TypeALU64>, Enc_a56825 {
1743 let Inst{7-5} = 0b010;
1744 let Inst{13-13} = 0b0;
1745 let Inst{31-21} = 0b11010011010;
1746 let prefersSlot3 = 1;
1747 }
1748 def A2_vavghcr : HInst<
1749 (outs DoubleRegs:$Rdd32),
1750 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1751 "$Rdd32 = vavgh($Rss32,$Rtt32):crnd",
1752 tc_002cb246, TypeALU64>, Enc_a56825 {
1753 let Inst{7-5} = 0b100;
1754 let Inst{13-13} = 0b0;
1755 let Inst{31-21} = 0b11010011010;
1756 let prefersSlot3 = 1;
1757 }
1758 def A2_vavghr : HInst<
1759 (outs DoubleRegs:$Rdd32),
1760 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1761 "$Rdd32 = vavgh($Rss32,$Rtt32):rnd",
1762 tc_e4a7f9f0, TypeALU64>, Enc_a56825 {
1763 let Inst{7-5} = 0b011;
1764 let Inst{13-13} = 0b0;
1765 let Inst{31-21} = 0b11010011010;
1766 let prefersSlot3 = 1;
1767 }
1768 def A2_vavgub : HInst<
1769 (outs DoubleRegs:$Rdd32),
1770 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1771 "$Rdd32 = vavgub($Rss32,$Rtt32)",
1772 tc_6132ba3d, TypeALU64>, Enc_a56825 {
1773 let Inst{7-5} = 0b000;
1774 let Inst{13-13} = 0b0;
1775 let Inst{31-21} = 0b11010011010;
1776 let prefersSlot3 = 1;
1777 }
1778 def A2_vavgubr : HInst<
1779 (outs DoubleRegs:$Rdd32),
1780 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1781 "$Rdd32 = vavgub($Rss32,$Rtt32):rnd",
1782 tc_e4a7f9f0, TypeALU64>, Enc_a56825 {
1783 let Inst{7-5} = 0b001;
1784 let Inst{13-13} = 0b0;
1785 let Inst{31-21} = 0b11010011010;
1786 let prefersSlot3 = 1;
1787 }
1788 def A2_vavguh : HInst<
1789 (outs DoubleRegs:$Rdd32),
1790 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1791 "$Rdd32 = vavguh($Rss32,$Rtt32)",
1792 tc_6132ba3d, TypeALU64>, Enc_a56825 {
1793 let Inst{7-5} = 0b101;
1794 let Inst{13-13} = 0b0;
1795 let Inst{31-21} = 0b11010011010;
1796 let prefersSlot3 = 1;
1797 }
1798 def A2_vavguhr : HInst<
1799 (outs DoubleRegs:$Rdd32),
1800 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1801 "$Rdd32 = vavguh($Rss32,$Rtt32):rnd",
1802 tc_e4a7f9f0, TypeALU64>, Enc_a56825 {
1803 let Inst{7-5} = 0b110;
1804 let Inst{13-13} = 0b0;
1805 let Inst{31-21} = 0b11010011010;
1806 let prefersSlot3 = 1;
1807 }
1808 def A2_vavguw : HInst<
1809 (outs DoubleRegs:$Rdd32),
1810 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1811 "$Rdd32 = vavguw($Rss32,$Rtt32)",
1812 tc_6132ba3d, TypeALU64>, Enc_a56825 {
1813 let Inst{7-5} = 0b011;
1814 let Inst{13-13} = 0b0;
1815 let Inst{31-21} = 0b11010011011;
1816 let prefersSlot3 = 1;
1817 }
1818 def A2_vavguwr : HInst<
1819 (outs DoubleRegs:$Rdd32),
1820 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1821 "$Rdd32 = vavguw($Rss32,$Rtt32):rnd",
1822 tc_e4a7f9f0, TypeALU64>, Enc_a56825 {
1823 let Inst{7-5} = 0b100;
1824 let Inst{13-13} = 0b0;
1825 let Inst{31-21} = 0b11010011011;
1826 let prefersSlot3 = 1;
1827 }
1828 def A2_vavgw : HInst<
1829 (outs DoubleRegs:$Rdd32),
1830 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1831 "$Rdd32 = vavgw($Rss32,$Rtt32)",
1832 tc_6132ba3d, TypeALU64>, Enc_a56825 {
1833 let Inst{7-5} = 0b000;
1834 let Inst{13-13} = 0b0;
1835 let Inst{31-21} = 0b11010011011;
1836 let prefersSlot3 = 1;
1837 }
1838 def A2_vavgwcr : HInst<
1839 (outs DoubleRegs:$Rdd32),
1840 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1841 "$Rdd32 = vavgw($Rss32,$Rtt32):crnd",
1842 tc_002cb246, TypeALU64>, Enc_a56825 {
1843 let Inst{7-5} = 0b010;
1844 let Inst{13-13} = 0b0;
1845 let Inst{31-21} = 0b11010011011;
1846 let prefersSlot3 = 1;
1847 }
1848 def A2_vavgwr : HInst<
1849 (outs DoubleRegs:$Rdd32),
1850 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1851 "$Rdd32 = vavgw($Rss32,$Rtt32):rnd",
1852 tc_e4a7f9f0, TypeALU64>, Enc_a56825 {
1853 let Inst{7-5} = 0b001;
1854 let Inst{13-13} = 0b0;
1855 let Inst{31-21} = 0b11010011011;
1856 let prefersSlot3 = 1;
1857 }
1858 def A2_vcmpbeq : HInst<
1859 (outs PredRegs:$Pd4),
1860 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1861 "$Pd4 = vcmpb.eq($Rss32,$Rtt32)",
1862 tc_85d5d03f, TypeALU64>, Enc_fcf7a7 {
1863 let Inst{7-2} = 0b110000;
1864 let Inst{13-13} = 0b0;
1865 let Inst{31-21} = 0b11010010000;
1866 }
1867 def A2_vcmpbgtu : HInst<
1868 (outs PredRegs:$Pd4),
1869 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1870 "$Pd4 = vcmpb.gtu($Rss32,$Rtt32)",
1871 tc_85d5d03f, TypeALU64>, Enc_fcf7a7 {
1872 let Inst{7-2} = 0b111000;
1873 let Inst{13-13} = 0b0;
1874 let Inst{31-21} = 0b11010010000;
1875 }
1876 def A2_vcmpheq : HInst<
1877 (outs PredRegs:$Pd4),
1878 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1879 "$Pd4 = vcmph.eq($Rss32,$Rtt32)",
1880 tc_85d5d03f, TypeALU64>, Enc_fcf7a7 {
1881 let Inst{7-2} = 0b011000;
1882 let Inst{13-13} = 0b0;
1883 let Inst{31-21} = 0b11010010000;
1884 }
1885 def A2_vcmphgt : HInst<
1886 (outs PredRegs:$Pd4),
1887 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1888 "$Pd4 = vcmph.gt($Rss32,$Rtt32)",
1889 tc_85d5d03f, TypeALU64>, Enc_fcf7a7 {
1890 let Inst{7-2} = 0b100000;
1891 let Inst{13-13} = 0b0;
1892 let Inst{31-21} = 0b11010010000;
1893 }
1894 def A2_vcmphgtu : HInst<
1895 (outs PredRegs:$Pd4),
1896 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1897 "$Pd4 = vcmph.gtu($Rss32,$Rtt32)",
1898 tc_85d5d03f, TypeALU64>, Enc_fcf7a7 {
1899 let Inst{7-2} = 0b101000;
1900 let Inst{13-13} = 0b0;
1901 let Inst{31-21} = 0b11010010000;
1902 }
1903 def A2_vcmpweq : HInst<
1904 (outs PredRegs:$Pd4),
1905 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1906 "$Pd4 = vcmpw.eq($Rss32,$Rtt32)",
1907 tc_85d5d03f, TypeALU64>, Enc_fcf7a7 {
1908 let Inst{7-2} = 0b000000;
1909 let Inst{13-13} = 0b0;
1910 let Inst{31-21} = 0b11010010000;
1911 }
1912 def A2_vcmpwgt : HInst<
1913 (outs PredRegs:$Pd4),
1914 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1915 "$Pd4 = vcmpw.gt($Rss32,$Rtt32)",
1916 tc_85d5d03f, TypeALU64>, Enc_fcf7a7 {
1917 let Inst{7-2} = 0b001000;
1918 let Inst{13-13} = 0b0;
1919 let Inst{31-21} = 0b11010010000;
1920 }
1921 def A2_vcmpwgtu : HInst<
1922 (outs PredRegs:$Pd4),
1923 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
1924 "$Pd4 = vcmpw.gtu($Rss32,$Rtt32)",
1925 tc_85d5d03f, TypeALU64>, Enc_fcf7a7 {
1926 let Inst{7-2} = 0b010000;
1927 let Inst{13-13} = 0b0;
1928 let Inst{31-21} = 0b11010010000;
1929 }
1930 def A2_vconj : HInst<
1931 (outs DoubleRegs:$Rdd32),
1932 (ins DoubleRegs:$Rss32),
1933 "$Rdd32 = vconj($Rss32):sat",
1934 tc_cf8126ae, TypeS_2op>, Enc_b9c5fb {
1935 let Inst{13-5} = 0b000000111;
1936 let Inst{31-21} = 0b10000000100;
1937 let prefersSlot3 = 1;
1938 let Defs = [USR_OVF];
1939 }
1940 def A2_vmaxb : HInst<
1941 (outs DoubleRegs:$Rdd32),
1942 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
1943 "$Rdd32 = vmaxb($Rtt32,$Rss32)",
1944 tc_779080bf, TypeALU64>, Enc_ea23e4 {
1945 let Inst{7-5} = 0b110;
1946 let Inst{13-13} = 0b0;
1947 let Inst{31-21} = 0b11010011110;
1948 let prefersSlot3 = 1;
1949 }
1950 def A2_vmaxh : HInst<
1951 (outs DoubleRegs:$Rdd32),
1952 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
1953 "$Rdd32 = vmaxh($Rtt32,$Rss32)",
1954 tc_779080bf, TypeALU64>, Enc_ea23e4 {
1955 let Inst{7-5} = 0b001;
1956 let Inst{13-13} = 0b0;
1957 let Inst{31-21} = 0b11010011110;
1958 let prefersSlot3 = 1;
1959 }
1960 def A2_vmaxub : HInst<
1961 (outs DoubleRegs:$Rdd32),
1962 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
1963 "$Rdd32 = vmaxub($Rtt32,$Rss32)",
1964 tc_779080bf, TypeALU64>, Enc_ea23e4 {
1965 let Inst{7-5} = 0b000;
1966 let Inst{13-13} = 0b0;
1967 let Inst{31-21} = 0b11010011110;
1968 let prefersSlot3 = 1;
1969 }
1970 def A2_vmaxuh : HInst<
1971 (outs DoubleRegs:$Rdd32),
1972 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
1973 "$Rdd32 = vmaxuh($Rtt32,$Rss32)",
1974 tc_779080bf, TypeALU64>, Enc_ea23e4 {
1975 let Inst{7-5} = 0b010;
1976 let Inst{13-13} = 0b0;
1977 let Inst{31-21} = 0b11010011110;
1978 let prefersSlot3 = 1;
1979 }
1980 def A2_vmaxuw : HInst<
1981 (outs DoubleRegs:$Rdd32),
1982 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
1983 "$Rdd32 = vmaxuw($Rtt32,$Rss32)",
1984 tc_779080bf, TypeALU64>, Enc_ea23e4 {
1985 let Inst{7-5} = 0b101;
1986 let Inst{13-13} = 0b0;
1987 let Inst{31-21} = 0b11010011101;
1988 let prefersSlot3 = 1;
1989 }
1990 def A2_vmaxw : HInst<
1991 (outs DoubleRegs:$Rdd32),
1992 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
1993 "$Rdd32 = vmaxw($Rtt32,$Rss32)",
1994 tc_779080bf, TypeALU64>, Enc_ea23e4 {
1995 let Inst{7-5} = 0b011;
1996 let Inst{13-13} = 0b0;
1997 let Inst{31-21} = 0b11010011110;
1998 let prefersSlot3 = 1;
1999 }
2000 def A2_vminb : HInst<
2001 (outs DoubleRegs:$Rdd32),
2002 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2003 "$Rdd32 = vminb($Rtt32,$Rss32)",
2004 tc_779080bf, TypeALU64>, Enc_ea23e4 {
2005 let Inst{7-5} = 0b111;
2006 let Inst{13-13} = 0b0;
2007 let Inst{31-21} = 0b11010011110;
2008 let prefersSlot3 = 1;
2009 }
2010 def A2_vminh : HInst<
2011 (outs DoubleRegs:$Rdd32),
2012 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2013 "$Rdd32 = vminh($Rtt32,$Rss32)",
2014 tc_779080bf, TypeALU64>, Enc_ea23e4 {
2015 let Inst{7-5} = 0b001;
2016 let Inst{13-13} = 0b0;
2017 let Inst{31-21} = 0b11010011101;
2018 let prefersSlot3 = 1;
2019 }
2020 def A2_vminub : HInst<
2021 (outs DoubleRegs:$Rdd32),
2022 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2023 "$Rdd32 = vminub($Rtt32,$Rss32)",
2024 tc_779080bf, TypeALU64>, Enc_ea23e4 {
2025 let Inst{7-5} = 0b000;
2026 let Inst{13-13} = 0b0;
2027 let Inst{31-21} = 0b11010011101;
2028 let prefersSlot3 = 1;
2029 }
2030 def A2_vminuh : HInst<
2031 (outs DoubleRegs:$Rdd32),
2032 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2033 "$Rdd32 = vminuh($Rtt32,$Rss32)",
2034 tc_779080bf, TypeALU64>, Enc_ea23e4 {
2035 let Inst{7-5} = 0b010;
2036 let Inst{13-13} = 0b0;
2037 let Inst{31-21} = 0b11010011101;
2038 let prefersSlot3 = 1;
2039 }
2040 def A2_vminuw : HInst<
2041 (outs DoubleRegs:$Rdd32),
2042 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2043 "$Rdd32 = vminuw($Rtt32,$Rss32)",
2044 tc_779080bf, TypeALU64>, Enc_ea23e4 {
2045 let Inst{7-5} = 0b100;
2046 let Inst{13-13} = 0b0;
2047 let Inst{31-21} = 0b11010011101;
2048 let prefersSlot3 = 1;
2049 }
2050 def A2_vminw : HInst<
2051 (outs DoubleRegs:$Rdd32),
2052 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2053 "$Rdd32 = vminw($Rtt32,$Rss32)",
2054 tc_779080bf, TypeALU64>, Enc_ea23e4 {
2055 let Inst{7-5} = 0b011;
2056 let Inst{13-13} = 0b0;
2057 let Inst{31-21} = 0b11010011101;
2058 let prefersSlot3 = 1;
2059 }
2060 def A2_vnavgh : HInst<
2061 (outs DoubleRegs:$Rdd32),
2062 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2063 "$Rdd32 = vnavgh($Rtt32,$Rss32)",
2064 tc_6132ba3d, TypeALU64>, Enc_ea23e4 {
2065 let Inst{7-5} = 0b000;
2066 let Inst{13-13} = 0b0;
2067 let Inst{31-21} = 0b11010011100;
2068 let prefersSlot3 = 1;
2069 }
2070 def A2_vnavghcr : HInst<
2071 (outs DoubleRegs:$Rdd32),
2072 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2073 "$Rdd32 = vnavgh($Rtt32,$Rss32):crnd:sat",
2074 tc_002cb246, TypeALU64>, Enc_ea23e4 {
2075 let Inst{7-5} = 0b010;
2076 let Inst{13-13} = 0b0;
2077 let Inst{31-21} = 0b11010011100;
2078 let prefersSlot3 = 1;
2079 let Defs = [USR_OVF];
2080 }
2081 def A2_vnavghr : HInst<
2082 (outs DoubleRegs:$Rdd32),
2083 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2084 "$Rdd32 = vnavgh($Rtt32,$Rss32):rnd:sat",
2085 tc_002cb246, TypeALU64>, Enc_ea23e4 {
2086 let Inst{7-5} = 0b001;
2087 let Inst{13-13} = 0b0;
2088 let Inst{31-21} = 0b11010011100;
2089 let prefersSlot3 = 1;
2090 let Defs = [USR_OVF];
2091 }
2092 def A2_vnavgw : HInst<
2093 (outs DoubleRegs:$Rdd32),
2094 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2095 "$Rdd32 = vnavgw($Rtt32,$Rss32)",
2096 tc_6132ba3d, TypeALU64>, Enc_ea23e4 {
2097 let Inst{7-5} = 0b011;
2098 let Inst{13-13} = 0b0;
2099 let Inst{31-21} = 0b11010011100;
2100 let prefersSlot3 = 1;
2101 }
2102 def A2_vnavgwcr : HInst<
2103 (outs DoubleRegs:$Rdd32),
2104 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2105 "$Rdd32 = vnavgw($Rtt32,$Rss32):crnd:sat",
2106 tc_002cb246, TypeALU64>, Enc_ea23e4 {
2107 let Inst{7-5} = 0b110;
2108 let Inst{13-13} = 0b0;
2109 let Inst{31-21} = 0b11010011100;
2110 let prefersSlot3 = 1;
2111 let Defs = [USR_OVF];
2112 }
2113 def A2_vnavgwr : HInst<
2114 (outs DoubleRegs:$Rdd32),
2115 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2116 "$Rdd32 = vnavgw($Rtt32,$Rss32):rnd:sat",
2117 tc_002cb246, TypeALU64>, Enc_ea23e4 {
2118 let Inst{7-5} = 0b100;
2119 let Inst{13-13} = 0b0;
2120 let Inst{31-21} = 0b11010011100;
2121 let prefersSlot3 = 1;
2122 let Defs = [USR_OVF];
2123 }
2124 def A2_vraddub : HInst<
2125 (outs DoubleRegs:$Rdd32),
2126 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
2127 "$Rdd32 = vraddub($Rss32,$Rtt32)",
2128 tc_bafaade3, TypeM>, Enc_a56825 {
2129 let Inst{7-5} = 0b001;
2130 let Inst{13-13} = 0b0;
2131 let Inst{31-21} = 0b11101000010;
2132 let prefersSlot3 = 1;
2133 }
2134 def A2_vraddub_acc : HInst<
2135 (outs DoubleRegs:$Rxx32),
2136 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
2137 "$Rxx32 += vraddub($Rss32,$Rtt32)",
2138 tc_d773585a, TypeM>, Enc_88c16c {
2139 let Inst{7-5} = 0b001;
2140 let Inst{13-13} = 0b0;
2141 let Inst{31-21} = 0b11101010010;
2142 let prefersSlot3 = 1;
2143 let Constraints = "$Rxx32 = $Rxx32in";
2144 }
2145 def A2_vrsadub : HInst<
2146 (outs DoubleRegs:$Rdd32),
2147 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
2148 "$Rdd32 = vrsadub($Rss32,$Rtt32)",
2149 tc_bafaade3, TypeM>, Enc_a56825 {
2150 let Inst{7-5} = 0b010;
2151 let Inst{13-13} = 0b0;
2152 let Inst{31-21} = 0b11101000010;
2153 let prefersSlot3 = 1;
2154 }
2155 def A2_vrsadub_acc : HInst<
2156 (outs DoubleRegs:$Rxx32),
2157 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
2158 "$Rxx32 += vrsadub($Rss32,$Rtt32)",
2159 tc_d773585a, TypeM>, Enc_88c16c {
2160 let Inst{7-5} = 0b010;
2161 let Inst{13-13} = 0b0;
2162 let Inst{31-21} = 0b11101010010;
2163 let prefersSlot3 = 1;
2164 let Constraints = "$Rxx32 = $Rxx32in";
2165 }
2166 def A2_vsubb_map : HInst<
2167 (outs DoubleRegs:$Rdd32),
2168 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
2169 "$Rdd32 = vsubb($Rss32,$Rtt32)",
2170 tc_946df596, TypeMAPPING> {
2171 let isPseudo = 1;
2172 let isCodeGenOnly = 1;
2173 }
2174 def A2_vsubh : HInst<
2175 (outs DoubleRegs:$Rdd32),
2176 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2177 "$Rdd32 = vsubh($Rtt32,$Rss32)",
2178 tc_946df596, TypeALU64>, Enc_ea23e4 {
2179 let Inst{7-5} = 0b010;
2180 let Inst{13-13} = 0b0;
2181 let Inst{31-21} = 0b11010011001;
2182 }
2183 def A2_vsubhs : HInst<
2184 (outs DoubleRegs:$Rdd32),
2185 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2186 "$Rdd32 = vsubh($Rtt32,$Rss32):sat",
2187 tc_779080bf, TypeALU64>, Enc_ea23e4 {
2188 let Inst{7-5} = 0b011;
2189 let Inst{13-13} = 0b0;
2190 let Inst{31-21} = 0b11010011001;
2191 let prefersSlot3 = 1;
2192 let Defs = [USR_OVF];
2193 }
2194 def A2_vsubub : HInst<
2195 (outs DoubleRegs:$Rdd32),
2196 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2197 "$Rdd32 = vsubub($Rtt32,$Rss32)",
2198 tc_946df596, TypeALU64>, Enc_ea23e4 {
2199 let Inst{7-5} = 0b000;
2200 let Inst{13-13} = 0b0;
2201 let Inst{31-21} = 0b11010011001;
2202 }
2203 def A2_vsububs : HInst<
2204 (outs DoubleRegs:$Rdd32),
2205 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2206 "$Rdd32 = vsubub($Rtt32,$Rss32):sat",
2207 tc_779080bf, TypeALU64>, Enc_ea23e4 {
2208 let Inst{7-5} = 0b001;
2209 let Inst{13-13} = 0b0;
2210 let Inst{31-21} = 0b11010011001;
2211 let prefersSlot3 = 1;
2212 let Defs = [USR_OVF];
2213 }
2214 def A2_vsubuhs : HInst<
2215 (outs DoubleRegs:$Rdd32),
2216 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2217 "$Rdd32 = vsubuh($Rtt32,$Rss32):sat",
2218 tc_779080bf, TypeALU64>, Enc_ea23e4 {
2219 let Inst{7-5} = 0b100;
2220 let Inst{13-13} = 0b0;
2221 let Inst{31-21} = 0b11010011001;
2222 let prefersSlot3 = 1;
2223 let Defs = [USR_OVF];
2224 }
2225 def A2_vsubw : HInst<
2226 (outs DoubleRegs:$Rdd32),
2227 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2228 "$Rdd32 = vsubw($Rtt32,$Rss32)",
2229 tc_946df596, TypeALU64>, Enc_ea23e4 {
2230 let Inst{7-5} = 0b101;
2231 let Inst{13-13} = 0b0;
2232 let Inst{31-21} = 0b11010011001;
2233 }
2234 def A2_vsubws : HInst<
2235 (outs DoubleRegs:$Rdd32),
2236 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2237 "$Rdd32 = vsubw($Rtt32,$Rss32):sat",
2238 tc_779080bf, TypeALU64>, Enc_ea23e4 {
2239 let Inst{7-5} = 0b110;
2240 let Inst{13-13} = 0b0;
2241 let Inst{31-21} = 0b11010011001;
2242 let prefersSlot3 = 1;
2243 let Defs = [USR_OVF];
2244 }
2245 def A2_xor : HInst<
2246 (outs IntRegs:$Rd32),
2247 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2248 "$Rd32 = xor($Rs32,$Rt32)",
2249 tc_5a2711e5, TypeALU32_3op>, Enc_5ab2be, PredNewRel {
2250 let Inst{7-5} = 0b000;
2251 let Inst{13-13} = 0b0;
2252 let Inst{31-21} = 0b11110001011;
2253 let hasNewValue = 1;
2254 let opNewValue = 0;
2255 let InputType = "reg";
2256 let BaseOpcode = "A2_xor";
2257 let isCommutable = 1;
2258 let isPredicable = 1;
2259 }
2260 def A2_xorp : HInst<
2261 (outs DoubleRegs:$Rdd32),
2262 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
2263 "$Rdd32 = xor($Rss32,$Rtt32)",
2264 tc_946df596, TypeALU64>, Enc_a56825 {
2265 let Inst{7-5} = 0b100;
2266 let Inst{13-13} = 0b0;
2267 let Inst{31-21} = 0b11010011111;
2268 let isCommutable = 1;
2269 }
2270 def A2_zxtb : HInst<
2271 (outs IntRegs:$Rd32),
2272 (ins IntRegs:$Rs32),
2273 "$Rd32 = zxtb($Rs32)",
2274 tc_5a2711e5, TypeALU32_2op>, PredNewRel {
2275 let hasNewValue = 1;
2276 let opNewValue = 0;
2277 let BaseOpcode = "A2_zxtb";
2278 let isPredicable = 1;
2279 let isPseudo = 1;
2280 let isCodeGenOnly = 1;
2281 }
2282 def A2_zxth : HInst<
2283 (outs IntRegs:$Rd32),
2284 (ins IntRegs:$Rs32),
2285 "$Rd32 = zxth($Rs32)",
2286 tc_57890846, TypeALU32_2op>, Enc_5e2823, PredNewRel {
2287 let Inst{13-5} = 0b000000000;
2288 let Inst{31-21} = 0b01110000110;
2289 let hasNewValue = 1;
2290 let opNewValue = 0;
2291 let BaseOpcode = "A2_zxth";
2292 let isPredicable = 1;
2293 }
2294 def A4_addp_c : HInst<
2295 (outs DoubleRegs:$Rdd32, PredRegs:$Px4),
2296 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32, PredRegs:$Px4in),
2297 "$Rdd32 = add($Rss32,$Rtt32,$Px4):carry",
2298 tc_9c3ecd83, TypeS_3op>, Enc_2b3f60 {
2299 let Inst{7-7} = 0b0;
2300 let Inst{13-13} = 0b0;
2301 let Inst{31-21} = 0b11000010110;
2302 let isPredicateLate = 1;
2303 let Constraints = "$Px4 = $Px4in";
2304 }
2305 def A4_andn : HInst<
2306 (outs IntRegs:$Rd32),
2307 (ins IntRegs:$Rt32, IntRegs:$Rs32),
2308 "$Rd32 = and($Rt32,~$Rs32)",
2309 tc_5a2711e5, TypeALU32_3op>, Enc_bd6011 {
2310 let Inst{7-5} = 0b000;
2311 let Inst{13-13} = 0b0;
2312 let Inst{31-21} = 0b11110001100;
2313 let hasNewValue = 1;
2314 let opNewValue = 0;
2315 let InputType = "reg";
2316 }
2317 def A4_andnp : HInst<
2318 (outs DoubleRegs:$Rdd32),
2319 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2320 "$Rdd32 = and($Rtt32,~$Rss32)",
2321 tc_946df596, TypeALU64>, Enc_ea23e4 {
2322 let Inst{7-5} = 0b001;
2323 let Inst{13-13} = 0b0;
2324 let Inst{31-21} = 0b11010011111;
2325 }
2326 def A4_bitsplit : HInst<
2327 (outs DoubleRegs:$Rdd32),
2328 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2329 "$Rdd32 = bitsplit($Rs32,$Rt32)",
2330 tc_4414d8b1, TypeALU64>, Enc_be32a5 {
2331 let Inst{7-5} = 0b000;
2332 let Inst{13-13} = 0b0;
2333 let Inst{31-21} = 0b11010100001;
2334 let prefersSlot3 = 1;
2335 }
2336 def A4_bitspliti : HInst<
2337 (outs DoubleRegs:$Rdd32),
2338 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
2339 "$Rdd32 = bitsplit($Rs32,#$Ii)",
2340 tc_4414d8b1, TypeS_2op>, Enc_311abd {
2341 let Inst{7-5} = 0b100;
2342 let Inst{13-13} = 0b0;
2343 let Inst{31-21} = 0b10001000110;
2344 let prefersSlot3 = 1;
2345 }
2346 def A4_boundscheck : HInst<
2347 (outs PredRegs:$Pd4),
2348 (ins IntRegs:$Rs32, DoubleRegs:$Rtt32),
2349 "$Pd4 = boundscheck($Rs32,$Rtt32)",
2350 tc_85d5d03f, TypeALU64> {
2351 let isPseudo = 1;
2352 }
2353 def A4_boundscheck_hi : HInst<
2354 (outs PredRegs:$Pd4),
2355 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
2356 "$Pd4 = boundscheck($Rss32,$Rtt32):raw:hi",
2357 tc_85d5d03f, TypeALU64>, Enc_fcf7a7 {
2358 let Inst{7-2} = 0b101000;
2359 let Inst{13-13} = 0b1;
2360 let Inst{31-21} = 0b11010010000;
2361 }
2362 def A4_boundscheck_lo : HInst<
2363 (outs PredRegs:$Pd4),
2364 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
2365 "$Pd4 = boundscheck($Rss32,$Rtt32):raw:lo",
2366 tc_85d5d03f, TypeALU64>, Enc_fcf7a7 {
2367 let Inst{7-2} = 0b100000;
2368 let Inst{13-13} = 0b1;
2369 let Inst{31-21} = 0b11010010000;
2370 }
2371 def A4_cmpbeq : HInst<
2372 (outs PredRegs:$Pd4),
2373 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2374 "$Pd4 = cmpb.eq($Rs32,$Rt32)",
2375 tc_85d5d03f, TypeS_3op>, Enc_c2b48e, ImmRegRel {
2376 let Inst{7-2} = 0b110000;
2377 let Inst{13-13} = 0b0;
2378 let Inst{31-21} = 0b11000111110;
2379 let CextOpcode = "A4_cmpbeq";
2380 let InputType = "reg";
2381 let isCommutable = 1;
2382 let isCompare = 1;
2383 }
2384 def A4_cmpbeqi : HInst<
2385 (outs PredRegs:$Pd4),
2386 (ins IntRegs:$Rs32, u8_0Imm:$Ii),
2387 "$Pd4 = cmpb.eq($Rs32,#$Ii)",
2388 tc_643b4717, TypeALU64>, Enc_08d755, ImmRegRel {
2389 let Inst{4-2} = 0b000;
2390 let Inst{13-13} = 0b0;
2391 let Inst{31-21} = 0b11011101000;
2392 let CextOpcode = "A4_cmpbeq";
2393 let InputType = "imm";
2394 let isCommutable = 1;
2395 let isCompare = 1;
2396 }
2397 def A4_cmpbgt : HInst<
2398 (outs PredRegs:$Pd4),
2399 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2400 "$Pd4 = cmpb.gt($Rs32,$Rt32)",
2401 tc_85d5d03f, TypeS_3op>, Enc_c2b48e, ImmRegRel {
2402 let Inst{7-2} = 0b010000;
2403 let Inst{13-13} = 0b0;
2404 let Inst{31-21} = 0b11000111110;
2405 let CextOpcode = "A4_cmpbgt";
2406 let InputType = "reg";
2407 let isCompare = 1;
2408 }
2409 def A4_cmpbgti : HInst<
2410 (outs PredRegs:$Pd4),
2411 (ins IntRegs:$Rs32, s8_0Imm:$Ii),
2412 "$Pd4 = cmpb.gt($Rs32,#$Ii)",
2413 tc_643b4717, TypeALU64>, Enc_08d755, ImmRegRel {
2414 let Inst{4-2} = 0b000;
2415 let Inst{13-13} = 0b0;
2416 let Inst{31-21} = 0b11011101001;
2417 let CextOpcode = "A4_cmpbgt";
2418 let InputType = "imm";
2419 let isCompare = 1;
2420 }
2421 def A4_cmpbgtu : HInst<
2422 (outs PredRegs:$Pd4),
2423 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2424 "$Pd4 = cmpb.gtu($Rs32,$Rt32)",
2425 tc_85d5d03f, TypeS_3op>, Enc_c2b48e, ImmRegRel {
2426 let Inst{7-2} = 0b111000;
2427 let Inst{13-13} = 0b0;
2428 let Inst{31-21} = 0b11000111110;
2429 let CextOpcode = "A4_cmpbgtu";
2430 let InputType = "reg";
2431 let isCompare = 1;
2432 }
2433 def A4_cmpbgtui : HInst<
2434 (outs PredRegs:$Pd4),
2435 (ins IntRegs:$Rs32, u32_0Imm:$Ii),
2436 "$Pd4 = cmpb.gtu($Rs32,#$Ii)",
2437 tc_643b4717, TypeALU64>, Enc_02553a, ImmRegRel {
2438 let Inst{4-2} = 0b000;
2439 let Inst{13-12} = 0b00;
2440 let Inst{31-21} = 0b11011101010;
2441 let CextOpcode = "A4_cmpbgtu";
2442 let InputType = "imm";
2443 let isCompare = 1;
2444 let isExtendable = 1;
2445 let opExtendable = 2;
2446 let isExtentSigned = 0;
2447 let opExtentBits = 7;
2448 let opExtentAlign = 0;
2449 }
2450 def A4_cmpheq : HInst<
2451 (outs PredRegs:$Pd4),
2452 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2453 "$Pd4 = cmph.eq($Rs32,$Rt32)",
2454 tc_85d5d03f, TypeS_3op>, Enc_c2b48e, ImmRegRel {
2455 let Inst{7-2} = 0b011000;
2456 let Inst{13-13} = 0b0;
2457 let Inst{31-21} = 0b11000111110;
2458 let CextOpcode = "A4_cmpheq";
2459 let InputType = "reg";
2460 let isCommutable = 1;
2461 let isCompare = 1;
2462 }
2463 def A4_cmpheqi : HInst<
2464 (outs PredRegs:$Pd4),
2465 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
2466 "$Pd4 = cmph.eq($Rs32,#$Ii)",
2467 tc_643b4717, TypeALU64>, Enc_08d755, ImmRegRel {
2468 let Inst{4-2} = 0b010;
2469 let Inst{13-13} = 0b0;
2470 let Inst{31-21} = 0b11011101000;
2471 let CextOpcode = "A4_cmpheq";
2472 let InputType = "imm";
2473 let isCommutable = 1;
2474 let isCompare = 1;
2475 let isExtendable = 1;
2476 let opExtendable = 2;
2477 let isExtentSigned = 1;
2478 let opExtentBits = 8;
2479 let opExtentAlign = 0;
2480 }
2481 def A4_cmphgt : HInst<
2482 (outs PredRegs:$Pd4),
2483 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2484 "$Pd4 = cmph.gt($Rs32,$Rt32)",
2485 tc_85d5d03f, TypeS_3op>, Enc_c2b48e, ImmRegRel {
2486 let Inst{7-2} = 0b100000;
2487 let Inst{13-13} = 0b0;
2488 let Inst{31-21} = 0b11000111110;
2489 let CextOpcode = "A4_cmphgt";
2490 let InputType = "reg";
2491 let isCompare = 1;
2492 }
2493 def A4_cmphgti : HInst<
2494 (outs PredRegs:$Pd4),
2495 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
2496 "$Pd4 = cmph.gt($Rs32,#$Ii)",
2497 tc_643b4717, TypeALU64>, Enc_08d755, ImmRegRel {
2498 let Inst{4-2} = 0b010;
2499 let Inst{13-13} = 0b0;
2500 let Inst{31-21} = 0b11011101001;
2501 let CextOpcode = "A4_cmphgt";
2502 let InputType = "imm";
2503 let isCompare = 1;
2504 let isExtendable = 1;
2505 let opExtendable = 2;
2506 let isExtentSigned = 1;
2507 let opExtentBits = 8;
2508 let opExtentAlign = 0;
2509 }
2510 def A4_cmphgtu : HInst<
2511 (outs PredRegs:$Pd4),
2512 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2513 "$Pd4 = cmph.gtu($Rs32,$Rt32)",
2514 tc_85d5d03f, TypeS_3op>, Enc_c2b48e, ImmRegRel {
2515 let Inst{7-2} = 0b101000;
2516 let Inst{13-13} = 0b0;
2517 let Inst{31-21} = 0b11000111110;
2518 let CextOpcode = "A4_cmphgtu";
2519 let InputType = "reg";
2520 let isCompare = 1;
2521 }
2522 def A4_cmphgtui : HInst<
2523 (outs PredRegs:$Pd4),
2524 (ins IntRegs:$Rs32, u32_0Imm:$Ii),
2525 "$Pd4 = cmph.gtu($Rs32,#$Ii)",
2526 tc_643b4717, TypeALU64>, Enc_02553a, ImmRegRel {
2527 let Inst{4-2} = 0b010;
2528 let Inst{13-12} = 0b00;
2529 let Inst{31-21} = 0b11011101010;
2530 let CextOpcode = "A4_cmphgtu";
2531 let InputType = "imm";
2532 let isCompare = 1;
2533 let isExtendable = 1;
2534 let opExtendable = 2;
2535 let isExtentSigned = 0;
2536 let opExtentBits = 7;
2537 let opExtentAlign = 0;
2538 }
2539 def A4_combineii : HInst<
2540 (outs DoubleRegs:$Rdd32),
2541 (ins s8_0Imm:$Ii, u32_0Imm:$II),
2542 "$Rdd32 = combine(#$Ii,#$II)",
2543 tc_5a2711e5, TypeALU32_2op>, Enc_f0cca7 {
2544 let Inst{31-21} = 0b01111100100;
2545 let isExtendable = 1;
2546 let opExtendable = 2;
2547 let isExtentSigned = 0;
2548 let opExtentBits = 6;
2549 let opExtentAlign = 0;
2550 }
2551 def A4_combineir : HInst<
2552 (outs DoubleRegs:$Rdd32),
2553 (ins s32_0Imm:$Ii, IntRegs:$Rs32),
2554 "$Rdd32 = combine(#$Ii,$Rs32)",
2555 tc_5a2711e5, TypeALU32_2op>, Enc_9cdba7 {
2556 let Inst{13-13} = 0b1;
2557 let Inst{31-21} = 0b01110011001;
2558 let isExtendable = 1;
2559 let opExtendable = 1;
2560 let isExtentSigned = 1;
2561 let opExtentBits = 8;
2562 let opExtentAlign = 0;
2563 }
2564 def A4_combineri : HInst<
2565 (outs DoubleRegs:$Rdd32),
2566 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
2567 "$Rdd32 = combine($Rs32,#$Ii)",
2568 tc_5a2711e5, TypeALU32_2op>, Enc_9cdba7 {
2569 let Inst{13-13} = 0b1;
2570 let Inst{31-21} = 0b01110011000;
2571 let isExtendable = 1;
2572 let opExtendable = 2;
2573 let isExtentSigned = 1;
2574 let opExtentBits = 8;
2575 let opExtentAlign = 0;
2576 }
2577 def A4_cround_ri : HInst<
2578 (outs IntRegs:$Rd32),
2579 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
2580 "$Rd32 = cround($Rs32,#$Ii)",
2581 tc_002cb246, TypeS_2op>, Enc_a05677 {
2582 let Inst{7-5} = 0b000;
2583 let Inst{13-13} = 0b0;
2584 let Inst{31-21} = 0b10001100111;
2585 let hasNewValue = 1;
2586 let opNewValue = 0;
2587 let prefersSlot3 = 1;
2588 }
2589 def A4_cround_rr : HInst<
2590 (outs IntRegs:$Rd32),
2591 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2592 "$Rd32 = cround($Rs32,$Rt32)",
2593 tc_002cb246, TypeS_3op>, Enc_5ab2be {
2594 let Inst{7-5} = 0b000;
2595 let Inst{13-13} = 0b0;
2596 let Inst{31-21} = 0b11000110110;
2597 let hasNewValue = 1;
2598 let opNewValue = 0;
2599 let prefersSlot3 = 1;
2600 }
2601 def A4_ext : HInst<
2602 (outs),
2603 (ins u26_6Imm:$Ii),
2604 "immext(#$Ii)",
2605 tc_862b3e70, TypeEXTENDER>, Enc_2b518f {
2606 let Inst{31-28} = 0b0000;
2607 }
2608 def A4_modwrapu : HInst<
2609 (outs IntRegs:$Rd32),
2610 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2611 "$Rd32 = modwrap($Rs32,$Rt32)",
2612 tc_779080bf, TypeALU64>, Enc_5ab2be {
2613 let Inst{7-5} = 0b111;
2614 let Inst{13-13} = 0b0;
2615 let Inst{31-21} = 0b11010011111;
2616 let hasNewValue = 1;
2617 let opNewValue = 0;
2618 let prefersSlot3 = 1;
2619 }
2620 def A4_orn : HInst<
2621 (outs IntRegs:$Rd32),
2622 (ins IntRegs:$Rt32, IntRegs:$Rs32),
2623 "$Rd32 = or($Rt32,~$Rs32)",
2624 tc_5a2711e5, TypeALU32_3op>, Enc_bd6011 {
2625 let Inst{7-5} = 0b000;
2626 let Inst{13-13} = 0b0;
2627 let Inst{31-21} = 0b11110001101;
2628 let hasNewValue = 1;
2629 let opNewValue = 0;
2630 let InputType = "reg";
2631 }
2632 def A4_ornp : HInst<
2633 (outs DoubleRegs:$Rdd32),
2634 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
2635 "$Rdd32 = or($Rtt32,~$Rss32)",
2636 tc_946df596, TypeALU64>, Enc_ea23e4 {
2637 let Inst{7-5} = 0b011;
2638 let Inst{13-13} = 0b0;
2639 let Inst{31-21} = 0b11010011111;
2640 }
2641 def A4_paslhf : HInst<
2642 (outs IntRegs:$Rd32),
2643 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2644 "if (!$Pu4) $Rd32 = aslh($Rs32)",
2645 tc_5a2711e5, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2646 let Inst{7-5} = 0b000;
2647 let Inst{13-10} = 0b1010;
2648 let Inst{31-21} = 0b01110000000;
2649 let isPredicated = 1;
2650 let isPredicatedFalse = 1;
2651 let hasNewValue = 1;
2652 let opNewValue = 0;
2653 let BaseOpcode = "A2_aslh";
2654 }
2655 def A4_paslhfnew : HInst<
2656 (outs IntRegs:$Rd32),
2657 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2658 "if (!$Pu4.new) $Rd32 = aslh($Rs32)",
2659 tc_1ae57e39, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2660 let Inst{7-5} = 0b000;
2661 let Inst{13-10} = 0b1011;
2662 let Inst{31-21} = 0b01110000000;
2663 let isPredicated = 1;
2664 let isPredicatedFalse = 1;
2665 let hasNewValue = 1;
2666 let opNewValue = 0;
2667 let isPredicatedNew = 1;
2668 let BaseOpcode = "A2_aslh";
2669 }
2670 def A4_paslht : HInst<
2671 (outs IntRegs:$Rd32),
2672 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2673 "if ($Pu4) $Rd32 = aslh($Rs32)",
2674 tc_5a2711e5, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2675 let Inst{7-5} = 0b000;
2676 let Inst{13-10} = 0b1000;
2677 let Inst{31-21} = 0b01110000000;
2678 let isPredicated = 1;
2679 let hasNewValue = 1;
2680 let opNewValue = 0;
2681 let BaseOpcode = "A2_aslh";
2682 }
2683 def A4_paslhtnew : HInst<
2684 (outs IntRegs:$Rd32),
2685 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2686 "if ($Pu4.new) $Rd32 = aslh($Rs32)",
2687 tc_1ae57e39, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2688 let Inst{7-5} = 0b000;
2689 let Inst{13-10} = 0b1001;
2690 let Inst{31-21} = 0b01110000000;
2691 let isPredicated = 1;
2692 let hasNewValue = 1;
2693 let opNewValue = 0;
2694 let isPredicatedNew = 1;
2695 let BaseOpcode = "A2_aslh";
2696 }
2697 def A4_pasrhf : HInst<
2698 (outs IntRegs:$Rd32),
2699 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2700 "if (!$Pu4) $Rd32 = asrh($Rs32)",
2701 tc_5a2711e5, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2702 let Inst{7-5} = 0b000;
2703 let Inst{13-10} = 0b1010;
2704 let Inst{31-21} = 0b01110000001;
2705 let isPredicated = 1;
2706 let isPredicatedFalse = 1;
2707 let hasNewValue = 1;
2708 let opNewValue = 0;
2709 let BaseOpcode = "A2_asrh";
2710 }
2711 def A4_pasrhfnew : HInst<
2712 (outs IntRegs:$Rd32),
2713 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2714 "if (!$Pu4.new) $Rd32 = asrh($Rs32)",
2715 tc_1ae57e39, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2716 let Inst{7-5} = 0b000;
2717 let Inst{13-10} = 0b1011;
2718 let Inst{31-21} = 0b01110000001;
2719 let isPredicated = 1;
2720 let isPredicatedFalse = 1;
2721 let hasNewValue = 1;
2722 let opNewValue = 0;
2723 let isPredicatedNew = 1;
2724 let BaseOpcode = "A2_asrh";
2725 }
2726 def A4_pasrht : HInst<
2727 (outs IntRegs:$Rd32),
2728 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2729 "if ($Pu4) $Rd32 = asrh($Rs32)",
2730 tc_5a2711e5, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2731 let Inst{7-5} = 0b000;
2732 let Inst{13-10} = 0b1000;
2733 let Inst{31-21} = 0b01110000001;
2734 let isPredicated = 1;
2735 let hasNewValue = 1;
2736 let opNewValue = 0;
2737 let BaseOpcode = "A2_asrh";
2738 }
2739 def A4_pasrhtnew : HInst<
2740 (outs IntRegs:$Rd32),
2741 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2742 "if ($Pu4.new) $Rd32 = asrh($Rs32)",
2743 tc_1ae57e39, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2744 let Inst{7-5} = 0b000;
2745 let Inst{13-10} = 0b1001;
2746 let Inst{31-21} = 0b01110000001;
2747 let isPredicated = 1;
2748 let hasNewValue = 1;
2749 let opNewValue = 0;
2750 let isPredicatedNew = 1;
2751 let BaseOpcode = "A2_asrh";
2752 }
2753 def A4_psxtbf : HInst<
2754 (outs IntRegs:$Rd32),
2755 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2756 "if (!$Pu4) $Rd32 = sxtb($Rs32)",
2757 tc_5a2711e5, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2758 let Inst{7-5} = 0b000;
2759 let Inst{13-10} = 0b1010;
2760 let Inst{31-21} = 0b01110000101;
2761 let isPredicated = 1;
2762 let isPredicatedFalse = 1;
2763 let hasNewValue = 1;
2764 let opNewValue = 0;
2765 let BaseOpcode = "A2_sxtb";
2766 }
2767 def A4_psxtbfnew : HInst<
2768 (outs IntRegs:$Rd32),
2769 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2770 "if (!$Pu4.new) $Rd32 = sxtb($Rs32)",
2771 tc_1ae57e39, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2772 let Inst{7-5} = 0b000;
2773 let Inst{13-10} = 0b1011;
2774 let Inst{31-21} = 0b01110000101;
2775 let isPredicated = 1;
2776 let isPredicatedFalse = 1;
2777 let hasNewValue = 1;
2778 let opNewValue = 0;
2779 let isPredicatedNew = 1;
2780 let BaseOpcode = "A2_sxtb";
2781 }
2782 def A4_psxtbt : HInst<
2783 (outs IntRegs:$Rd32),
2784 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2785 "if ($Pu4) $Rd32 = sxtb($Rs32)",
2786 tc_5a2711e5, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2787 let Inst{7-5} = 0b000;
2788 let Inst{13-10} = 0b1000;
2789 let Inst{31-21} = 0b01110000101;
2790 let isPredicated = 1;
2791 let hasNewValue = 1;
2792 let opNewValue = 0;
2793 let BaseOpcode = "A2_sxtb";
2794 }
2795 def A4_psxtbtnew : HInst<
2796 (outs IntRegs:$Rd32),
2797 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2798 "if ($Pu4.new) $Rd32 = sxtb($Rs32)",
2799 tc_1ae57e39, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2800 let Inst{7-5} = 0b000;
2801 let Inst{13-10} = 0b1001;
2802 let Inst{31-21} = 0b01110000101;
2803 let isPredicated = 1;
2804 let hasNewValue = 1;
2805 let opNewValue = 0;
2806 let isPredicatedNew = 1;
2807 let BaseOpcode = "A2_sxtb";
2808 }
2809 def A4_psxthf : HInst<
2810 (outs IntRegs:$Rd32),
2811 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2812 "if (!$Pu4) $Rd32 = sxth($Rs32)",
2813 tc_5a2711e5, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2814 let Inst{7-5} = 0b000;
2815 let Inst{13-10} = 0b1010;
2816 let Inst{31-21} = 0b01110000111;
2817 let isPredicated = 1;
2818 let isPredicatedFalse = 1;
2819 let hasNewValue = 1;
2820 let opNewValue = 0;
2821 let BaseOpcode = "A2_sxth";
2822 }
2823 def A4_psxthfnew : HInst<
2824 (outs IntRegs:$Rd32),
2825 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2826 "if (!$Pu4.new) $Rd32 = sxth($Rs32)",
2827 tc_1ae57e39, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2828 let Inst{7-5} = 0b000;
2829 let Inst{13-10} = 0b1011;
2830 let Inst{31-21} = 0b01110000111;
2831 let isPredicated = 1;
2832 let isPredicatedFalse = 1;
2833 let hasNewValue = 1;
2834 let opNewValue = 0;
2835 let isPredicatedNew = 1;
2836 let BaseOpcode = "A2_sxth";
2837 }
2838 def A4_psxtht : HInst<
2839 (outs IntRegs:$Rd32),
2840 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2841 "if ($Pu4) $Rd32 = sxth($Rs32)",
2842 tc_5a2711e5, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2843 let Inst{7-5} = 0b000;
2844 let Inst{13-10} = 0b1000;
2845 let Inst{31-21} = 0b01110000111;
2846 let isPredicated = 1;
2847 let hasNewValue = 1;
2848 let opNewValue = 0;
2849 let BaseOpcode = "A2_sxth";
2850 }
2851 def A4_psxthtnew : HInst<
2852 (outs IntRegs:$Rd32),
2853 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2854 "if ($Pu4.new) $Rd32 = sxth($Rs32)",
2855 tc_1ae57e39, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2856 let Inst{7-5} = 0b000;
2857 let Inst{13-10} = 0b1001;
2858 let Inst{31-21} = 0b01110000111;
2859 let isPredicated = 1;
2860 let hasNewValue = 1;
2861 let opNewValue = 0;
2862 let isPredicatedNew = 1;
2863 let BaseOpcode = "A2_sxth";
2864 }
2865 def A4_pzxtbf : HInst<
2866 (outs IntRegs:$Rd32),
2867 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2868 "if (!$Pu4) $Rd32 = zxtb($Rs32)",
2869 tc_5a2711e5, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2870 let Inst{7-5} = 0b000;
2871 let Inst{13-10} = 0b1010;
2872 let Inst{31-21} = 0b01110000100;
2873 let isPredicated = 1;
2874 let isPredicatedFalse = 1;
2875 let hasNewValue = 1;
2876 let opNewValue = 0;
2877 let BaseOpcode = "A2_zxtb";
2878 }
2879 def A4_pzxtbfnew : HInst<
2880 (outs IntRegs:$Rd32),
2881 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2882 "if (!$Pu4.new) $Rd32 = zxtb($Rs32)",
2883 tc_1ae57e39, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2884 let Inst{7-5} = 0b000;
2885 let Inst{13-10} = 0b1011;
2886 let Inst{31-21} = 0b01110000100;
2887 let isPredicated = 1;
2888 let isPredicatedFalse = 1;
2889 let hasNewValue = 1;
2890 let opNewValue = 0;
2891 let isPredicatedNew = 1;
2892 let BaseOpcode = "A2_zxtb";
2893 }
2894 def A4_pzxtbt : HInst<
2895 (outs IntRegs:$Rd32),
2896 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2897 "if ($Pu4) $Rd32 = zxtb($Rs32)",
2898 tc_5a2711e5, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2899 let Inst{7-5} = 0b000;
2900 let Inst{13-10} = 0b1000;
2901 let Inst{31-21} = 0b01110000100;
2902 let isPredicated = 1;
2903 let hasNewValue = 1;
2904 let opNewValue = 0;
2905 let BaseOpcode = "A2_zxtb";
2906 }
2907 def A4_pzxtbtnew : HInst<
2908 (outs IntRegs:$Rd32),
2909 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2910 "if ($Pu4.new) $Rd32 = zxtb($Rs32)",
2911 tc_1ae57e39, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2912 let Inst{7-5} = 0b000;
2913 let Inst{13-10} = 0b1001;
2914 let Inst{31-21} = 0b01110000100;
2915 let isPredicated = 1;
2916 let hasNewValue = 1;
2917 let opNewValue = 0;
2918 let isPredicatedNew = 1;
2919 let BaseOpcode = "A2_zxtb";
2920 }
2921 def A4_pzxthf : HInst<
2922 (outs IntRegs:$Rd32),
2923 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2924 "if (!$Pu4) $Rd32 = zxth($Rs32)",
2925 tc_5a2711e5, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2926 let Inst{7-5} = 0b000;
2927 let Inst{13-10} = 0b1010;
2928 let Inst{31-21} = 0b01110000110;
2929 let isPredicated = 1;
2930 let isPredicatedFalse = 1;
2931 let hasNewValue = 1;
2932 let opNewValue = 0;
2933 let BaseOpcode = "A2_zxth";
2934 }
2935 def A4_pzxthfnew : HInst<
2936 (outs IntRegs:$Rd32),
2937 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2938 "if (!$Pu4.new) $Rd32 = zxth($Rs32)",
2939 tc_1ae57e39, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2940 let Inst{7-5} = 0b000;
2941 let Inst{13-10} = 0b1011;
2942 let Inst{31-21} = 0b01110000110;
2943 let isPredicated = 1;
2944 let isPredicatedFalse = 1;
2945 let hasNewValue = 1;
2946 let opNewValue = 0;
2947 let isPredicatedNew = 1;
2948 let BaseOpcode = "A2_zxth";
2949 }
2950 def A4_pzxtht : HInst<
2951 (outs IntRegs:$Rd32),
2952 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2953 "if ($Pu4) $Rd32 = zxth($Rs32)",
2954 tc_5a2711e5, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2955 let Inst{7-5} = 0b000;
2956 let Inst{13-10} = 0b1000;
2957 let Inst{31-21} = 0b01110000110;
2958 let isPredicated = 1;
2959 let hasNewValue = 1;
2960 let opNewValue = 0;
2961 let BaseOpcode = "A2_zxth";
2962 }
2963 def A4_pzxthtnew : HInst<
2964 (outs IntRegs:$Rd32),
2965 (ins PredRegs:$Pu4, IntRegs:$Rs32),
2966 "if ($Pu4.new) $Rd32 = zxth($Rs32)",
2967 tc_1ae57e39, TypeALU32_2op>, Enc_fb6577, PredNewRel {
2968 let Inst{7-5} = 0b000;
2969 let Inst{13-10} = 0b1001;
2970 let Inst{31-21} = 0b01110000110;
2971 let isPredicated = 1;
2972 let hasNewValue = 1;
2973 let opNewValue = 0;
2974 let isPredicatedNew = 1;
2975 let BaseOpcode = "A2_zxth";
2976 }
2977 def A4_rcmpeq : HInst<
2978 (outs IntRegs:$Rd32),
2979 (ins IntRegs:$Rs32, IntRegs:$Rt32),
2980 "$Rd32 = cmp.eq($Rs32,$Rt32)",
2981 tc_5a2711e5, TypeALU32_3op>, Enc_5ab2be, ImmRegRel {
2982 let Inst{7-5} = 0b000;
2983 let Inst{13-13} = 0b0;
2984 let Inst{31-21} = 0b11110011010;
2985 let hasNewValue = 1;
2986 let opNewValue = 0;
2987 let CextOpcode = "A4_rcmpeq";
2988 let InputType = "reg";
2989 let isCommutable = 1;
2990 }
2991 def A4_rcmpeqi : HInst<
2992 (outs IntRegs:$Rd32),
2993 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
2994 "$Rd32 = cmp.eq($Rs32,#$Ii)",
2995 tc_5a2711e5, TypeALU32_2op>, Enc_b8c967, ImmRegRel {
2996 let Inst{13-13} = 0b1;
2997 let Inst{31-21} = 0b01110011010;
2998 let hasNewValue = 1;
2999 let opNewValue = 0;
3000 let CextOpcode = "A4_rcmpeqi";
3001 let InputType = "imm";
3002 let isExtendable = 1;
3003 let opExtendable = 2;
3004 let isExtentSigned = 1;
3005 let opExtentBits = 8;
3006 let opExtentAlign = 0;
3007 }
3008 def A4_rcmpneq : HInst<
3009 (outs IntRegs:$Rd32),
3010 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3011 "$Rd32 = !cmp.eq($Rs32,$Rt32)",
3012 tc_5a2711e5, TypeALU32_3op>, Enc_5ab2be, ImmRegRel {
3013 let Inst{7-5} = 0b000;
3014 let Inst{13-13} = 0b0;
3015 let Inst{31-21} = 0b11110011011;
3016 let hasNewValue = 1;
3017 let opNewValue = 0;
3018 let CextOpcode = "A4_rcmpneq";
3019 let InputType = "reg";
3020 let isCommutable = 1;
3021 }
3022 def A4_rcmpneqi : HInst<
3023 (outs IntRegs:$Rd32),
3024 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
3025 "$Rd32 = !cmp.eq($Rs32,#$Ii)",
3026 tc_5a2711e5, TypeALU32_2op>, Enc_b8c967, ImmRegRel {
3027 let Inst{13-13} = 0b1;
3028 let Inst{31-21} = 0b01110011011;
3029 let hasNewValue = 1;
3030 let opNewValue = 0;
3031 let CextOpcode = "A4_rcmpeqi";
3032 let InputType = "imm";
3033 let isExtendable = 1;
3034 let opExtendable = 2;
3035 let isExtentSigned = 1;
3036 let opExtentBits = 8;
3037 let opExtentAlign = 0;
3038 }
3039 def A4_round_ri : HInst<
3040 (outs IntRegs:$Rd32),
3041 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
3042 "$Rd32 = round($Rs32,#$Ii)",
3043 tc_002cb246, TypeS_2op>, Enc_a05677 {
3044 let Inst{7-5} = 0b100;
3045 let Inst{13-13} = 0b0;
3046 let Inst{31-21} = 0b10001100111;
3047 let hasNewValue = 1;
3048 let opNewValue = 0;
3049 let prefersSlot3 = 1;
3050 }
3051 def A4_round_ri_sat : HInst<
3052 (outs IntRegs:$Rd32),
3053 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
3054 "$Rd32 = round($Rs32,#$Ii):sat",
3055 tc_002cb246, TypeS_2op>, Enc_a05677 {
3056 let Inst{7-5} = 0b110;
3057 let Inst{13-13} = 0b0;
3058 let Inst{31-21} = 0b10001100111;
3059 let hasNewValue = 1;
3060 let opNewValue = 0;
3061 let prefersSlot3 = 1;
3062 let Defs = [USR_OVF];
3063 }
3064 def A4_round_rr : HInst<
3065 (outs IntRegs:$Rd32),
3066 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3067 "$Rd32 = round($Rs32,$Rt32)",
3068 tc_002cb246, TypeS_3op>, Enc_5ab2be {
3069 let Inst{7-5} = 0b100;
3070 let Inst{13-13} = 0b0;
3071 let Inst{31-21} = 0b11000110110;
3072 let hasNewValue = 1;
3073 let opNewValue = 0;
3074 let prefersSlot3 = 1;
3075 }
3076 def A4_round_rr_sat : HInst<
3077 (outs IntRegs:$Rd32),
3078 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3079 "$Rd32 = round($Rs32,$Rt32):sat",
3080 tc_002cb246, TypeS_3op>, Enc_5ab2be {
3081 let Inst{7-5} = 0b110;
3082 let Inst{13-13} = 0b0;
3083 let Inst{31-21} = 0b11000110110;
3084 let hasNewValue = 1;
3085 let opNewValue = 0;
3086 let prefersSlot3 = 1;
3087 let Defs = [USR_OVF];
3088 }
3089 def A4_subp_c : HInst<
3090 (outs DoubleRegs:$Rdd32, PredRegs:$Px4),
3091 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32, PredRegs:$Px4in),
3092 "$Rdd32 = sub($Rss32,$Rtt32,$Px4):carry",
3093 tc_9c3ecd83, TypeS_3op>, Enc_2b3f60 {
3094 let Inst{7-7} = 0b0;
3095 let Inst{13-13} = 0b0;
3096 let Inst{31-21} = 0b11000010111;
3097 let isPredicateLate = 1;
3098 let Constraints = "$Px4 = $Px4in";
3099 }
3100 def A4_tfrcpp : HInst<
3101 (outs DoubleRegs:$Rdd32),
3102 (ins CtrRegs64:$Css32),
3103 "$Rdd32 = $Css32",
3104 tc_b9272d6c, TypeCR>, Enc_667b39 {
3105 let Inst{13-5} = 0b000000000;
3106 let Inst{31-21} = 0b01101000000;
3107 }
3108 def A4_tfrpcp : HInst<
3109 (outs CtrRegs64:$Cdd32),
3110 (ins DoubleRegs:$Rss32),
3111 "$Cdd32 = $Rss32",
3112 tc_434c8e1e, TypeCR>, Enc_0ed752 {
3113 let Inst{13-5} = 0b000000000;
3114 let Inst{31-21} = 0b01100011001;
3115 }
3116 def A4_tlbmatch : HInst<
3117 (outs PredRegs:$Pd4),
3118 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
3119 "$Pd4 = tlbmatch($Rss32,$Rt32)",
3120 tc_4837eefb, TypeALU64>, Enc_03833b {
3121 let Inst{7-2} = 0b011000;
3122 let Inst{13-13} = 0b1;
3123 let Inst{31-21} = 0b11010010000;
3124 let isPredicateLate = 1;
3125 }
3126 def A4_vcmpbeq_any : HInst<
3127 (outs PredRegs:$Pd4),
3128 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3129 "$Pd4 = any8(vcmpb.eq($Rss32,$Rtt32))",
3130 tc_85d5d03f, TypeALU64>, Enc_fcf7a7 {
3131 let Inst{7-2} = 0b000000;
3132 let Inst{13-13} = 0b1;
3133 let Inst{31-21} = 0b11010010000;
3134 }
3135 def A4_vcmpbeqi : HInst<
3136 (outs PredRegs:$Pd4),
3137 (ins DoubleRegs:$Rss32, u8_0Imm:$Ii),
3138 "$Pd4 = vcmpb.eq($Rss32,#$Ii)",
3139 tc_643b4717, TypeALU64>, Enc_0d8adb {
3140 let Inst{4-2} = 0b000;
3141 let Inst{13-13} = 0b0;
3142 let Inst{31-21} = 0b11011100000;
3143 }
3144 def A4_vcmpbgt : HInst<
3145 (outs PredRegs:$Pd4),
3146 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3147 "$Pd4 = vcmpb.gt($Rss32,$Rtt32)",
3148 tc_85d5d03f, TypeALU64>, Enc_fcf7a7 {
3149 let Inst{7-2} = 0b010000;
3150 let Inst{13-13} = 0b1;
3151 let Inst{31-21} = 0b11010010000;
3152 }
3153 def A4_vcmpbgti : HInst<
3154 (outs PredRegs:$Pd4),
3155 (ins DoubleRegs:$Rss32, s8_0Imm:$Ii),
3156 "$Pd4 = vcmpb.gt($Rss32,#$Ii)",
3157 tc_643b4717, TypeALU64>, Enc_0d8adb {
3158 let Inst{4-2} = 0b000;
3159 let Inst{13-13} = 0b0;
3160 let Inst{31-21} = 0b11011100001;
3161 }
3162 def A4_vcmpbgtui : HInst<
3163 (outs PredRegs:$Pd4),
3164 (ins DoubleRegs:$Rss32, u7_0Imm:$Ii),
3165 "$Pd4 = vcmpb.gtu($Rss32,#$Ii)",
3166 tc_643b4717, TypeALU64>, Enc_3680c2 {
3167 let Inst{4-2} = 0b000;
3168 let Inst{13-12} = 0b00;
3169 let Inst{31-21} = 0b11011100010;
3170 }
3171 def A4_vcmpheqi : HInst<
3172 (outs PredRegs:$Pd4),
3173 (ins DoubleRegs:$Rss32, s8_0Imm:$Ii),
3174 "$Pd4 = vcmph.eq($Rss32,#$Ii)",
3175 tc_643b4717, TypeALU64>, Enc_0d8adb {
3176 let Inst{4-2} = 0b010;
3177 let Inst{13-13} = 0b0;
3178 let Inst{31-21} = 0b11011100000;
3179 }
3180 def A4_vcmphgti : HInst<
3181 (outs PredRegs:$Pd4),
3182 (ins DoubleRegs:$Rss32, s8_0Imm:$Ii),
3183 "$Pd4 = vcmph.gt($Rss32,#$Ii)",
3184 tc_643b4717, TypeALU64>, Enc_0d8adb {
3185 let Inst{4-2} = 0b010;
3186 let Inst{13-13} = 0b0;
3187 let Inst{31-21} = 0b11011100001;
3188 }
3189 def A4_vcmphgtui : HInst<
3190 (outs PredRegs:$Pd4),
3191 (ins DoubleRegs:$Rss32, u7_0Imm:$Ii),
3192 "$Pd4 = vcmph.gtu($Rss32,#$Ii)",
3193 tc_643b4717, TypeALU64>, Enc_3680c2 {
3194 let Inst{4-2} = 0b010;
3195 let Inst{13-12} = 0b00;
3196 let Inst{31-21} = 0b11011100010;
3197 }
3198 def A4_vcmpweqi : HInst<
3199 (outs PredRegs:$Pd4),
3200 (ins DoubleRegs:$Rss32, s8_0Imm:$Ii),
3201 "$Pd4 = vcmpw.eq($Rss32,#$Ii)",
3202 tc_643b4717, TypeALU64>, Enc_0d8adb {
3203 let Inst{4-2} = 0b100;
3204 let Inst{13-13} = 0b0;
3205 let Inst{31-21} = 0b11011100000;
3206 }
3207 def A4_vcmpwgti : HInst<
3208 (outs PredRegs:$Pd4),
3209 (ins DoubleRegs:$Rss32, s8_0Imm:$Ii),
3210 "$Pd4 = vcmpw.gt($Rss32,#$Ii)",
3211 tc_643b4717, TypeALU64>, Enc_0d8adb {
3212 let Inst{4-2} = 0b100;
3213 let Inst{13-13} = 0b0;
3214 let Inst{31-21} = 0b11011100001;
3215 }
3216 def A4_vcmpwgtui : HInst<
3217 (outs PredRegs:$Pd4),
3218 (ins DoubleRegs:$Rss32, u7_0Imm:$Ii),
3219 "$Pd4 = vcmpw.gtu($Rss32,#$Ii)",
3220 tc_643b4717, TypeALU64>, Enc_3680c2 {
3221 let Inst{4-2} = 0b100;
3222 let Inst{13-12} = 0b00;
3223 let Inst{31-21} = 0b11011100010;
3224 }
3225 def A4_vrmaxh : HInst<
3226 (outs DoubleRegs:$Rxx32),
3227 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Ru32),
3228 "$Rxx32 = vrmaxh($Rss32,$Ru32)",
3229 tc_5b54b33f, TypeS_3op>, Enc_412ff0 {
3230 let Inst{7-5} = 0b001;
3231 let Inst{13-13} = 0b0;
3232 let Inst{31-21} = 0b11001011001;
3233 let prefersSlot3 = 1;
3234 let Constraints = "$Rxx32 = $Rxx32in";
3235 }
3236 def A4_vrmaxuh : HInst<
3237 (outs DoubleRegs:$Rxx32),
3238 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Ru32),
3239 "$Rxx32 = vrmaxuh($Rss32,$Ru32)",
3240 tc_5b54b33f, TypeS_3op>, Enc_412ff0 {
3241 let Inst{7-5} = 0b001;
3242 let Inst{13-13} = 0b1;
3243 let Inst{31-21} = 0b11001011001;
3244 let prefersSlot3 = 1;
3245 let Constraints = "$Rxx32 = $Rxx32in";
3246 }
3247 def A4_vrmaxuw : HInst<
3248 (outs DoubleRegs:$Rxx32),
3249 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Ru32),
3250 "$Rxx32 = vrmaxuw($Rss32,$Ru32)",
3251 tc_5b54b33f, TypeS_3op>, Enc_412ff0 {
3252 let Inst{7-5} = 0b010;
3253 let Inst{13-13} = 0b1;
3254 let Inst{31-21} = 0b11001011001;
3255 let prefersSlot3 = 1;
3256 let Constraints = "$Rxx32 = $Rxx32in";
3257 }
3258 def A4_vrmaxw : HInst<
3259 (outs DoubleRegs:$Rxx32),
3260 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Ru32),
3261 "$Rxx32 = vrmaxw($Rss32,$Ru32)",
3262 tc_5b54b33f, TypeS_3op>, Enc_412ff0 {
3263 let Inst{7-5} = 0b010;
3264 let Inst{13-13} = 0b0;
3265 let Inst{31-21} = 0b11001011001;
3266 let prefersSlot3 = 1;
3267 let Constraints = "$Rxx32 = $Rxx32in";
3268 }
3269 def A4_vrminh : HInst<
3270 (outs DoubleRegs:$Rxx32),
3271 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Ru32),
3272 "$Rxx32 = vrminh($Rss32,$Ru32)",
3273 tc_5b54b33f, TypeS_3op>, Enc_412ff0 {
3274 let Inst{7-5} = 0b101;
3275 let Inst{13-13} = 0b0;
3276 let Inst{31-21} = 0b11001011001;
3277 let prefersSlot3 = 1;
3278 let Constraints = "$Rxx32 = $Rxx32in";
3279 }
3280 def A4_vrminuh : HInst<
3281 (outs DoubleRegs:$Rxx32),
3282 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Ru32),
3283 "$Rxx32 = vrminuh($Rss32,$Ru32)",
3284 tc_5b54b33f, TypeS_3op>, Enc_412ff0 {
3285 let Inst{7-5} = 0b101;
3286 let Inst{13-13} = 0b1;
3287 let Inst{31-21} = 0b11001011001;
3288 let prefersSlot3 = 1;
3289 let Constraints = "$Rxx32 = $Rxx32in";
3290 }
3291 def A4_vrminuw : HInst<
3292 (outs DoubleRegs:$Rxx32),
3293 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Ru32),
3294 "$Rxx32 = vrminuw($Rss32,$Ru32)",
3295 tc_5b54b33f, TypeS_3op>, Enc_412ff0 {
3296 let Inst{7-5} = 0b110;
3297 let Inst{13-13} = 0b1;
3298 let Inst{31-21} = 0b11001011001;
3299 let prefersSlot3 = 1;
3300 let Constraints = "$Rxx32 = $Rxx32in";
3301 }
3302 def A4_vrminw : HInst<
3303 (outs DoubleRegs:$Rxx32),
3304 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Ru32),
3305 "$Rxx32 = vrminw($Rss32,$Ru32)",
3306 tc_5b54b33f, TypeS_3op>, Enc_412ff0 {
3307 let Inst{7-5} = 0b110;
3308 let Inst{13-13} = 0b0;
3309 let Inst{31-21} = 0b11001011001;
3310 let prefersSlot3 = 1;
3311 let Constraints = "$Rxx32 = $Rxx32in";
3312 }
3313 def A5_ACS : HInst<
3314 (outs DoubleRegs:$Rxx32, PredRegs:$Pe4),
3315 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3316 "$Rxx32,$Pe4 = vacsh($Rss32,$Rtt32)",
3317 tc_d1aa9eaa, TypeM>, Enc_831a7d, Requires<[HasV55]> {
3318 let Inst{7-7} = 0b0;
3319 let Inst{13-13} = 0b0;
3320 let Inst{31-21} = 0b11101010101;
3321 let isPredicateLate = 1;
3322 let prefersSlot3 = 1;
3323 let Defs = [USR_OVF];
3324 let Constraints = "$Rxx32 = $Rxx32in";
3325 }
3326 def A5_vaddhubs : HInst<
3327 (outs IntRegs:$Rd32),
3328 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3329 "$Rd32 = vaddhub($Rss32,$Rtt32):sat",
3330 tc_002cb246, TypeS_3op>, Enc_d2216a {
3331 let Inst{7-5} = 0b001;
3332 let Inst{13-13} = 0b0;
3333 let Inst{31-21} = 0b11000001010;
3334 let hasNewValue = 1;
3335 let opNewValue = 0;
3336 let prefersSlot3 = 1;
3337 let Defs = [USR_OVF];
3338 }
3339 def A6_vcmpbeq_notany : HInst<
3340 (outs PredRegs:$Pd4),
3341 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3342 "$Pd4 = !any8(vcmpb.eq($Rss32,$Rtt32))",
3343 tc_1fc97744, TypeALU64>, Enc_fcf7a7, Requires<[HasV65]> {
3344 let Inst{7-2} = 0b001000;
3345 let Inst{13-13} = 0b1;
3346 let Inst{31-21} = 0b11010010000;
3347 }
3348 def A6_vminub_RdP : HInst<
3349 (outs DoubleRegs:$Rdd32, PredRegs:$Pe4),
3350 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
3351 "$Rdd32,$Pe4 = vminub($Rtt32,$Rss32)",
3352 tc_f9058dd7, TypeM>, Enc_d2c7f1, Requires<[HasV62]> {
3353 let Inst{7-7} = 0b0;
3354 let Inst{13-13} = 0b0;
3355 let Inst{31-21} = 0b11101010111;
3356 let isPredicateLate = 1;
3357 let prefersSlot3 = 1;
3358 }
3359 def C2_all8 : HInst<
3360 (outs PredRegs:$Pd4),
3361 (ins PredRegs:$Ps4),
3362 "$Pd4 = all8($Ps4)",
3363 tc_de554571, TypeCR>, Enc_65d691 {
3364 let Inst{13-2} = 0b000000000000;
3365 let Inst{31-18} = 0b01101011101000;
3366 }
3367 def C2_and : HInst<
3368 (outs PredRegs:$Pd4),
3369 (ins PredRegs:$Pt4, PredRegs:$Ps4),
3370 "$Pd4 = and($Pt4,$Ps4)",
3371 tc_640086b5, TypeCR>, Enc_454a26 {
3372 let Inst{7-2} = 0b000000;
3373 let Inst{13-10} = 0b0000;
3374 let Inst{31-18} = 0b01101011000000;
3375 }
3376 def C2_andn : HInst<
3377 (outs PredRegs:$Pd4),
3378 (ins PredRegs:$Pt4, PredRegs:$Ps4),
3379 "$Pd4 = and($Pt4,!$Ps4)",
3380 tc_640086b5, TypeCR>, Enc_454a26 {
3381 let Inst{7-2} = 0b000000;
3382 let Inst{13-10} = 0b0000;
3383 let Inst{31-18} = 0b01101011011000;
3384 }
3385 def C2_any8 : HInst<
3386 (outs PredRegs:$Pd4),
3387 (ins PredRegs:$Ps4),
3388 "$Pd4 = any8($Ps4)",
3389 tc_de554571, TypeCR>, Enc_65d691 {
3390 let Inst{13-2} = 0b000000000000;
3391 let Inst{31-18} = 0b01101011100000;
3392 }
3393 def C2_bitsclr : HInst<
3394 (outs PredRegs:$Pd4),
3395 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3396 "$Pd4 = bitsclr($Rs32,$Rt32)",
3397 tc_85d5d03f, TypeS_3op>, Enc_c2b48e {
3398 let Inst{7-2} = 0b000000;
3399 let Inst{13-13} = 0b0;
3400 let Inst{31-21} = 0b11000111100;
3401 }
3402 def C2_bitsclri : HInst<
3403 (outs PredRegs:$Pd4),
3404 (ins IntRegs:$Rs32, u6_0Imm:$Ii),
3405 "$Pd4 = bitsclr($Rs32,#$Ii)",
3406 tc_643b4717, TypeS_2op>, Enc_5d6c34 {
3407 let Inst{7-2} = 0b000000;
3408 let Inst{31-21} = 0b10000101100;
3409 }
3410 def C2_bitsset : HInst<
3411 (outs PredRegs:$Pd4),
3412 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3413 "$Pd4 = bitsset($Rs32,$Rt32)",
3414 tc_85d5d03f, TypeS_3op>, Enc_c2b48e {
3415 let Inst{7-2} = 0b000000;
3416 let Inst{13-13} = 0b0;
3417 let Inst{31-21} = 0b11000111010;
3418 }
3419 def C2_ccombinewf : HInst<
3420 (outs DoubleRegs:$Rdd32),
3421 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
3422 "if (!$Pu4) $Rdd32 = combine($Rs32,$Rt32)",
3423 tc_4c5ba658, TypeALU32_3op>, Enc_cb4b4e, PredNewRel {
3424 let Inst{7-7} = 0b1;
3425 let Inst{13-13} = 0b0;
3426 let Inst{31-21} = 0b11111101000;
3427 let isPredicated = 1;
3428 let isPredicatedFalse = 1;
3429 let BaseOpcode = "A2_combinew";
3430 }
3431 def C2_ccombinewnewf : HInst<
3432 (outs DoubleRegs:$Rdd32),
3433 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
3434 "if (!$Pu4.new) $Rdd32 = combine($Rs32,$Rt32)",
3435 tc_05c070ec, TypeALU32_3op>, Enc_cb4b4e, PredNewRel {
3436 let Inst{7-7} = 0b1;
3437 let Inst{13-13} = 0b1;
3438 let Inst{31-21} = 0b11111101000;
3439 let isPredicated = 1;
3440 let isPredicatedFalse = 1;
3441 let isPredicatedNew = 1;
3442 let BaseOpcode = "A2_combinew";
3443 }
3444 def C2_ccombinewnewt : HInst<
3445 (outs DoubleRegs:$Rdd32),
3446 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
3447 "if ($Pu4.new) $Rdd32 = combine($Rs32,$Rt32)",
3448 tc_05c070ec, TypeALU32_3op>, Enc_cb4b4e, PredNewRel {
3449 let Inst{7-7} = 0b0;
3450 let Inst{13-13} = 0b1;
3451 let Inst{31-21} = 0b11111101000;
3452 let isPredicated = 1;
3453 let isPredicatedNew = 1;
3454 let BaseOpcode = "A2_combinew";
3455 }
3456 def C2_ccombinewt : HInst<
3457 (outs DoubleRegs:$Rdd32),
3458 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
3459 "if ($Pu4) $Rdd32 = combine($Rs32,$Rt32)",
3460 tc_4c5ba658, TypeALU32_3op>, Enc_cb4b4e, PredNewRel {
3461 let Inst{7-7} = 0b0;
3462 let Inst{13-13} = 0b0;
3463 let Inst{31-21} = 0b11111101000;
3464 let isPredicated = 1;
3465 let BaseOpcode = "A2_combinew";
3466 }
3467 def C2_cmoveif : HInst<
3468 (outs IntRegs:$Rd32),
3469 (ins PredRegs:$Pu4, s32_0Imm:$Ii),
3470 "if (!$Pu4) $Rd32 = #$Ii",
3471 tc_5a2711e5, TypeALU32_2op>, Enc_cda00a, PredNewRel, ImmRegRel {
3472 let Inst{13-13} = 0b0;
3473 let Inst{20-20} = 0b0;
3474 let Inst{31-23} = 0b011111101;
3475 let isPredicated = 1;
3476 let isPredicatedFalse = 1;
3477 let hasNewValue = 1;
3478 let opNewValue = 0;
3479 let CextOpcode = "A2_tfr";
3480 let InputType = "imm";
3481 let BaseOpcode = "A2_tfrsi";
3482 let isMoveImm = 1;
3483 let isExtendable = 1;
3484 let opExtendable = 2;
3485 let isExtentSigned = 1;
3486 let opExtentBits = 12;
3487 let opExtentAlign = 0;
3488 }
3489 def C2_cmoveit : HInst<
3490 (outs IntRegs:$Rd32),
3491 (ins PredRegs:$Pu4, s32_0Imm:$Ii),
3492 "if ($Pu4) $Rd32 = #$Ii",
3493 tc_5a2711e5, TypeALU32_2op>, Enc_cda00a, PredNewRel, ImmRegRel {
3494 let Inst{13-13} = 0b0;
3495 let Inst{20-20} = 0b0;
3496 let Inst{31-23} = 0b011111100;
3497 let isPredicated = 1;
3498 let hasNewValue = 1;
3499 let opNewValue = 0;
3500 let CextOpcode = "A2_tfr";
3501 let InputType = "imm";
3502 let BaseOpcode = "A2_tfrsi";
3503 let isMoveImm = 1;
3504 let isExtendable = 1;
3505 let opExtendable = 2;
3506 let isExtentSigned = 1;
3507 let opExtentBits = 12;
3508 let opExtentAlign = 0;
3509 }
3510 def C2_cmovenewif : HInst<
3511 (outs IntRegs:$Rd32),
3512 (ins PredRegs:$Pu4, s32_0Imm:$Ii),
3513 "if (!$Pu4.new) $Rd32 = #$Ii",
3514 tc_1ae57e39, TypeALU32_2op>, Enc_cda00a, PredNewRel, ImmRegRel {
3515 let Inst{13-13} = 0b1;
3516 let Inst{20-20} = 0b0;
3517 let Inst{31-23} = 0b011111101;
3518 let isPredicated = 1;
3519 let isPredicatedFalse = 1;
3520 let hasNewValue = 1;
3521 let opNewValue = 0;
3522 let isPredicatedNew = 1;
3523 let CextOpcode = "A2_tfr";
3524 let InputType = "imm";
3525 let BaseOpcode = "A2_tfrsi";
3526 let isMoveImm = 1;
3527 let isExtendable = 1;
3528 let opExtendable = 2;
3529 let isExtentSigned = 1;
3530 let opExtentBits = 12;
3531 let opExtentAlign = 0;
3532 }
3533 def C2_cmovenewit : HInst<
3534 (outs IntRegs:$Rd32),
3535 (ins PredRegs:$Pu4, s32_0Imm:$Ii),
3536 "if ($Pu4.new) $Rd32 = #$Ii",
3537 tc_1ae57e39, TypeALU32_2op>, Enc_cda00a, PredNewRel, ImmRegRel {
3538 let Inst{13-13} = 0b1;
3539 let Inst{20-20} = 0b0;
3540 let Inst{31-23} = 0b011111100;
3541 let isPredicated = 1;
3542 let hasNewValue = 1;
3543 let opNewValue = 0;
3544 let isPredicatedNew = 1;
3545 let CextOpcode = "A2_tfr";
3546 let InputType = "imm";
3547 let BaseOpcode = "A2_tfrsi";
3548 let isMoveImm = 1;
3549 let isExtendable = 1;
3550 let opExtendable = 2;
3551 let isExtentSigned = 1;
3552 let opExtentBits = 12;
3553 let opExtentAlign = 0;
3554 }
3555 def C2_cmpeq : HInst<
3556 (outs PredRegs:$Pd4),
3557 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3558 "$Pd4 = cmp.eq($Rs32,$Rt32)",
3559 tc_de4df740, TypeALU32_3op>, Enc_c2b48e, ImmRegRel {
3560 let Inst{7-2} = 0b000000;
3561 let Inst{13-13} = 0b0;
3562 let Inst{31-21} = 0b11110010000;
3563 let CextOpcode = "C2_cmpeq";
3564 let InputType = "reg";
3565 let isCommutable = 1;
3566 let isCompare = 1;
3567 }
3568 def C2_cmpeqi : HInst<
3569 (outs PredRegs:$Pd4),
3570 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
3571 "$Pd4 = cmp.eq($Rs32,#$Ii)",
3572 tc_56f114f4, TypeALU32_2op>, Enc_bd0b33, ImmRegRel {
3573 let Inst{4-2} = 0b000;
3574 let Inst{31-22} = 0b0111010100;
3575 let CextOpcode = "C2_cmpeq";
3576 let InputType = "imm";
3577 let isCompare = 1;
3578 let isExtendable = 1;
3579 let opExtendable = 2;
3580 let isExtentSigned = 1;
3581 let opExtentBits = 10;
3582 let opExtentAlign = 0;
3583 }
3584 def C2_cmpeqp : HInst<
3585 (outs PredRegs:$Pd4),
3586 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3587 "$Pd4 = cmp.eq($Rss32,$Rtt32)",
3588 tc_85d5d03f, TypeALU64>, Enc_fcf7a7 {
3589 let Inst{7-2} = 0b000000;
3590 let Inst{13-13} = 0b0;
3591 let Inst{31-21} = 0b11010010100;
3592 let isCommutable = 1;
3593 let isCompare = 1;
3594 }
3595 def C2_cmpgei : HInst<
3596 (outs PredRegs:$Pd4),
3597 (ins IntRegs:$Rs32, s8_0Imm:$Ii),
3598 "$Pd4 = cmp.ge($Rs32,#$Ii)",
3599 tc_56f114f4, TypeALU32_2op> {
3600 let isCompare = 1;
3601 let isPseudo = 1;
3602 }
3603 def C2_cmpgeui : HInst<
3604 (outs PredRegs:$Pd4),
3605 (ins IntRegs:$Rs32, u8_0Imm:$Ii),
3606 "$Pd4 = cmp.geu($Rs32,#$Ii)",
3607 tc_56f114f4, TypeALU32_2op> {
3608 let isCompare = 1;
3609 let isPseudo = 1;
3610 }
3611 def C2_cmpgt : HInst<
3612 (outs PredRegs:$Pd4),
3613 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3614 "$Pd4 = cmp.gt($Rs32,$Rt32)",
3615 tc_de4df740, TypeALU32_3op>, Enc_c2b48e, ImmRegRel {
3616 let Inst{7-2} = 0b000000;
3617 let Inst{13-13} = 0b0;
3618 let Inst{31-21} = 0b11110010010;
3619 let CextOpcode = "C2_cmpgt";
3620 let InputType = "reg";
3621 let isCompare = 1;
3622 }
3623 def C2_cmpgti : HInst<
3624 (outs PredRegs:$Pd4),
3625 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
3626 "$Pd4 = cmp.gt($Rs32,#$Ii)",
3627 tc_56f114f4, TypeALU32_2op>, Enc_bd0b33, ImmRegRel {
3628 let Inst{4-2} = 0b000;
3629 let Inst{31-22} = 0b0111010101;
3630 let CextOpcode = "C2_cmpgt";
3631 let InputType = "imm";
3632 let isCompare = 1;
3633 let isExtendable = 1;
3634 let opExtendable = 2;
3635 let isExtentSigned = 1;
3636 let opExtentBits = 10;
3637 let opExtentAlign = 0;
3638 }
3639 def C2_cmpgtp : HInst<
3640 (outs PredRegs:$Pd4),
3641 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3642 "$Pd4 = cmp.gt($Rss32,$Rtt32)",
3643 tc_85d5d03f, TypeALU64>, Enc_fcf7a7 {
3644 let Inst{7-2} = 0b010000;
3645 let Inst{13-13} = 0b0;
3646 let Inst{31-21} = 0b11010010100;
3647 let isCompare = 1;
3648 }
3649 def C2_cmpgtu : HInst<
3650 (outs PredRegs:$Pd4),
3651 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3652 "$Pd4 = cmp.gtu($Rs32,$Rt32)",
3653 tc_de4df740, TypeALU32_3op>, Enc_c2b48e, ImmRegRel {
3654 let Inst{7-2} = 0b000000;
3655 let Inst{13-13} = 0b0;
3656 let Inst{31-21} = 0b11110010011;
3657 let CextOpcode = "C2_cmpgtu";
3658 let InputType = "reg";
3659 let isCompare = 1;
3660 }
3661 def C2_cmpgtui : HInst<
3662 (outs PredRegs:$Pd4),
3663 (ins IntRegs:$Rs32, u32_0Imm:$Ii),
3664 "$Pd4 = cmp.gtu($Rs32,#$Ii)",
3665 tc_56f114f4, TypeALU32_2op>, Enc_c0cdde, ImmRegRel {
3666 let Inst{4-2} = 0b000;
3667 let Inst{31-21} = 0b01110101100;
3668 let CextOpcode = "C2_cmpgtu";
3669 let InputType = "imm";
3670 let isCompare = 1;
3671 let isExtendable = 1;
3672 let opExtendable = 2;
3673 let isExtentSigned = 0;
3674 let opExtentBits = 9;
3675 let opExtentAlign = 0;
3676 }
3677 def C2_cmpgtup : HInst<
3678 (outs PredRegs:$Pd4),
3679 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3680 "$Pd4 = cmp.gtu($Rss32,$Rtt32)",
3681 tc_85d5d03f, TypeALU64>, Enc_fcf7a7 {
3682 let Inst{7-2} = 0b100000;
3683 let Inst{13-13} = 0b0;
3684 let Inst{31-21} = 0b11010010100;
3685 let isCompare = 1;
3686 }
3687 def C2_cmplt : HInst<
3688 (outs PredRegs:$Pd4),
3689 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3690 "$Pd4 = cmp.lt($Rs32,$Rt32)",
3691 tc_56f114f4, TypeALU32_3op> {
3692 let isCompare = 1;
3693 let isPseudo = 1;
3694 let isCodeGenOnly = 1;
3695 }
3696 def C2_cmpltu : HInst<
3697 (outs PredRegs:$Pd4),
3698 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3699 "$Pd4 = cmp.ltu($Rs32,$Rt32)",
3700 tc_56f114f4, TypeALU32_3op> {
3701 let isCompare = 1;
3702 let isPseudo = 1;
3703 let isCodeGenOnly = 1;
3704 }
3705 def C2_mask : HInst<
3706 (outs DoubleRegs:$Rdd32),
3707 (ins PredRegs:$Pt4),
3708 "$Rdd32 = mask($Pt4)",
3709 tc_0ae0825c, TypeS_2op>, Enc_78e566 {
3710 let Inst{7-5} = 0b000;
3711 let Inst{13-10} = 0b0000;
3712 let Inst{31-16} = 0b1000011000000000;
3713 }
3714 def C2_mux : HInst<
3715 (outs IntRegs:$Rd32),
3716 (ins PredRegs:$Pu4, IntRegs:$Rs32, IntRegs:$Rt32),
3717 "$Rd32 = mux($Pu4,$Rs32,$Rt32)",
3718 tc_4c5ba658, TypeALU32_3op>, Enc_ea4c54 {
3719 let Inst{7-7} = 0b0;
3720 let Inst{13-13} = 0b0;
3721 let Inst{31-21} = 0b11110100000;
3722 let hasNewValue = 1;
3723 let opNewValue = 0;
3724 let InputType = "reg";
3725 }
3726 def C2_muxii : HInst<
3727 (outs IntRegs:$Rd32),
3728 (ins PredRegs:$Pu4, s32_0Imm:$Ii, s8_0Imm:$II),
3729 "$Rd32 = mux($Pu4,#$Ii,#$II)",
3730 tc_4c5ba658, TypeALU32_2op>, Enc_830e5d {
3731 let Inst{31-25} = 0b0111101;
3732 let hasNewValue = 1;
3733 let opNewValue = 0;
3734 let isExtendable = 1;
3735 let opExtendable = 2;
3736 let isExtentSigned = 1;
3737 let opExtentBits = 8;
3738 let opExtentAlign = 0;
3739 }
3740 def C2_muxir : HInst<
3741 (outs IntRegs:$Rd32),
3742 (ins PredRegs:$Pu4, IntRegs:$Rs32, s32_0Imm:$Ii),
3743 "$Rd32 = mux($Pu4,$Rs32,#$Ii)",
3744 tc_4c5ba658, TypeALU32_2op>, Enc_e38e1f {
3745 let Inst{13-13} = 0b0;
3746 let Inst{31-23} = 0b011100110;
3747 let hasNewValue = 1;
3748 let opNewValue = 0;
3749 let InputType = "imm";
3750 let isExtendable = 1;
3751 let opExtendable = 3;
3752 let isExtentSigned = 1;
3753 let opExtentBits = 8;
3754 let opExtentAlign = 0;
3755 }
3756 def C2_muxri : HInst<
3757 (outs IntRegs:$Rd32),
3758 (ins PredRegs:$Pu4, s32_0Imm:$Ii, IntRegs:$Rs32),
3759 "$Rd32 = mux($Pu4,#$Ii,$Rs32)",
3760 tc_4c5ba658, TypeALU32_2op>, Enc_e38e1f {
3761 let Inst{13-13} = 0b0;
3762 let Inst{31-23} = 0b011100111;
3763 let hasNewValue = 1;
3764 let opNewValue = 0;
3765 let InputType = "imm";
3766 let isExtendable = 1;
3767 let opExtendable = 2;
3768 let isExtentSigned = 1;
3769 let opExtentBits = 8;
3770 let opExtentAlign = 0;
3771 }
3772 def C2_not : HInst<
3773 (outs PredRegs:$Pd4),
3774 (ins PredRegs:$Ps4),
3775 "$Pd4 = not($Ps4)",
3776 tc_de554571, TypeCR>, Enc_65d691 {
3777 let Inst{13-2} = 0b000000000000;
3778 let Inst{31-18} = 0b01101011110000;
3779 }
3780 def C2_or : HInst<
3781 (outs PredRegs:$Pd4),
3782 (ins PredRegs:$Pt4, PredRegs:$Ps4),
3783 "$Pd4 = or($Pt4,$Ps4)",
3784 tc_640086b5, TypeCR>, Enc_454a26 {
3785 let Inst{7-2} = 0b000000;
3786 let Inst{13-10} = 0b0000;
3787 let Inst{31-18} = 0b01101011001000;
3788 }
3789 def C2_orn : HInst<
3790 (outs PredRegs:$Pd4),
3791 (ins PredRegs:$Pt4, PredRegs:$Ps4),
3792 "$Pd4 = or($Pt4,!$Ps4)",
3793 tc_640086b5, TypeCR>, Enc_454a26 {
3794 let Inst{7-2} = 0b000000;
3795 let Inst{13-10} = 0b0000;
3796 let Inst{31-18} = 0b01101011111000;
3797 }
3798 def C2_pxfer_map : HInst<
3799 (outs PredRegs:$Pd4),
3800 (ins PredRegs:$Ps4),
3801 "$Pd4 = $Ps4",
3802 tc_640086b5, TypeMAPPING> {
3803 let isPseudo = 1;
3804 let isCodeGenOnly = 1;
3805 }
3806 def C2_tfrpr : HInst<
3807 (outs IntRegs:$Rd32),
3808 (ins PredRegs:$Ps4),
3809 "$Rd32 = $Ps4",
3810 tc_0ae0825c, TypeS_2op>, Enc_f5e933 {
3811 let Inst{13-5} = 0b000000000;
3812 let Inst{31-18} = 0b10001001010000;
3813 let hasNewValue = 1;
3814 let opNewValue = 0;
3815 }
3816 def C2_tfrrp : HInst<
3817 (outs PredRegs:$Pd4),
3818 (ins IntRegs:$Rs32),
3819 "$Pd4 = $Rs32",
3820 tc_cfd8378a, TypeS_2op>, Enc_48b75f {
3821 let Inst{13-2} = 0b000000000000;
3822 let Inst{31-21} = 0b10000101010;
3823 }
3824 def C2_vitpack : HInst<
3825 (outs IntRegs:$Rd32),
3826 (ins PredRegs:$Ps4, PredRegs:$Pt4),
3827 "$Rd32 = vitpack($Ps4,$Pt4)",
3828 tc_4414d8b1, TypeS_2op>, Enc_527412 {
3829 let Inst{7-5} = 0b000;
3830 let Inst{13-10} = 0b0000;
3831 let Inst{31-18} = 0b10001001000000;
3832 let hasNewValue = 1;
3833 let opNewValue = 0;
3834 let prefersSlot3 = 1;
3835 }
3836 def C2_vmux : HInst<
3837 (outs DoubleRegs:$Rdd32),
3838 (ins PredRegs:$Pu4, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
3839 "$Rdd32 = vmux($Pu4,$Rss32,$Rtt32)",
3840 tc_b4b5c03a, TypeALU64>, Enc_329361 {
3841 let Inst{7-7} = 0b0;
3842 let Inst{13-13} = 0b0;
3843 let Inst{31-21} = 0b11010001000;
3844 }
3845 def C2_xor : HInst<
3846 (outs PredRegs:$Pd4),
3847 (ins PredRegs:$Ps4, PredRegs:$Pt4),
3848 "$Pd4 = xor($Ps4,$Pt4)",
3849 tc_640086b5, TypeCR>, Enc_284ebb {
3850 let Inst{7-2} = 0b000000;
3851 let Inst{13-10} = 0b0000;
3852 let Inst{31-18} = 0b01101011010000;
3853 }
3854 def C4_addipc : HInst<
3855 (outs IntRegs:$Rd32),
3856 (ins u32_0Imm:$Ii),
3857 "$Rd32 = add(pc,#$Ii)",
3858 tc_a813cf9a, TypeCR>, Enc_607661 {
3859 let Inst{6-5} = 0b00;
3860 let Inst{13-13} = 0b0;
3861 let Inst{31-16} = 0b0110101001001001;
3862 let hasNewValue = 1;
3863 let opNewValue = 0;
3864 let isExtendable = 1;
3865 let opExtendable = 1;
3866 let isExtentSigned = 0;
3867 let opExtentBits = 6;
3868 let opExtentAlign = 0;
3869 }
3870 def C4_and_and : HInst<
3871 (outs PredRegs:$Pd4),
3872 (ins PredRegs:$Ps4, PredRegs:$Pt4, PredRegs:$Pu4),
3873 "$Pd4 = and($Ps4,and($Pt4,$Pu4))",
3874 tc_b31c2e97, TypeCR>, Enc_9ac432 {
3875 let Inst{5-2} = 0b0000;
3876 let Inst{13-10} = 0b0000;
3877 let Inst{31-18} = 0b01101011000100;
3878 }
3879 def C4_and_andn : HInst<
3880 (outs PredRegs:$Pd4),
3881 (ins PredRegs:$Ps4, PredRegs:$Pt4, PredRegs:$Pu4),
3882 "$Pd4 = and($Ps4,and($Pt4,!$Pu4))",
3883 tc_b31c2e97, TypeCR>, Enc_9ac432 {
3884 let Inst{5-2} = 0b0000;
3885 let Inst{13-10} = 0b0000;
3886 let Inst{31-18} = 0b01101011100100;
3887 }
3888 def C4_and_or : HInst<
3889 (outs PredRegs:$Pd4),
3890 (ins PredRegs:$Ps4, PredRegs:$Pt4, PredRegs:$Pu4),
3891 "$Pd4 = and($Ps4,or($Pt4,$Pu4))",
3892 tc_b31c2e97, TypeCR>, Enc_9ac432 {
3893 let Inst{5-2} = 0b0000;
3894 let Inst{13-10} = 0b0000;
3895 let Inst{31-18} = 0b01101011001100;
3896 }
3897 def C4_and_orn : HInst<
3898 (outs PredRegs:$Pd4),
3899 (ins PredRegs:$Ps4, PredRegs:$Pt4, PredRegs:$Pu4),
3900 "$Pd4 = and($Ps4,or($Pt4,!$Pu4))",
3901 tc_b31c2e97, TypeCR>, Enc_9ac432 {
3902 let Inst{5-2} = 0b0000;
3903 let Inst{13-10} = 0b0000;
3904 let Inst{31-18} = 0b01101011101100;
3905 }
3906 def C4_cmplte : HInst<
3907 (outs PredRegs:$Pd4),
3908 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3909 "$Pd4 = !cmp.gt($Rs32,$Rt32)",
3910 tc_de4df740, TypeALU32_3op>, Enc_c2b48e, ImmRegRel {
3911 let Inst{7-2} = 0b000100;
3912 let Inst{13-13} = 0b0;
3913 let Inst{31-21} = 0b11110010010;
3914 let CextOpcode = "C4_cmplte";
3915 let InputType = "reg";
3916 let isCompare = 1;
3917 }
3918 def C4_cmpltei : HInst<
3919 (outs PredRegs:$Pd4),
3920 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
3921 "$Pd4 = !cmp.gt($Rs32,#$Ii)",
3922 tc_56f114f4, TypeALU32_2op>, Enc_bd0b33, ImmRegRel {
3923 let Inst{4-2} = 0b100;
3924 let Inst{31-22} = 0b0111010101;
3925 let CextOpcode = "C4_cmplte";
3926 let InputType = "imm";
3927 let isCompare = 1;
3928 let isExtendable = 1;
3929 let opExtendable = 2;
3930 let isExtentSigned = 1;
3931 let opExtentBits = 10;
3932 let opExtentAlign = 0;
3933 }
3934 def C4_cmplteu : HInst<
3935 (outs PredRegs:$Pd4),
3936 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3937 "$Pd4 = !cmp.gtu($Rs32,$Rt32)",
3938 tc_de4df740, TypeALU32_3op>, Enc_c2b48e, ImmRegRel {
3939 let Inst{7-2} = 0b000100;
3940 let Inst{13-13} = 0b0;
3941 let Inst{31-21} = 0b11110010011;
3942 let CextOpcode = "C4_cmplteu";
3943 let InputType = "reg";
3944 let isCompare = 1;
3945 }
3946 def C4_cmplteui : HInst<
3947 (outs PredRegs:$Pd4),
3948 (ins IntRegs:$Rs32, u32_0Imm:$Ii),
3949 "$Pd4 = !cmp.gtu($Rs32,#$Ii)",
3950 tc_56f114f4, TypeALU32_2op>, Enc_c0cdde, ImmRegRel {
3951 let Inst{4-2} = 0b100;
3952 let Inst{31-21} = 0b01110101100;
3953 let CextOpcode = "C4_cmplteu";
3954 let InputType = "imm";
3955 let isCompare = 1;
3956 let isExtendable = 1;
3957 let opExtendable = 2;
3958 let isExtentSigned = 0;
3959 let opExtentBits = 9;
3960 let opExtentAlign = 0;
3961 }
3962 def C4_cmpneq : HInst<
3963 (outs PredRegs:$Pd4),
3964 (ins IntRegs:$Rs32, IntRegs:$Rt32),
3965 "$Pd4 = !cmp.eq($Rs32,$Rt32)",
3966 tc_de4df740, TypeALU32_3op>, Enc_c2b48e, ImmRegRel {
3967 let Inst{7-2} = 0b000100;
3968 let Inst{13-13} = 0b0;
3969 let Inst{31-21} = 0b11110010000;
3970 let CextOpcode = "C4_cmpneq";
3971 let InputType = "reg";
3972 let isCommutable = 1;
3973 let isCompare = 1;
3974 }
3975 def C4_cmpneqi : HInst<
3976 (outs PredRegs:$Pd4),
3977 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
3978 "$Pd4 = !cmp.eq($Rs32,#$Ii)",
3979 tc_56f114f4, TypeALU32_2op>, Enc_bd0b33, ImmRegRel {
3980 let Inst{4-2} = 0b100;
3981 let Inst{31-22} = 0b0111010100;
3982 let CextOpcode = "C4_cmpneq";
3983 let InputType = "imm";
3984 let isCompare = 1;
3985 let isExtendable = 1;
3986 let opExtendable = 2;
3987 let isExtentSigned = 1;
3988 let opExtentBits = 10;
3989 let opExtentAlign = 0;
3990 }
3991 def C4_fastcorner9 : HInst<
3992 (outs PredRegs:$Pd4),
3993 (ins PredRegs:$Ps4, PredRegs:$Pt4),
3994 "$Pd4 = fastcorner9($Ps4,$Pt4)",
3995 tc_640086b5, TypeCR>, Enc_284ebb {
3996 let Inst{7-2} = 0b100100;
3997 let Inst{13-10} = 0b1000;
3998 let Inst{31-18} = 0b01101011000000;
3999 }
4000 def C4_fastcorner9_not : HInst<
4001 (outs PredRegs:$Pd4),
4002 (ins PredRegs:$Ps4, PredRegs:$Pt4),
4003 "$Pd4 = !fastcorner9($Ps4,$Pt4)",
4004 tc_640086b5, TypeCR>, Enc_284ebb {
4005 let Inst{7-2} = 0b100100;
4006 let Inst{13-10} = 0b1000;
4007 let Inst{31-18} = 0b01101011000100;
4008 }
4009 def C4_nbitsclr : HInst<
4010 (outs PredRegs:$Pd4),
4011 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4012 "$Pd4 = !bitsclr($Rs32,$Rt32)",
4013 tc_85d5d03f, TypeS_3op>, Enc_c2b48e {
4014 let Inst{7-2} = 0b000000;
4015 let Inst{13-13} = 0b0;
4016 let Inst{31-21} = 0b11000111101;
4017 }
4018 def C4_nbitsclri : HInst<
4019 (outs PredRegs:$Pd4),
4020 (ins IntRegs:$Rs32, u6_0Imm:$Ii),
4021 "$Pd4 = !bitsclr($Rs32,#$Ii)",
4022 tc_643b4717, TypeS_2op>, Enc_5d6c34 {
4023 let Inst{7-2} = 0b000000;
4024 let Inst{31-21} = 0b10000101101;
4025 }
4026 def C4_nbitsset : HInst<
4027 (outs PredRegs:$Pd4),
4028 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4029 "$Pd4 = !bitsset($Rs32,$Rt32)",
4030 tc_85d5d03f, TypeS_3op>, Enc_c2b48e {
4031 let Inst{7-2} = 0b000000;
4032 let Inst{13-13} = 0b0;
4033 let Inst{31-21} = 0b11000111011;
4034 }
4035 def C4_or_and : HInst<
4036 (outs PredRegs:$Pd4),
4037 (ins PredRegs:$Ps4, PredRegs:$Pt4, PredRegs:$Pu4),
4038 "$Pd4 = or($Ps4,and($Pt4,$Pu4))",
4039 tc_b31c2e97, TypeCR>, Enc_9ac432 {
4040 let Inst{5-2} = 0b0000;
4041 let Inst{13-10} = 0b0000;
4042 let Inst{31-18} = 0b01101011010100;
4043 }
4044 def C4_or_andn : HInst<
4045 (outs PredRegs:$Pd4),
4046 (ins PredRegs:$Ps4, PredRegs:$Pt4, PredRegs:$Pu4),
4047 "$Pd4 = or($Ps4,and($Pt4,!$Pu4))",
4048 tc_b31c2e97, TypeCR>, Enc_9ac432 {
4049 let Inst{5-2} = 0b0000;
4050 let Inst{13-10} = 0b0000;
4051 let Inst{31-18} = 0b01101011110100;
4052 }
4053 def C4_or_or : HInst<
4054 (outs PredRegs:$Pd4),
4055 (ins PredRegs:$Ps4, PredRegs:$Pt4, PredRegs:$Pu4),
4056 "$Pd4 = or($Ps4,or($Pt4,$Pu4))",
4057 tc_b31c2e97, TypeCR>, Enc_9ac432 {
4058 let Inst{5-2} = 0b0000;
4059 let Inst{13-10} = 0b0000;
4060 let Inst{31-18} = 0b01101011011100;
4061 }
4062 def C4_or_orn : HInst<
4063 (outs PredRegs:$Pd4),
4064 (ins PredRegs:$Ps4, PredRegs:$Pt4, PredRegs:$Pu4),
4065 "$Pd4 = or($Ps4,or($Pt4,!$Pu4))",
4066 tc_b31c2e97, TypeCR>, Enc_9ac432 {
4067 let Inst{5-2} = 0b0000;
4068 let Inst{13-10} = 0b0000;
4069 let Inst{31-18} = 0b01101011111100;
4070 }
4071 def F2_conv_d2df : HInst<
4072 (outs DoubleRegs:$Rdd32),
4073 (ins DoubleRegs:$Rss32),
4074 "$Rdd32 = convert_d2df($Rss32)",
4075 tc_3a867367, TypeS_2op>, Enc_b9c5fb {
4076 let Inst{13-5} = 0b000000011;
4077 let Inst{31-21} = 0b10000000111;
4078 let isFP = 1;
4079 let Uses = [USR];
4080 }
4081 def F2_conv_d2sf : HInst<
4082 (outs IntRegs:$Rd32),
4083 (ins DoubleRegs:$Rss32),
4084 "$Rd32 = convert_d2sf($Rss32)",
4085 tc_3a867367, TypeS_2op>, Enc_90cd8b {
4086 let Inst{13-5} = 0b000000001;
4087 let Inst{31-21} = 0b10001000010;
4088 let hasNewValue = 1;
4089 let opNewValue = 0;
4090 let isFP = 1;
4091 let Uses = [USR];
4092 }
4093 def F2_conv_df2d : HInst<
4094 (outs DoubleRegs:$Rdd32),
4095 (ins DoubleRegs:$Rss32),
4096 "$Rdd32 = convert_df2d($Rss32)",
4097 tc_3a867367, TypeS_2op>, Enc_b9c5fb {
4098 let Inst{13-5} = 0b000000000;
4099 let Inst{31-21} = 0b10000000111;
4100 let isFP = 1;
4101 let Uses = [USR];
4102 }
4103 def F2_conv_df2d_chop : HInst<
4104 (outs DoubleRegs:$Rdd32),
4105 (ins DoubleRegs:$Rss32),
4106 "$Rdd32 = convert_df2d($Rss32):chop",
4107 tc_3a867367, TypeS_2op>, Enc_b9c5fb {
4108 let Inst{13-5} = 0b000000110;
4109 let Inst{31-21} = 0b10000000111;
4110 let isFP = 1;
4111 let Uses = [USR];
4112 }
4113 def F2_conv_df2sf : HInst<
4114 (outs IntRegs:$Rd32),
4115 (ins DoubleRegs:$Rss32),
4116 "$Rd32 = convert_df2sf($Rss32)",
4117 tc_3a867367, TypeS_2op>, Enc_90cd8b {
4118 let Inst{13-5} = 0b000000001;
4119 let Inst{31-21} = 0b10001000000;
4120 let hasNewValue = 1;
4121 let opNewValue = 0;
4122 let isFP = 1;
4123 let Uses = [USR];
4124 }
4125 def F2_conv_df2ud : HInst<
4126 (outs DoubleRegs:$Rdd32),
4127 (ins DoubleRegs:$Rss32),
4128 "$Rdd32 = convert_df2ud($Rss32)",
4129 tc_3a867367, TypeS_2op>, Enc_b9c5fb {
4130 let Inst{13-5} = 0b000000001;
4131 let Inst{31-21} = 0b10000000111;
4132 let isFP = 1;
4133 let Uses = [USR];
4134 }
4135 def F2_conv_df2ud_chop : HInst<
4136 (outs DoubleRegs:$Rdd32),
4137 (ins DoubleRegs:$Rss32),
4138 "$Rdd32 = convert_df2ud($Rss32):chop",
4139 tc_3a867367, TypeS_2op>, Enc_b9c5fb {
4140 let Inst{13-5} = 0b000000111;
4141 let Inst{31-21} = 0b10000000111;
4142 let isFP = 1;
4143 let Uses = [USR];
4144 }
4145 def F2_conv_df2uw : HInst<
4146 (outs IntRegs:$Rd32),
4147 (ins DoubleRegs:$Rss32),
4148 "$Rd32 = convert_df2uw($Rss32)",
4149 tc_3a867367, TypeS_2op>, Enc_90cd8b {
4150 let Inst{13-5} = 0b000000001;
4151 let Inst{31-21} = 0b10001000011;
4152 let hasNewValue = 1;
4153 let opNewValue = 0;
4154 let isFP = 1;
4155 let Uses = [USR];
4156 }
4157 def F2_conv_df2uw_chop : HInst<
4158 (outs IntRegs:$Rd32),
4159 (ins DoubleRegs:$Rss32),
4160 "$Rd32 = convert_df2uw($Rss32):chop",
4161 tc_3a867367, TypeS_2op>, Enc_90cd8b {
4162 let Inst{13-5} = 0b000000001;
4163 let Inst{31-21} = 0b10001000101;
4164 let hasNewValue = 1;
4165 let opNewValue = 0;
4166 let isFP = 1;
4167 let Uses = [USR];
4168 }
4169 def F2_conv_df2w : HInst<
4170 (outs IntRegs:$Rd32),
4171 (ins DoubleRegs:$Rss32),
4172 "$Rd32 = convert_df2w($Rss32)",
4173 tc_3a867367, TypeS_2op>, Enc_90cd8b {
4174 let Inst{13-5} = 0b000000001;
4175 let Inst{31-21} = 0b10001000100;
4176 let hasNewValue = 1;
4177 let opNewValue = 0;
4178 let isFP = 1;
4179 let Uses = [USR];
4180 }
4181 def F2_conv_df2w_chop : HInst<
4182 (outs IntRegs:$Rd32),
4183 (ins DoubleRegs:$Rss32),
4184 "$Rd32 = convert_df2w($Rss32):chop",
4185 tc_3a867367, TypeS_2op>, Enc_90cd8b {
4186 let Inst{13-5} = 0b000000001;
4187 let Inst{31-21} = 0b10001000111;
4188 let hasNewValue = 1;
4189 let opNewValue = 0;
4190 let isFP = 1;
4191 let Uses = [USR];
4192 }
4193 def F2_conv_sf2d : HInst<
4194 (outs DoubleRegs:$Rdd32),
4195 (ins IntRegs:$Rs32),
4196 "$Rdd32 = convert_sf2d($Rs32)",
4197 tc_3a867367, TypeS_2op>, Enc_3a3d62 {
4198 let Inst{13-5} = 0b000000100;
4199 let Inst{31-21} = 0b10000100100;
4200 let isFP = 1;
4201 let Uses = [USR];
4202 }
4203 def F2_conv_sf2d_chop : HInst<
4204 (outs DoubleRegs:$Rdd32),
4205 (ins IntRegs:$Rs32),
4206 "$Rdd32 = convert_sf2d($Rs32):chop",
4207 tc_3a867367, TypeS_2op>, Enc_3a3d62 {
4208 let Inst{13-5} = 0b000000110;
4209 let Inst{31-21} = 0b10000100100;
4210 let isFP = 1;
4211 let Uses = [USR];
4212 }
4213 def F2_conv_sf2df : HInst<
4214 (outs DoubleRegs:$Rdd32),
4215 (ins IntRegs:$Rs32),
4216 "$Rdd32 = convert_sf2df($Rs32)",
4217 tc_3a867367, TypeS_2op>, Enc_3a3d62 {
4218 let Inst{13-5} = 0b000000000;
4219 let Inst{31-21} = 0b10000100100;
4220 let isFP = 1;
4221 let Uses = [USR];
4222 }
4223 def F2_conv_sf2ud : HInst<
4224 (outs DoubleRegs:$Rdd32),
4225 (ins IntRegs:$Rs32),
4226 "$Rdd32 = convert_sf2ud($Rs32)",
4227 tc_3a867367, TypeS_2op>, Enc_3a3d62 {
4228 let Inst{13-5} = 0b000000011;
4229 let Inst{31-21} = 0b10000100100;
4230 let isFP = 1;
4231 let Uses = [USR];
4232 }
4233 def F2_conv_sf2ud_chop : HInst<
4234 (outs DoubleRegs:$Rdd32),
4235 (ins IntRegs:$Rs32),
4236 "$Rdd32 = convert_sf2ud($Rs32):chop",
4237 tc_3a867367, TypeS_2op>, Enc_3a3d62 {
4238 let Inst{13-5} = 0b000000101;
4239 let Inst{31-21} = 0b10000100100;
4240 let isFP = 1;
4241 let Uses = [USR];
4242 }
4243 def F2_conv_sf2uw : HInst<
4244 (outs IntRegs:$Rd32),
4245 (ins IntRegs:$Rs32),
4246 "$Rd32 = convert_sf2uw($Rs32)",
4247 tc_3a867367, TypeS_2op>, Enc_5e2823 {
4248 let Inst{13-5} = 0b000000000;
4249 let Inst{31-21} = 0b10001011011;
4250 let hasNewValue = 1;
4251 let opNewValue = 0;
4252 let isFP = 1;
4253 let Uses = [USR];
4254 }
4255 def F2_conv_sf2uw_chop : HInst<
4256 (outs IntRegs:$Rd32),
4257 (ins IntRegs:$Rs32),
4258 "$Rd32 = convert_sf2uw($Rs32):chop",
4259 tc_3a867367, TypeS_2op>, Enc_5e2823 {
4260 let Inst{13-5} = 0b000000001;
4261 let Inst{31-21} = 0b10001011011;
4262 let hasNewValue = 1;
4263 let opNewValue = 0;
4264 let isFP = 1;
4265 let Uses = [USR];
4266 }
4267 def F2_conv_sf2w : HInst<
4268 (outs IntRegs:$Rd32),
4269 (ins IntRegs:$Rs32),
4270 "$Rd32 = convert_sf2w($Rs32)",
4271 tc_3a867367, TypeS_2op>, Enc_5e2823 {
4272 let Inst{13-5} = 0b000000000;
4273 let Inst{31-21} = 0b10001011100;
4274 let hasNewValue = 1;
4275 let opNewValue = 0;
4276 let isFP = 1;
4277 let Uses = [USR];
4278 }
4279 def F2_conv_sf2w_chop : HInst<
4280 (outs IntRegs:$Rd32),
4281 (ins IntRegs:$Rs32),
4282 "$Rd32 = convert_sf2w($Rs32):chop",
4283 tc_3a867367, TypeS_2op>, Enc_5e2823 {
4284 let Inst{13-5} = 0b000000001;
4285 let Inst{31-21} = 0b10001011100;
4286 let hasNewValue = 1;
4287 let opNewValue = 0;
4288 let isFP = 1;
4289 let Uses = [USR];
4290 }
4291 def F2_conv_ud2df : HInst<
4292 (outs DoubleRegs:$Rdd32),
4293 (ins DoubleRegs:$Rss32),
4294 "$Rdd32 = convert_ud2df($Rss32)",
4295 tc_3a867367, TypeS_2op>, Enc_b9c5fb {
4296 let Inst{13-5} = 0b000000010;
4297 let Inst{31-21} = 0b10000000111;
4298 let isFP = 1;
4299 let Uses = [USR];
4300 }
4301 def F2_conv_ud2sf : HInst<
4302 (outs IntRegs:$Rd32),
4303 (ins DoubleRegs:$Rss32),
4304 "$Rd32 = convert_ud2sf($Rss32)",
4305 tc_3a867367, TypeS_2op>, Enc_90cd8b {
4306 let Inst{13-5} = 0b000000001;
4307 let Inst{31-21} = 0b10001000001;
4308 let hasNewValue = 1;
4309 let opNewValue = 0;
4310 let isFP = 1;
4311 let Uses = [USR];
4312 }
4313 def F2_conv_uw2df : HInst<
4314 (outs DoubleRegs:$Rdd32),
4315 (ins IntRegs:$Rs32),
4316 "$Rdd32 = convert_uw2df($Rs32)",
4317 tc_3a867367, TypeS_2op>, Enc_3a3d62 {
4318 let Inst{13-5} = 0b000000001;
4319 let Inst{31-21} = 0b10000100100;
4320 let isFP = 1;
4321 let Uses = [USR];
4322 }
4323 def F2_conv_uw2sf : HInst<
4324 (outs IntRegs:$Rd32),
4325 (ins IntRegs:$Rs32),
4326 "$Rd32 = convert_uw2sf($Rs32)",
4327 tc_3a867367, TypeS_2op>, Enc_5e2823 {
4328 let Inst{13-5} = 0b000000000;
4329 let Inst{31-21} = 0b10001011001;
4330 let hasNewValue = 1;
4331 let opNewValue = 0;
4332 let isFP = 1;
4333 let Uses = [USR];
4334 }
4335 def F2_conv_w2df : HInst<
4336 (outs DoubleRegs:$Rdd32),
4337 (ins IntRegs:$Rs32),
4338 "$Rdd32 = convert_w2df($Rs32)",
4339 tc_3a867367, TypeS_2op>, Enc_3a3d62 {
4340 let Inst{13-5} = 0b000000010;
4341 let Inst{31-21} = 0b10000100100;
4342 let isFP = 1;
4343 let Uses = [USR];
4344 }
4345 def F2_conv_w2sf : HInst<
4346 (outs IntRegs:$Rd32),
4347 (ins IntRegs:$Rs32),
4348 "$Rd32 = convert_w2sf($Rs32)",
4349 tc_3a867367, TypeS_2op>, Enc_5e2823 {
4350 let Inst{13-5} = 0b000000000;
4351 let Inst{31-21} = 0b10001011010;
4352 let hasNewValue = 1;
4353 let opNewValue = 0;
4354 let isFP = 1;
4355 let Uses = [USR];
4356 }
4357 def F2_dfadd : HInst<
4358 (outs DoubleRegs:$Rdd32),
4359 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
4360 "$Rdd32 = dfadd($Rss32,$Rtt32)",
4361 tc_2f7c551d, TypeM>, Enc_a56825, Requires<[HasV66]> {
4362 let Inst{7-5} = 0b011;
4363 let Inst{13-13} = 0b0;
4364 let Inst{31-21} = 0b11101000000;
4365 let isFP = 1;
4366 let Uses = [USR];
4367 }
4368 def F2_dfclass : HInst<
4369 (outs PredRegs:$Pd4),
4370 (ins DoubleRegs:$Rss32, u5_0Imm:$Ii),
4371 "$Pd4 = dfclass($Rss32,#$Ii)",
4372 tc_643b4717, TypeALU64>, Enc_1f19b5 {
4373 let Inst{4-2} = 0b100;
4374 let Inst{13-10} = 0b0000;
4375 let Inst{31-21} = 0b11011100100;
4376 let isFP = 1;
4377 let Uses = [USR];
4378 }
4379 def F2_dfcmpeq : HInst<
4380 (outs PredRegs:$Pd4),
4381 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
4382 "$Pd4 = dfcmp.eq($Rss32,$Rtt32)",
4383 tc_85d5d03f, TypeALU64>, Enc_fcf7a7 {
4384 let Inst{7-2} = 0b000000;
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_dfcmpge : HInst<
4392 (outs PredRegs:$Pd4),
4393 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
4394 "$Pd4 = dfcmp.ge($Rss32,$Rtt32)",
4395 tc_85d5d03f, TypeALU64>, Enc_fcf7a7 {
4396 let Inst{7-2} = 0b010000;
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_dfcmpgt : HInst<
4404 (outs PredRegs:$Pd4),
4405 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
4406 "$Pd4 = dfcmp.gt($Rss32,$Rtt32)",
4407 tc_85d5d03f, TypeALU64>, Enc_fcf7a7 {
4408 let Inst{7-2} = 0b001000;
4409 let Inst{13-13} = 0b0;
4410 let Inst{31-21} = 0b11010010111;
4411 let isFP = 1;
4412 let Uses = [USR];
4413 let isCompare = 1;
4414 }
4415 def F2_dfcmpuo : HInst<
4416 (outs PredRegs:$Pd4),
4417 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
4418 "$Pd4 = dfcmp.uo($Rss32,$Rtt32)",
4419 tc_85d5d03f, TypeALU64>, Enc_fcf7a7 {
4420 let Inst{7-2} = 0b011000;
4421 let Inst{13-13} = 0b0;
4422 let Inst{31-21} = 0b11010010111;
4423 let isFP = 1;
4424 let Uses = [USR];
4425 let isCompare = 1;
4426 }
4427 def F2_dfimm_n : HInst<
4428 (outs DoubleRegs:$Rdd32),
4429 (ins u10_0Imm:$Ii),
4430 "$Rdd32 = dfmake(#$Ii):neg",
4431 tc_9e313203, TypeALU64>, Enc_e6c957 {
4432 let Inst{20-16} = 0b00000;
4433 let Inst{31-22} = 0b1101100101;
4434 let prefersSlot3 = 1;
4435 }
4436 def F2_dfimm_p : HInst<
4437 (outs DoubleRegs:$Rdd32),
4438 (ins u10_0Imm:$Ii),
4439 "$Rdd32 = dfmake(#$Ii):pos",
4440 tc_9e313203, TypeALU64>, Enc_e6c957 {
4441 let Inst{20-16} = 0b00000;
4442 let Inst{31-22} = 0b1101100100;
4443 let prefersSlot3 = 1;
4444 }
4445 def F2_dfsub : HInst<
4446 (outs DoubleRegs:$Rdd32),
4447 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
4448 "$Rdd32 = dfsub($Rss32,$Rtt32)",
4449 tc_2f7c551d, TypeM>, Enc_a56825, Requires<[HasV66]> {
4450 let Inst{7-5} = 0b011;
4451 let Inst{13-13} = 0b0;
4452 let Inst{31-21} = 0b11101000100;
4453 let isFP = 1;
4454 let Uses = [USR];
4455 }
4456 def F2_sfadd : HInst<
4457 (outs IntRegs:$Rd32),
4458 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4459 "$Rd32 = sfadd($Rs32,$Rt32)",
4460 tc_3b470976, TypeM>, Enc_5ab2be {
4461 let Inst{7-5} = 0b000;
4462 let Inst{13-13} = 0b0;
4463 let Inst{31-21} = 0b11101011000;
4464 let hasNewValue = 1;
4465 let opNewValue = 0;
4466 let isFP = 1;
4467 let Uses = [USR];
4468 let isCommutable = 1;
4469 }
4470 def F2_sfclass : HInst<
4471 (outs PredRegs:$Pd4),
4472 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
4473 "$Pd4 = sfclass($Rs32,#$Ii)",
4474 tc_643b4717, TypeS_2op>, Enc_83ee64 {
4475 let Inst{7-2} = 0b000000;
4476 let Inst{13-13} = 0b0;
4477 let Inst{31-21} = 0b10000101111;
4478 let isFP = 1;
4479 let Uses = [USR];
4480 }
4481 def F2_sfcmpeq : HInst<
4482 (outs PredRegs:$Pd4),
4483 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4484 "$Pd4 = sfcmp.eq($Rs32,$Rt32)",
4485 tc_85d5d03f, TypeS_3op>, Enc_c2b48e {
4486 let Inst{7-2} = 0b011000;
4487 let Inst{13-13} = 0b0;
4488 let Inst{31-21} = 0b11000111111;
4489 let isFP = 1;
4490 let Uses = [USR];
4491 let isCompare = 1;
4492 }
4493 def F2_sfcmpge : HInst<
4494 (outs PredRegs:$Pd4),
4495 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4496 "$Pd4 = sfcmp.ge($Rs32,$Rt32)",
4497 tc_85d5d03f, TypeS_3op>, Enc_c2b48e {
4498 let Inst{7-2} = 0b000000;
4499 let Inst{13-13} = 0b0;
4500 let Inst{31-21} = 0b11000111111;
4501 let isFP = 1;
4502 let Uses = [USR];
4503 let isCompare = 1;
4504 }
4505 def F2_sfcmpgt : HInst<
4506 (outs PredRegs:$Pd4),
4507 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4508 "$Pd4 = sfcmp.gt($Rs32,$Rt32)",
4509 tc_85d5d03f, TypeS_3op>, Enc_c2b48e {
4510 let Inst{7-2} = 0b100000;
4511 let Inst{13-13} = 0b0;
4512 let Inst{31-21} = 0b11000111111;
4513 let isFP = 1;
4514 let Uses = [USR];
4515 let isCompare = 1;
4516 }
4517 def F2_sfcmpuo : HInst<
4518 (outs PredRegs:$Pd4),
4519 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4520 "$Pd4 = sfcmp.uo($Rs32,$Rt32)",
4521 tc_85d5d03f, TypeS_3op>, Enc_c2b48e {
4522 let Inst{7-2} = 0b001000;
4523 let Inst{13-13} = 0b0;
4524 let Inst{31-21} = 0b11000111111;
4525 let isFP = 1;
4526 let Uses = [USR];
4527 let isCompare = 1;
4528 }
4529 def F2_sffixupd : HInst<
4530 (outs IntRegs:$Rd32),
4531 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4532 "$Rd32 = sffixupd($Rs32,$Rt32)",
4533 tc_3b470976, TypeM>, Enc_5ab2be {
4534 let Inst{7-5} = 0b001;
4535 let Inst{13-13} = 0b0;
4536 let Inst{31-21} = 0b11101011110;
4537 let hasNewValue = 1;
4538 let opNewValue = 0;
4539 let isFP = 1;
4540 }
4541 def F2_sffixupn : HInst<
4542 (outs IntRegs:$Rd32),
4543 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4544 "$Rd32 = sffixupn($Rs32,$Rt32)",
4545 tc_3b470976, TypeM>, Enc_5ab2be {
4546 let Inst{7-5} = 0b000;
4547 let Inst{13-13} = 0b0;
4548 let Inst{31-21} = 0b11101011110;
4549 let hasNewValue = 1;
4550 let opNewValue = 0;
4551 let isFP = 1;
4552 }
4553 def F2_sffixupr : HInst<
4554 (outs IntRegs:$Rd32),
4555 (ins IntRegs:$Rs32),
4556 "$Rd32 = sffixupr($Rs32)",
4557 tc_3a867367, TypeS_2op>, Enc_5e2823 {
4558 let Inst{13-5} = 0b000000000;
4559 let Inst{31-21} = 0b10001011101;
4560 let hasNewValue = 1;
4561 let opNewValue = 0;
4562 let isFP = 1;
4563 }
4564 def F2_sffma : HInst<
4565 (outs IntRegs:$Rx32),
4566 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
4567 "$Rx32 += sfmpy($Rs32,$Rt32)",
4568 tc_a58fd5cc, TypeM>, Enc_2ae154 {
4569 let Inst{7-5} = 0b100;
4570 let Inst{13-13} = 0b0;
4571 let Inst{31-21} = 0b11101111000;
4572 let hasNewValue = 1;
4573 let opNewValue = 0;
4574 let isFP = 1;
4575 let Uses = [USR];
4576 let Constraints = "$Rx32 = $Rx32in";
4577 }
4578 def F2_sffma_lib : HInst<
4579 (outs IntRegs:$Rx32),
4580 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
4581 "$Rx32 += sfmpy($Rs32,$Rt32):lib",
4582 tc_a58fd5cc, TypeM>, Enc_2ae154 {
4583 let Inst{7-5} = 0b110;
4584 let Inst{13-13} = 0b0;
4585 let Inst{31-21} = 0b11101111000;
4586 let hasNewValue = 1;
4587 let opNewValue = 0;
4588 let isFP = 1;
4589 let Uses = [USR];
4590 let Constraints = "$Rx32 = $Rx32in";
4591 }
4592 def F2_sffma_sc : HInst<
4593 (outs IntRegs:$Rx32),
4594 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32, PredRegs:$Pu4),
4595 "$Rx32 += sfmpy($Rs32,$Rt32,$Pu4):scale",
4596 tc_4560740b, TypeM>, Enc_437f33 {
4597 let Inst{7-7} = 0b1;
4598 let Inst{13-13} = 0b0;
4599 let Inst{31-21} = 0b11101111011;
4600 let hasNewValue = 1;
4601 let opNewValue = 0;
4602 let isFP = 1;
4603 let Uses = [USR];
4604 let Constraints = "$Rx32 = $Rx32in";
4605 }
4606 def F2_sffms : HInst<
4607 (outs IntRegs:$Rx32),
4608 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
4609 "$Rx32 -= sfmpy($Rs32,$Rt32)",
4610 tc_a58fd5cc, TypeM>, Enc_2ae154 {
4611 let Inst{7-5} = 0b101;
4612 let Inst{13-13} = 0b0;
4613 let Inst{31-21} = 0b11101111000;
4614 let hasNewValue = 1;
4615 let opNewValue = 0;
4616 let isFP = 1;
4617 let Uses = [USR];
4618 let Constraints = "$Rx32 = $Rx32in";
4619 }
4620 def F2_sffms_lib : HInst<
4621 (outs IntRegs:$Rx32),
4622 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
4623 "$Rx32 -= sfmpy($Rs32,$Rt32):lib",
4624 tc_a58fd5cc, TypeM>, Enc_2ae154 {
4625 let Inst{7-5} = 0b111;
4626 let Inst{13-13} = 0b0;
4627 let Inst{31-21} = 0b11101111000;
4628 let hasNewValue = 1;
4629 let opNewValue = 0;
4630 let isFP = 1;
4631 let Uses = [USR];
4632 let Constraints = "$Rx32 = $Rx32in";
4633 }
4634 def F2_sfimm_n : HInst<
4635 (outs IntRegs:$Rd32),
4636 (ins u10_0Imm:$Ii),
4637 "$Rd32 = sfmake(#$Ii):neg",
4638 tc_9e313203, TypeALU64>, Enc_6c9440 {
4639 let Inst{20-16} = 0b00000;
4640 let Inst{31-22} = 0b1101011001;
4641 let hasNewValue = 1;
4642 let opNewValue = 0;
4643 let prefersSlot3 = 1;
4644 }
4645 def F2_sfimm_p : HInst<
4646 (outs IntRegs:$Rd32),
4647 (ins u10_0Imm:$Ii),
4648 "$Rd32 = sfmake(#$Ii):pos",
4649 tc_9e313203, TypeALU64>, Enc_6c9440 {
4650 let Inst{20-16} = 0b00000;
4651 let Inst{31-22} = 0b1101011000;
4652 let hasNewValue = 1;
4653 let opNewValue = 0;
4654 let prefersSlot3 = 1;
4655 }
4656 def F2_sfinvsqrta : HInst<
4657 (outs IntRegs:$Rd32, PredRegs:$Pe4),
4658 (ins IntRegs:$Rs32),
4659 "$Rd32,$Pe4 = sfinvsqrta($Rs32)",
4660 tc_b8bffe55, TypeS_2op>, Enc_890909 {
4661 let Inst{13-7} = 0b0000000;
4662 let Inst{31-21} = 0b10001011111;
4663 let hasNewValue = 1;
4664 let opNewValue = 0;
4665 let isFP = 1;
4666 let isPredicateLate = 1;
4667 }
4668 def F2_sfmax : HInst<
4669 (outs IntRegs:$Rd32),
4670 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4671 "$Rd32 = sfmax($Rs32,$Rt32)",
4672 tc_88b4f13d, TypeM>, Enc_5ab2be {
4673 let Inst{7-5} = 0b000;
4674 let Inst{13-13} = 0b0;
4675 let Inst{31-21} = 0b11101011100;
4676 let hasNewValue = 1;
4677 let opNewValue = 0;
4678 let isFP = 1;
4679 let prefersSlot3 = 1;
4680 let Uses = [USR];
4681 }
4682 def F2_sfmin : HInst<
4683 (outs IntRegs:$Rd32),
4684 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4685 "$Rd32 = sfmin($Rs32,$Rt32)",
4686 tc_88b4f13d, TypeM>, Enc_5ab2be {
4687 let Inst{7-5} = 0b001;
4688 let Inst{13-13} = 0b0;
4689 let Inst{31-21} = 0b11101011100;
4690 let hasNewValue = 1;
4691 let opNewValue = 0;
4692 let isFP = 1;
4693 let prefersSlot3 = 1;
4694 let Uses = [USR];
4695 }
4696 def F2_sfmpy : HInst<
4697 (outs IntRegs:$Rd32),
4698 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4699 "$Rd32 = sfmpy($Rs32,$Rt32)",
4700 tc_3b470976, TypeM>, Enc_5ab2be {
4701 let Inst{7-5} = 0b000;
4702 let Inst{13-13} = 0b0;
4703 let Inst{31-21} = 0b11101011010;
4704 let hasNewValue = 1;
4705 let opNewValue = 0;
4706 let isFP = 1;
4707 let Uses = [USR];
4708 let isCommutable = 1;
4709 }
4710 def F2_sfrecipa : HInst<
4711 (outs IntRegs:$Rd32, PredRegs:$Pe4),
4712 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4713 "$Rd32,$Pe4 = sfrecipa($Rs32,$Rt32)",
4714 tc_2ff964b4, TypeM>, Enc_a94f3b {
4715 let Inst{7-7} = 0b1;
4716 let Inst{13-13} = 0b0;
4717 let Inst{31-21} = 0b11101011111;
4718 let hasNewValue = 1;
4719 let opNewValue = 0;
4720 let isFP = 1;
4721 let isPredicateLate = 1;
4722 }
4723 def F2_sfsub : HInst<
4724 (outs IntRegs:$Rd32),
4725 (ins IntRegs:$Rs32, IntRegs:$Rt32),
4726 "$Rd32 = sfsub($Rs32,$Rt32)",
4727 tc_3b470976, TypeM>, Enc_5ab2be {
4728 let Inst{7-5} = 0b001;
4729 let Inst{13-13} = 0b0;
4730 let Inst{31-21} = 0b11101011000;
4731 let hasNewValue = 1;
4732 let opNewValue = 0;
4733 let isFP = 1;
4734 let Uses = [USR];
4735 }
4736 def G4_tfrgcpp : HInst<
4737 (outs DoubleRegs:$Rdd32),
4738 (ins GuestRegs64:$Gss32),
4739 "$Rdd32 = $Gss32",
4740 tc_0d8f5752, TypeCR>, Enc_0aa344 {
4741 let Inst{13-5} = 0b000000000;
4742 let Inst{31-21} = 0b01101000001;
4743 }
4744 def G4_tfrgcrr : HInst<
4745 (outs IntRegs:$Rd32),
4746 (ins GuestRegs:$Gs32),
4747 "$Rd32 = $Gs32",
4748 tc_0d8f5752, TypeCR>, Enc_44271f {
4749 let Inst{13-5} = 0b000000000;
4750 let Inst{31-21} = 0b01101010001;
4751 let hasNewValue = 1;
4752 let opNewValue = 0;
4753 }
4754 def G4_tfrgpcp : HInst<
4755 (outs GuestRegs64:$Gdd32),
4756 (ins DoubleRegs:$Rss32),
4757 "$Gdd32 = $Rss32",
4758 tc_bcf98408, TypeCR>, Enc_ed5027 {
4759 let Inst{13-5} = 0b000000000;
4760 let Inst{31-21} = 0b01100011000;
4761 let hasNewValue = 1;
4762 let opNewValue = 0;
4763 }
4764 def G4_tfrgrcr : HInst<
4765 (outs GuestRegs:$Gd32),
4766 (ins IntRegs:$Rs32),
4767 "$Gd32 = $Rs32",
4768 tc_bcf98408, TypeCR>, Enc_621fba {
4769 let Inst{13-5} = 0b000000000;
4770 let Inst{31-21} = 0b01100010000;
4771 let hasNewValue = 1;
4772 let opNewValue = 0;
4773 }
4774 def J2_call : HInst<
4775 (outs),
4776 (ins a30_2Imm:$Ii),
4777 "call $Ii",
4778 tc_4ae7b58b, TypeJ>, Enc_81ac1d, PredRel {
4779 let Inst{0-0} = 0b0;
4780 let Inst{31-25} = 0b0101101;
4781 let isCall = 1;
4782 let prefersSlot3 = 1;
4783 let cofRelax2 = 1;
4784 let cofMax1 = 1;
4785 let Uses = [R29];
4786 let Defs = [PC, R31];
4787 let BaseOpcode = "J2_call";
4788 let isPredicable = 1;
4789 let hasSideEffects = 1;
4790 let isExtendable = 1;
4791 let opExtendable = 0;
4792 let isExtentSigned = 1;
4793 let opExtentBits = 24;
4794 let opExtentAlign = 2;
4795 }
4796 def J2_callf : HInst<
4797 (outs),
4798 (ins PredRegs:$Pu4, a30_2Imm:$Ii),
4799 "if (!$Pu4) call $Ii",
4800 tc_1d81e60e, TypeJ>, Enc_daea09, PredRel {
4801 let Inst{0-0} = 0b0;
4802 let Inst{12-10} = 0b000;
4803 let Inst{21-21} = 0b1;
4804 let Inst{31-24} = 0b01011101;
4805 let isPredicated = 1;
4806 let isPredicatedFalse = 1;
4807 let isCall = 1;
4808 let prefersSlot3 = 1;
4809 let cofRelax1 = 1;
4810 let cofRelax2 = 1;
4811 let cofMax1 = 1;
4812 let Uses = [R29];
4813 let Defs = [PC, R31];
4814 let BaseOpcode = "J2_call";
4815 let hasSideEffects = 1;
4816 let isTaken = Inst{12};
4817 let isExtendable = 1;
4818 let opExtendable = 1;
4819 let isExtentSigned = 1;
4820 let opExtentBits = 17;
4821 let opExtentAlign = 2;
4822 }
4823 def J2_callr : HInst<
4824 (outs),
4825 (ins IntRegs:$Rs32),
4826 "callr $Rs32",
4827 tc_3bd75825, TypeJ>, Enc_ecbcc8 {
4828 let Inst{13-0} = 0b00000000000000;
4829 let Inst{31-21} = 0b01010000101;
4830 let isCall = 1;
4831 let prefersSlot3 = 1;
4832 let cofMax1 = 1;
4833 let Uses = [R29];
4834 let Defs = [PC, R31];
4835 let hasSideEffects = 1;
4836 }
4837 def J2_callrf : HInst<
4838 (outs),
4839 (ins PredRegs:$Pu4, IntRegs:$Rs32),
4840 "if (!$Pu4) callr $Rs32",
4841 tc_1ad90acd, TypeJ>, Enc_88d4d9 {
4842 let Inst{7-0} = 0b00000000;
4843 let Inst{13-10} = 0b0000;
4844 let Inst{31-21} = 0b01010001001;
4845 let isPredicated = 1;
4846 let isPredicatedFalse = 1;
4847 let isCall = 1;
4848 let prefersSlot3 = 1;
4849 let cofMax1 = 1;
4850 let Uses = [R29];
4851 let Defs = [PC, R31];
4852 let hasSideEffects = 1;
4853 let isTaken = Inst{12};
4854 }
4855 def J2_callrt : HInst<
4856 (outs),
4857 (ins PredRegs:$Pu4, IntRegs:$Rs32),
4858 "if ($Pu4) callr $Rs32",
4859 tc_1ad90acd, TypeJ>, Enc_88d4d9 {
4860 let Inst{7-0} = 0b00000000;
4861 let Inst{13-10} = 0b0000;
4862 let Inst{31-21} = 0b01010001000;
4863 let isPredicated = 1;
4864 let isCall = 1;
4865 let prefersSlot3 = 1;
4866 let cofMax1 = 1;
4867 let Uses = [R29];
4868 let Defs = [PC, R31];
4869 let hasSideEffects = 1;
4870 let isTaken = Inst{12};
4871 }
4872 def J2_callt : HInst<
4873 (outs),
4874 (ins PredRegs:$Pu4, a30_2Imm:$Ii),
4875 "if ($Pu4) call $Ii",
4876 tc_1d81e60e, TypeJ>, Enc_daea09, PredRel {
4877 let Inst{0-0} = 0b0;
4878 let Inst{12-10} = 0b000;
4879 let Inst{21-21} = 0b0;
4880 let Inst{31-24} = 0b01011101;
4881 let isPredicated = 1;
4882 let isCall = 1;
4883 let prefersSlot3 = 1;
4884 let cofRelax1 = 1;
4885 let cofRelax2 = 1;
4886 let cofMax1 = 1;
4887 let Uses = [R29];
4888 let Defs = [PC, R31];
4889 let BaseOpcode = "J2_call";
4890 let hasSideEffects = 1;
4891 let isTaken = Inst{12};
4892 let isExtendable = 1;
4893 let opExtendable = 1;
4894 let isExtentSigned = 1;
4895 let opExtentBits = 17;
4896 let opExtentAlign = 2;
4897 }
4898 def J2_endloop0 : HInst<
4899 (outs),
4900 (ins),
4901 "endloop0",
4902 tc_1b6f7cec, TypeJ> {
4903 let Uses = [LC0, SA0];
4904 let Defs = [LC0, P3, PC, USR];
4905 let isBranch = 1;
4906 let isTerminator = 1;
4907 let isPseudo = 1;
4908 }
4909 def J2_endloop01 : HInst<
4910 (outs),
4911 (ins),
4912 "endloop01",
4913 tc_1b6f7cec, TypeJ> {
4914 let Uses = [LC0, LC1, SA0, SA1];
4915 let Defs = [LC0, LC1, P3, PC, USR];
4916 let isPseudo = 1;
4917 }
4918 def J2_endloop1 : HInst<
4919 (outs),
4920 (ins),
4921 "endloop1",
4922 tc_1b6f7cec, TypeJ> {
4923 let Uses = [LC1, SA1];
4924 let Defs = [LC1, PC];
4925 let isBranch = 1;
4926 let isTerminator = 1;
4927 let isPseudo = 1;
4928 }
4929 def J2_jump : HInst<
4930 (outs),
4931 (ins b30_2Imm:$Ii),
4932 "jump $Ii",
4933 tc_ae53734a, TypeJ>, Enc_81ac1d, PredNewRel {
4934 let Inst{0-0} = 0b0;
4935 let Inst{31-25} = 0b0101100;
4936 let isTerminator = 1;
4937 let isBranch = 1;
4938 let cofRelax2 = 1;
4939 let cofMax1 = 1;
4940 let Defs = [PC];
4941 let InputType = "imm";
4942 let BaseOpcode = "J2_jump";
4943 let isBarrier = 1;
4944 let isPredicable = 1;
4945 let isExtendable = 1;
4946 let opExtendable = 0;
4947 let isExtentSigned = 1;
4948 let opExtentBits = 24;
4949 let opExtentAlign = 2;
4950 }
4951 def J2_jumpf : HInst<
4952 (outs),
4953 (ins PredRegs:$Pu4, b30_2Imm:$Ii),
4954 "if (!$Pu4) jump:nt $Ii",
4955 tc_db2bce9c, TypeJ>, Enc_daea09, PredNewRel {
4956 let Inst{0-0} = 0b0;
4957 let Inst{12-10} = 0b000;
4958 let Inst{21-21} = 0b1;
4959 let Inst{31-24} = 0b01011100;
4960 let isPredicated = 1;
4961 let isPredicatedFalse = 1;
4962 let isTerminator = 1;
4963 let isBranch = 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_jumpf_nopred_map : HInst<
4978 (outs),
4979 (ins PredRegs:$Pu4, b15_2Imm:$Ii),
4980 "if (!$Pu4) jump $Ii",
4981 tc_db2bce9c, TypeMAPPING>, Requires<[HasV60]> {
4982 let isPseudo = 1;
4983 let isCodeGenOnly = 1;
4984 }
4985 def J2_jumpfnew : HInst<
4986 (outs),
4987 (ins PredRegs:$Pu4, b30_2Imm:$Ii),
4988 "if (!$Pu4.new) jump:nt $Ii",
4989 tc_20cdee80, TypeJ>, Enc_daea09, PredNewRel {
4990 let Inst{0-0} = 0b0;
4991 let Inst{12-10} = 0b010;
4992 let Inst{21-21} = 0b1;
4993 let Inst{31-24} = 0b01011100;
4994 let isPredicated = 1;
4995 let isPredicatedFalse = 1;
4996 let isTerminator = 1;
4997 let isBranch = 1;
4998 let isPredicatedNew = 1;
4999 let cofRelax1 = 1;
5000 let cofRelax2 = 1;
5001 let cofMax1 = 1;
5002 let Defs = [PC];
5003 let InputType = "imm";
5004 let BaseOpcode = "J2_jump";
5005 let isTaken = Inst{12};
5006 let isExtendable = 1;
5007 let opExtendable = 1;
5008 let isExtentSigned = 1;
5009 let opExtentBits = 17;
5010 let opExtentAlign = 2;
5011 }
5012 def J2_jumpfnewpt : HInst<
5013 (outs),
5014 (ins PredRegs:$Pu4, b30_2Imm:$Ii),
5015 "if (!$Pu4.new) jump:t $Ii",
5016 tc_20cdee80, TypeJ>, Enc_daea09, PredNewRel {
5017 let Inst{0-0} = 0b0;
5018 let Inst{12-10} = 0b110;
5019 let Inst{21-21} = 0b1;
5020 let Inst{31-24} = 0b01011100;
5021 let isPredicated = 1;
5022 let isPredicatedFalse = 1;
5023 let isTerminator = 1;
5024 let isBranch = 1;
5025 let isPredicatedNew = 1;
5026 let cofRelax1 = 1;
5027 let cofRelax2 = 1;
5028 let cofMax1 = 1;
5029 let Defs = [PC];
5030 let InputType = "imm";
5031 let BaseOpcode = "J2_jump";
5032 let isTaken = Inst{12};
5033 let isExtendable = 1;
5034 let opExtendable = 1;
5035 let isExtentSigned = 1;
5036 let opExtentBits = 17;
5037 let opExtentAlign = 2;
5038 }
5039 def J2_jumpfpt : HInst<
5040 (outs),
5041 (ins PredRegs:$Pu4, b30_2Imm:$Ii),
5042 "if (!$Pu4) jump:t $Ii",
5043 tc_cd374165, TypeJ>, Enc_daea09, Requires<[HasV60]>, PredNewRel {
5044 let Inst{0-0} = 0b0;
5045 let Inst{12-10} = 0b100;
5046 let Inst{21-21} = 0b1;
5047 let Inst{31-24} = 0b01011100;
5048 let isPredicated = 1;
5049 let isPredicatedFalse = 1;
5050 let isTerminator = 1;
5051 let isBranch = 1;
5052 let cofRelax1 = 1;
5053 let cofRelax2 = 1;
5054 let cofMax1 = 1;
5055 let Defs = [PC];
5056 let InputType = "imm";
5057 let BaseOpcode = "J2_jump";
5058 let isTaken = Inst{12};
5059 let isExtendable = 1;
5060 let opExtendable = 1;
5061 let isExtentSigned = 1;
5062 let opExtentBits = 17;
5063 let opExtentAlign = 2;
5064 }
5065 def J2_jumpr : HInst<
5066 (outs),
5067 (ins IntRegs:$Rs32),
5068 "jumpr $Rs32",
5069 tc_d5b7b0c1, TypeJ>, Enc_ecbcc8, PredNewRel {
5070 let Inst{13-0} = 0b00000000000000;
5071 let Inst{31-21} = 0b01010010100;
5072 let isTerminator = 1;
5073 let isIndirectBranch = 1;
5074 let isBranch = 1;
5075 let cofMax1 = 1;
5076 let Defs = [PC];
5077 let InputType = "reg";
5078 let BaseOpcode = "J2_jumpr";
5079 let isBarrier = 1;
5080 let isPredicable = 1;
5081 }
5082 def J2_jumprf : HInst<
5083 (outs),
5084 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5085 "if (!$Pu4) jumpr:nt $Rs32",
5086 tc_85c9c08f, TypeJ>, Enc_88d4d9, PredNewRel {
5087 let Inst{7-0} = 0b00000000;
5088 let Inst{13-10} = 0b0000;
5089 let Inst{31-21} = 0b01010011011;
5090 let isPredicated = 1;
5091 let isPredicatedFalse = 1;
5092 let isTerminator = 1;
5093 let isIndirectBranch = 1;
5094 let isBranch = 1;
5095 let cofMax1 = 1;
5096 let Defs = [PC];
5097 let InputType = "reg";
5098 let BaseOpcode = "J2_jumpr";
5099 let isTaken = Inst{12};
5100 }
5101 def J2_jumprf_nopred_map : HInst<
5102 (outs),
5103 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5104 "if (!$Pu4) jumpr $Rs32",
5105 tc_85c9c08f, TypeMAPPING>, Requires<[HasV60]> {
5106 let isPseudo = 1;
5107 let isCodeGenOnly = 1;
5108 }
5109 def J2_jumprfnew : HInst<
5110 (outs),
5111 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5112 "if (!$Pu4.new) jumpr:nt $Rs32",
5113 tc_b51dc29a, TypeJ>, Enc_88d4d9, PredNewRel {
5114 let Inst{7-0} = 0b00000000;
5115 let Inst{13-10} = 0b0010;
5116 let Inst{31-21} = 0b01010011011;
5117 let isPredicated = 1;
5118 let isPredicatedFalse = 1;
5119 let isTerminator = 1;
5120 let isIndirectBranch = 1;
5121 let isBranch = 1;
5122 let isPredicatedNew = 1;
5123 let cofMax1 = 1;
5124 let Defs = [PC];
5125 let InputType = "reg";
5126 let BaseOpcode = "J2_jumpr";
5127 let isTaken = Inst{12};
5128 }
5129 def J2_jumprfnewpt : HInst<
5130 (outs),
5131 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5132 "if (!$Pu4.new) jumpr:t $Rs32",
5133 tc_b51dc29a, TypeJ>, Enc_88d4d9, PredNewRel {
5134 let Inst{7-0} = 0b00000000;
5135 let Inst{13-10} = 0b0110;
5136 let Inst{31-21} = 0b01010011011;
5137 let isPredicated = 1;
5138 let isPredicatedFalse = 1;
5139 let isTerminator = 1;
5140 let isIndirectBranch = 1;
5141 let isBranch = 1;
5142 let isPredicatedNew = 1;
5143 let cofMax1 = 1;
5144 let Defs = [PC];
5145 let InputType = "reg";
5146 let BaseOpcode = "J2_jumpr";
5147 let isTaken = Inst{12};
5148 }
5149 def J2_jumprfpt : HInst<
5150 (outs),
5151 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5152 "if (!$Pu4) jumpr:t $Rs32",
5153 tc_e78647bd, TypeJ>, Enc_88d4d9, Requires<[HasV60]>, PredNewRel {
5154 let Inst{7-0} = 0b00000000;
5155 let Inst{13-10} = 0b0100;
5156 let Inst{31-21} = 0b01010011011;
5157 let isPredicated = 1;
5158 let isPredicatedFalse = 1;
5159 let isTerminator = 1;
5160 let isIndirectBranch = 1;
5161 let isBranch = 1;
5162 let cofMax1 = 1;
5163 let Defs = [PC];
5164 let InputType = "reg";
5165 let BaseOpcode = "J2_jumpr";
5166 let isTaken = Inst{12};
5167 }
5168 def J2_jumprgtez : HInst<
5169 (outs),
5170 (ins IntRegs:$Rs32, b13_2Imm:$Ii),
5171 "if ($Rs32>=#0) jump:nt $Ii",
5172 tc_d9d43ecb, TypeCR>, Enc_0fa531 {
5173 let Inst{0-0} = 0b0;
5174 let Inst{12-12} = 0b0;
5175 let Inst{31-22} = 0b0110000101;
5176 let isPredicated = 1;
5177 let isTerminator = 1;
5178 let isBranch = 1;
5179 let isPredicatedNew = 1;
5180 let cofRelax1 = 1;
5181 let cofRelax2 = 1;
5182 let cofMax1 = 1;
5183 let Defs = [PC];
5184 let isTaken = Inst{12};
5185 }
5186 def J2_jumprgtezpt : HInst<
5187 (outs),
5188 (ins IntRegs:$Rs32, b13_2Imm:$Ii),
5189 "if ($Rs32>=#0) jump:t $Ii",
5190 tc_d9d43ecb, TypeCR>, Enc_0fa531 {
5191 let Inst{0-0} = 0b0;
5192 let Inst{12-12} = 0b1;
5193 let Inst{31-22} = 0b0110000101;
5194 let isPredicated = 1;
5195 let isTerminator = 1;
5196 let isBranch = 1;
5197 let isPredicatedNew = 1;
5198 let cofRelax1 = 1;
5199 let cofRelax2 = 1;
5200 let cofMax1 = 1;
5201 let Defs = [PC];
5202 let isTaken = Inst{12};
5203 }
5204 def J2_jumprltez : HInst<
5205 (outs),
5206 (ins IntRegs:$Rs32, b13_2Imm:$Ii),
5207 "if ($Rs32<=#0) jump:nt $Ii",
5208 tc_d9d43ecb, TypeCR>, Enc_0fa531 {
5209 let Inst{0-0} = 0b0;
5210 let Inst{12-12} = 0b0;
5211 let Inst{31-22} = 0b0110000111;
5212 let isPredicated = 1;
5213 let isTerminator = 1;
5214 let isBranch = 1;
5215 let isPredicatedNew = 1;
5216 let cofRelax1 = 1;
5217 let cofRelax2 = 1;
5218 let cofMax1 = 1;
5219 let Defs = [PC];
5220 let isTaken = Inst{12};
5221 }
5222 def J2_jumprltezpt : HInst<
5223 (outs),
5224 (ins IntRegs:$Rs32, b13_2Imm:$Ii),
5225 "if ($Rs32<=#0) jump:t $Ii",
5226 tc_d9d43ecb, TypeCR>, Enc_0fa531 {
5227 let Inst{0-0} = 0b0;
5228 let Inst{12-12} = 0b1;
5229 let Inst{31-22} = 0b0110000111;
5230 let isPredicated = 1;
5231 let isTerminator = 1;
5232 let isBranch = 1;
5233 let isPredicatedNew = 1;
5234 let cofRelax1 = 1;
5235 let cofRelax2 = 1;
5236 let cofMax1 = 1;
5237 let Defs = [PC];
5238 let isTaken = Inst{12};
5239 }
5240 def J2_jumprnz : HInst<
5241 (outs),
5242 (ins IntRegs:$Rs32, b13_2Imm:$Ii),
5243 "if ($Rs32==#0) jump:nt $Ii",
5244 tc_d9d43ecb, TypeCR>, Enc_0fa531 {
5245 let Inst{0-0} = 0b0;
5246 let Inst{12-12} = 0b0;
5247 let Inst{31-22} = 0b0110000110;
5248 let isPredicated = 1;
5249 let isTerminator = 1;
5250 let isBranch = 1;
5251 let isPredicatedNew = 1;
5252 let cofRelax1 = 1;
5253 let cofRelax2 = 1;
5254 let cofMax1 = 1;
5255 let Defs = [PC];
5256 let isTaken = Inst{12};
5257 }
5258 def J2_jumprnzpt : HInst<
5259 (outs),
5260 (ins IntRegs:$Rs32, b13_2Imm:$Ii),
5261 "if ($Rs32==#0) jump:t $Ii",
5262 tc_d9d43ecb, TypeCR>, Enc_0fa531 {
5263 let Inst{0-0} = 0b0;
5264 let Inst{12-12} = 0b1;
5265 let Inst{31-22} = 0b0110000110;
5266 let isPredicated = 1;
5267 let isTerminator = 1;
5268 let isBranch = 1;
5269 let isPredicatedNew = 1;
5270 let cofRelax1 = 1;
5271 let cofRelax2 = 1;
5272 let cofMax1 = 1;
5273 let Defs = [PC];
5274 let isTaken = Inst{12};
5275 }
5276 def J2_jumprt : HInst<
5277 (outs),
5278 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5279 "if ($Pu4) jumpr:nt $Rs32",
5280 tc_85c9c08f, TypeJ>, Enc_88d4d9, PredNewRel {
5281 let Inst{7-0} = 0b00000000;
5282 let Inst{13-10} = 0b0000;
5283 let Inst{31-21} = 0b01010011010;
5284 let isPredicated = 1;
5285 let isTerminator = 1;
5286 let isIndirectBranch = 1;
5287 let isBranch = 1;
5288 let cofMax1 = 1;
5289 let Defs = [PC];
5290 let InputType = "reg";
5291 let BaseOpcode = "J2_jumpr";
5292 let isTaken = Inst{12};
5293 }
5294 def J2_jumprt_nopred_map : HInst<
5295 (outs),
5296 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5297 "if ($Pu4) jumpr $Rs32",
5298 tc_85c9c08f, TypeMAPPING>, Requires<[HasV60]> {
5299 let isPseudo = 1;
5300 let isCodeGenOnly = 1;
5301 }
5302 def J2_jumprtnew : HInst<
5303 (outs),
5304 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5305 "if ($Pu4.new) jumpr:nt $Rs32",
5306 tc_b51dc29a, TypeJ>, Enc_88d4d9, PredNewRel {
5307 let Inst{7-0} = 0b00000000;
5308 let Inst{13-10} = 0b0010;
5309 let Inst{31-21} = 0b01010011010;
5310 let isPredicated = 1;
5311 let isTerminator = 1;
5312 let isIndirectBranch = 1;
5313 let isBranch = 1;
5314 let isPredicatedNew = 1;
5315 let cofMax1 = 1;
5316 let Defs = [PC];
5317 let InputType = "reg";
5318 let BaseOpcode = "J2_jumpr";
5319 let isTaken = Inst{12};
5320 }
5321 def J2_jumprtnewpt : HInst<
5322 (outs),
5323 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5324 "if ($Pu4.new) jumpr:t $Rs32",
5325 tc_b51dc29a, TypeJ>, Enc_88d4d9, PredNewRel {
5326 let Inst{7-0} = 0b00000000;
5327 let Inst{13-10} = 0b0110;
5328 let Inst{31-21} = 0b01010011010;
5329 let isPredicated = 1;
5330 let isTerminator = 1;
5331 let isIndirectBranch = 1;
5332 let isBranch = 1;
5333 let isPredicatedNew = 1;
5334 let cofMax1 = 1;
5335 let Defs = [PC];
5336 let InputType = "reg";
5337 let BaseOpcode = "J2_jumpr";
5338 let isTaken = Inst{12};
5339 }
5340 def J2_jumprtpt : HInst<
5341 (outs),
5342 (ins PredRegs:$Pu4, IntRegs:$Rs32),
5343 "if ($Pu4) jumpr:t $Rs32",
5344 tc_e78647bd, TypeJ>, Enc_88d4d9, Requires<[HasV60]>, PredNewRel {
5345 let Inst{7-0} = 0b00000000;
5346 let Inst{13-10} = 0b0100;
5347 let Inst{31-21} = 0b01010011010;
5348 let isPredicated = 1;
5349 let isTerminator = 1;
5350 let isIndirectBranch = 1;
5351 let isBranch = 1;
5352 let cofMax1 = 1;
5353 let Defs = [PC];
5354 let InputType = "reg";
5355 let BaseOpcode = "J2_jumpr";
5356 let isTaken = Inst{12};
5357 }
5358 def J2_jumprz : HInst<
5359 (outs),
5360 (ins IntRegs:$Rs32, b13_2Imm:$Ii),
5361 "if ($Rs32!=#0) jump:nt $Ii",
5362 tc_d9d43ecb, TypeCR>, Enc_0fa531 {
5363 let Inst{0-0} = 0b0;
5364 let Inst{12-12} = 0b0;
5365 let Inst{31-22} = 0b0110000100;
5366 let isPredicated = 1;
5367 let isTerminator = 1;
5368 let isBranch = 1;
5369 let isPredicatedNew = 1;
5370 let cofRelax1 = 1;
5371 let cofRelax2 = 1;
5372 let cofMax1 = 1;
5373 let Defs = [PC];
5374 let isTaken = Inst{12};
5375 }
5376 def J2_jumprzpt : HInst<
5377 (outs),
5378 (ins IntRegs:$Rs32, b13_2Imm:$Ii),
5379 "if ($Rs32!=#0) jump:t $Ii",
5380 tc_d9d43ecb, TypeCR>, Enc_0fa531 {
5381 let Inst{0-0} = 0b0;
5382 let Inst{12-12} = 0b1;
5383 let Inst{31-22} = 0b0110000100;
5384 let isPredicated = 1;
5385 let isTerminator = 1;
5386 let isBranch = 1;
5387 let isPredicatedNew = 1;
5388 let cofRelax1 = 1;
5389 let cofRelax2 = 1;
5390 let cofMax1 = 1;
5391 let Defs = [PC];
5392 let isTaken = Inst{12};
5393 }
5394 def J2_jumpt : HInst<
5395 (outs),
5396 (ins PredRegs:$Pu4, b30_2Imm:$Ii),
5397 "if ($Pu4) jump:nt $Ii",
5398 tc_db2bce9c, TypeJ>, Enc_daea09, PredNewRel {
5399 let Inst{0-0} = 0b0;
5400 let Inst{12-10} = 0b000;
5401 let Inst{21-21} = 0b0;
5402 let Inst{31-24} = 0b01011100;
5403 let isPredicated = 1;
5404 let isTerminator = 1;
5405 let isBranch = 1;
5406 let cofRelax1 = 1;
5407 let cofRelax2 = 1;
5408 let cofMax1 = 1;
5409 let Defs = [PC];
5410 let InputType = "imm";
5411 let BaseOpcode = "J2_jump";
5412 let isTaken = Inst{12};
5413 let isExtendable = 1;
5414 let opExtendable = 1;
5415 let isExtentSigned = 1;
5416 let opExtentBits = 17;
5417 let opExtentAlign = 2;
5418 }
5419 def J2_jumpt_nopred_map : HInst<
5420 (outs),
5421 (ins PredRegs:$Pu4, b15_2Imm:$Ii),
5422 "if ($Pu4) jump $Ii",
5423 tc_db2bce9c, TypeMAPPING>, Requires<[HasV60]> {
5424 let isPseudo = 1;
5425 let isCodeGenOnly = 1;
5426 }
5427 def J2_jumptnew : HInst<
5428 (outs),
5429 (ins PredRegs:$Pu4, b30_2Imm:$Ii),
5430 "if ($Pu4.new) jump:nt $Ii",
5431 tc_20cdee80, TypeJ>, Enc_daea09, PredNewRel {
5432 let Inst{0-0} = 0b0;
5433 let Inst{12-10} = 0b010;
5434 let Inst{21-21} = 0b0;
5435 let Inst{31-24} = 0b01011100;
5436 let isPredicated = 1;
5437 let isTerminator = 1;
5438 let isBranch = 1;
5439 let isPredicatedNew = 1;
5440 let cofRelax1 = 1;
5441 let cofRelax2 = 1;
5442 let cofMax1 = 1;
5443 let Defs = [PC];
5444 let InputType = "imm";
5445 let BaseOpcode = "J2_jump";
5446 let isTaken = Inst{12};
5447 let isExtendable = 1;
5448 let opExtendable = 1;
5449 let isExtentSigned = 1;
5450 let opExtentBits = 17;
5451 let opExtentAlign = 2;
5452 }
5453 def J2_jumptnewpt : HInst<
5454 (outs),
5455 (ins PredRegs:$Pu4, b30_2Imm:$Ii),
5456 "if ($Pu4.new) jump:t $Ii",
5457 tc_20cdee80, TypeJ>, Enc_daea09, PredNewRel {
5458 let Inst{0-0} = 0b0;
5459 let Inst{12-10} = 0b110;
5460 let Inst{21-21} = 0b0;
5461 let Inst{31-24} = 0b01011100;
5462 let isPredicated = 1;
5463 let isTerminator = 1;
5464 let isBranch = 1;
5465 let isPredicatedNew = 1;
5466 let cofRelax1 = 1;
5467 let cofRelax2 = 1;
5468 let cofMax1 = 1;
5469 let Defs = [PC];
5470 let InputType = "imm";
5471 let BaseOpcode = "J2_jump";
5472 let isTaken = Inst{12};
5473 let isExtendable = 1;
5474 let opExtendable = 1;
5475 let isExtentSigned = 1;
5476 let opExtentBits = 17;
5477 let opExtentAlign = 2;
5478 }
5479 def J2_jumptpt : HInst<
5480 (outs),
5481 (ins PredRegs:$Pu4, b30_2Imm:$Ii),
5482 "if ($Pu4) jump:t $Ii",
5483 tc_cd374165, TypeJ>, Enc_daea09, Requires<[HasV60]>, PredNewRel {
5484 let Inst{0-0} = 0b0;
5485 let Inst{12-10} = 0b100;
5486 let Inst{21-21} = 0b0;
5487 let Inst{31-24} = 0b01011100;
5488 let isPredicated = 1;
5489 let isTerminator = 1;
5490 let isBranch = 1;
5491 let cofRelax1 = 1;
5492 let cofRelax2 = 1;
5493 let cofMax1 = 1;
5494 let Defs = [PC];
5495 let InputType = "imm";
5496 let BaseOpcode = "J2_jump";
5497 let isTaken = Inst{12};
5498 let isExtendable = 1;
5499 let opExtendable = 1;
5500 let isExtentSigned = 1;
5501 let opExtentBits = 17;
5502 let opExtentAlign = 2;
5503 }
5504 def J2_loop0i : HInst<
5505 (outs),
5506 (ins b30_2Imm:$Ii, u10_0Imm:$II),
5507 "loop0($Ii,#$II)",
5508 tc_a9d88b22, TypeCR>, Enc_4dc228 {
5509 let Inst{2-2} = 0b0;
5510 let Inst{13-13} = 0b0;
5511 let Inst{31-21} = 0b01101001000;
5512 let cofRelax1 = 1;
5513 let cofRelax2 = 1;
5514 let Defs = [LC0, SA0, USR];
5515 let isExtendable = 1;
5516 let opExtendable = 0;
5517 let isExtentSigned = 1;
5518 let opExtentBits = 9;
5519 let opExtentAlign = 2;
5520 }
5521 def J2_loop0r : HInst<
5522 (outs),
5523 (ins b30_2Imm:$Ii, IntRegs:$Rs32),
5524 "loop0($Ii,$Rs32)",
5525 tc_df3319ed, 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} = 0b01100000000;
5530 let cofRelax1 = 1;
5531 let cofRelax2 = 1;
5532 let Defs = [LC0, SA0, USR];
5533 let isExtendable = 1;
5534 let opExtendable = 0;
5535 let isExtentSigned = 1;
5536 let opExtentBits = 9;
5537 let opExtentAlign = 2;
5538 }
5539 def J2_loop1i : HInst<
5540 (outs),
5541 (ins b30_2Imm:$Ii, u10_0Imm:$II),
5542 "loop1($Ii,#$II)",
5543 tc_a9d88b22, TypeCR>, Enc_4dc228 {
5544 let Inst{2-2} = 0b0;
5545 let Inst{13-13} = 0b0;
5546 let Inst{31-21} = 0b01101001001;
5547 let cofRelax1 = 1;
5548 let cofRelax2 = 1;
5549 let Defs = [LC1, SA1];
5550 let isExtendable = 1;
5551 let opExtendable = 0;
5552 let isExtentSigned = 1;
5553 let opExtentBits = 9;
5554 let opExtentAlign = 2;
5555 }
5556 def J2_loop1r : HInst<
5557 (outs),
5558 (ins b30_2Imm:$Ii, IntRegs:$Rs32),
5559 "loop1($Ii,$Rs32)",
5560 tc_df3319ed, TypeCR>, Enc_864a5a {
5561 let Inst{2-0} = 0b000;
5562 let Inst{7-5} = 0b000;
5563 let Inst{13-13} = 0b0;
5564 let Inst{31-21} = 0b01100000001;
5565 let cofRelax1 = 1;
5566 let cofRelax2 = 1;
5567 let Defs = [LC1, SA1];
5568 let isExtendable = 1;
5569 let opExtendable = 0;
5570 let isExtentSigned = 1;
5571 let opExtentBits = 9;
5572 let opExtentAlign = 2;
5573 }
5574 def J2_pause : HInst<
5575 (outs),
5576 (ins u8_0Imm:$Ii),
5577 "pause(#$Ii)",
5578 tc_8d9d0154, TypeJ>, Enc_a51a9a {
5579 let Inst{1-0} = 0b00;
5580 let Inst{7-5} = 0b000;
5581 let Inst{13-13} = 0b0;
5582 let Inst{31-16} = 0b0101010001000000;
5583 let isSolo = 1;
5584 }
5585 def J2_ploop1si : HInst<
5586 (outs),
5587 (ins b30_2Imm:$Ii, u10_0Imm:$II),
5588 "p3 = sp1loop0($Ii,#$II)",
5589 tc_1c4528a2, TypeCR>, Enc_4dc228 {
5590 let Inst{2-2} = 0b0;
5591 let Inst{13-13} = 0b0;
5592 let Inst{31-21} = 0b01101001101;
5593 let isPredicateLate = 1;
5594 let cofRelax1 = 1;
5595 let cofRelax2 = 1;
5596 let Defs = [LC0, P3, SA0, USR];
5597 let isExtendable = 1;
5598 let opExtendable = 0;
5599 let isExtentSigned = 1;
5600 let opExtentBits = 9;
5601 let opExtentAlign = 2;
5602 }
5603 def J2_ploop1sr : HInst<
5604 (outs),
5605 (ins b30_2Imm:$Ii, IntRegs:$Rs32),
5606 "p3 = sp1loop0($Ii,$Rs32)",
5607 tc_32779c6f, TypeCR>, Enc_864a5a {
5608 let Inst{2-0} = 0b000;
5609 let Inst{7-5} = 0b000;
5610 let Inst{13-13} = 0b0;
5611 let Inst{31-21} = 0b01100000101;
5612 let isPredicateLate = 1;
5613 let cofRelax1 = 1;
5614 let cofRelax2 = 1;
5615 let Defs = [LC0, P3, SA0, USR];
5616 let isExtendable = 1;
5617 let opExtendable = 0;
5618 let isExtentSigned = 1;
5619 let opExtentBits = 9;
5620 let opExtentAlign = 2;
5621 }
5622 def J2_ploop2si : HInst<
5623 (outs),
5624 (ins b30_2Imm:$Ii, u10_0Imm:$II),
5625 "p3 = sp2loop0($Ii,#$II)",
5626 tc_1c4528a2, TypeCR>, Enc_4dc228 {
5627 let Inst{2-2} = 0b0;
5628 let Inst{13-13} = 0b0;
5629 let Inst{31-21} = 0b01101001110;
5630 let isPredicateLate = 1;
5631 let cofRelax1 = 1;
5632 let cofRelax2 = 1;
5633 let Defs = [LC0, P3, SA0, USR];
5634 let isExtendable = 1;
5635 let opExtendable = 0;
5636 let isExtentSigned = 1;
5637 let opExtentBits = 9;
5638 let opExtentAlign = 2;
5639 }
5640 def J2_ploop2sr : HInst<
5641 (outs),
5642 (ins b30_2Imm:$Ii, IntRegs:$Rs32),
5643 "p3 = sp2loop0($Ii,$Rs32)",
5644 tc_32779c6f, TypeCR>, Enc_864a5a {
5645 let Inst{2-0} = 0b000;
5646 let Inst{7-5} = 0b000;
5647 let Inst{13-13} = 0b0;
5648 let Inst{31-21} = 0b01100000110;
5649 let isPredicateLate = 1;
5650 let cofRelax1 = 1;
5651 let cofRelax2 = 1;
5652 let Defs = [LC0, P3, SA0, USR];
5653 let isExtendable = 1;
5654 let opExtendable = 0;
5655 let isExtentSigned = 1;
5656 let opExtentBits = 9;
5657 let opExtentAlign = 2;
5658 }
5659 def J2_ploop3si : HInst<
5660 (outs),
5661 (ins b30_2Imm:$Ii, u10_0Imm:$II),
5662 "p3 = sp3loop0($Ii,#$II)",
5663 tc_1c4528a2, TypeCR>, Enc_4dc228 {
5664 let Inst{2-2} = 0b0;
5665 let Inst{13-13} = 0b0;
5666 let Inst{31-21} = 0b01101001111;
5667 let isPredicateLate = 1;
5668 let cofRelax1 = 1;
5669 let cofRelax2 = 1;
5670 let Defs = [LC0, P3, SA0, USR];
5671 let isExtendable = 1;
5672 let opExtendable = 0;
5673 let isExtentSigned = 1;
5674 let opExtentBits = 9;
5675 let opExtentAlign = 2;
5676 }
5677 def J2_ploop3sr : HInst<
5678 (outs),
5679 (ins b30_2Imm:$Ii, IntRegs:$Rs32),
5680 "p3 = sp3loop0($Ii,$Rs32)",
5681 tc_32779c6f, TypeCR>, Enc_864a5a {
5682 let Inst{2-0} = 0b000;
5683 let Inst{7-5} = 0b000;
5684 let Inst{13-13} = 0b0;
5685 let Inst{31-21} = 0b01100000111;
5686 let isPredicateLate = 1;
5687 let cofRelax1 = 1;
5688 let cofRelax2 = 1;
5689 let Defs = [LC0, P3, SA0, USR];
5690 let isExtendable = 1;
5691 let opExtendable = 0;
5692 let isExtentSigned = 1;
5693 let opExtentBits = 9;
5694 let opExtentAlign = 2;
5695 }
5696 def J2_trap0 : HInst<
5697 (outs),
5698 (ins u8_0Imm:$Ii),
5699 "trap0(#$Ii)",
5700 tc_fc3999b4, TypeJ>, Enc_a51a9a {
5701 let Inst{1-0} = 0b00;
5702 let Inst{7-5} = 0b000;
5703 let Inst{13-13} = 0b0;
5704 let Inst{31-16} = 0b0101010000000000;
5705 let isSolo = 1;
5706 let hasSideEffects = 1;
5707 }
5708 def J2_trap1 : HInst<
5709 (outs IntRegs:$Rx32),
5710 (ins IntRegs:$Rx32in, u8_0Imm:$Ii),
5711 "trap1($Rx32,#$Ii)",
5712 tc_b9e09e03, TypeJ>, Enc_33f8ba {
5713 let Inst{1-0} = 0b00;
5714 let Inst{7-5} = 0b000;
5715 let Inst{13-13} = 0b0;
5716 let Inst{31-21} = 0b01010100100;
5717 let hasNewValue = 1;
5718 let opNewValue = 0;
5719 let isSolo = 1;
5720 let Uses = [GOSP];
5721 let Defs = [GOSP, PC];
5722 let hasSideEffects = 1;
5723 let Constraints = "$Rx32 = $Rx32in";
5724 }
5725 def J2_trap1_noregmap : HInst<
5726 (outs),
5727 (ins u8_0Imm:$Ii),
5728 "trap1(#$Ii)",
5729 tc_b9e09e03, TypeMAPPING> {
5730 let hasSideEffects = 1;
5731 let isPseudo = 1;
5732 let isCodeGenOnly = 1;
5733 }
5734 def J4_cmpeq_f_jumpnv_nt : HInst<
5735 (outs),
5736 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
5737 "if (!cmp.eq($Ns8.new,$Rt32)) jump:nt $Ii",
5738 tc_9bfd761f, TypeNCJ>, Enc_c9a18e, PredRel {
5739 let Inst{0-0} = 0b0;
5740 let Inst{13-13} = 0b0;
5741 let Inst{19-19} = 0b0;
5742 let Inst{31-22} = 0b0010000001;
5743 let isPredicated = 1;
5744 let isPredicatedFalse = 1;
5745 let isTerminator = 1;
5746 let isBranch = 1;
5747 let isNewValue = 1;
5748 let cofMax1 = 1;
5749 let isRestrictNoSlot1Store = 1;
5750 let Defs = [PC];
5751 let BaseOpcode = "J4_cmpeqr";
5752 let isTaken = Inst{13};
5753 let isExtendable = 1;
5754 let opExtendable = 2;
5755 let isExtentSigned = 1;
5756 let opExtentBits = 11;
5757 let opExtentAlign = 2;
5758 let opNewValue = 0;
5759 }
5760 def J4_cmpeq_f_jumpnv_t : HInst<
5761 (outs),
5762 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
5763 "if (!cmp.eq($Ns8.new,$Rt32)) jump:t $Ii",
5764 tc_9bfd761f, TypeNCJ>, Enc_c9a18e, PredRel {
5765 let Inst{0-0} = 0b0;
5766 let Inst{13-13} = 0b1;
5767 let Inst{19-19} = 0b0;
5768 let Inst{31-22} = 0b0010000001;
5769 let isPredicated = 1;
5770 let isPredicatedFalse = 1;
5771 let isTerminator = 1;
5772 let isBranch = 1;
5773 let isNewValue = 1;
5774 let cofMax1 = 1;
5775 let isRestrictNoSlot1Store = 1;
5776 let Defs = [PC];
5777 let BaseOpcode = "J4_cmpeqr";
5778 let isTaken = Inst{13};
5779 let isExtendable = 1;
5780 let opExtendable = 2;
5781 let isExtentSigned = 1;
5782 let opExtentBits = 11;
5783 let opExtentAlign = 2;
5784 let opNewValue = 0;
5785 }
5786 def J4_cmpeq_fp0_jump_nt : HInst<
5787 (outs),
5788 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
5789 "p0 = cmp.eq($Rs16,$Rt16); if (!p0.new) jump:nt $Ii",
5790 tc_56336eb0, TypeCJ>, Enc_6a5972, PredRel {
5791 let Inst{0-0} = 0b0;
5792 let Inst{13-12} = 0b00;
5793 let Inst{31-22} = 0b0001010001;
5794 let isPredicated = 1;
5795 let isPredicatedFalse = 1;
5796 let isTerminator = 1;
5797 let isBranch = 1;
5798 let isPredicatedNew = 1;
5799 let cofRelax1 = 1;
5800 let cofRelax2 = 1;
5801 let cofMax1 = 1;
5802 let Uses = [P0];
5803 let Defs = [P0, PC];
5804 let BaseOpcode = "J4_cmpeqp0";
5805 let isTaken = Inst{13};
5806 let isExtendable = 1;
5807 let opExtendable = 2;
5808 let isExtentSigned = 1;
5809 let opExtentBits = 11;
5810 let opExtentAlign = 2;
5811 }
5812 def J4_cmpeq_fp0_jump_t : HInst<
5813 (outs),
5814 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
5815 "p0 = cmp.eq($Rs16,$Rt16); if (!p0.new) jump:t $Ii",
5816 tc_56336eb0, TypeCJ>, Enc_6a5972, PredRel {
5817 let Inst{0-0} = 0b0;
5818 let Inst{13-12} = 0b10;
5819 let Inst{31-22} = 0b0001010001;
5820 let isPredicated = 1;
5821 let isPredicatedFalse = 1;
5822 let isTerminator = 1;
5823 let isBranch = 1;
5824 let isPredicatedNew = 1;
5825 let cofRelax1 = 1;
5826 let cofRelax2 = 1;
5827 let cofMax1 = 1;
5828 let Uses = [P0];
5829 let Defs = [P0, PC];
5830 let BaseOpcode = "J4_cmpeqp0";
5831 let isTaken = Inst{13};
5832 let isExtendable = 1;
5833 let opExtendable = 2;
5834 let isExtentSigned = 1;
5835 let opExtentBits = 11;
5836 let opExtentAlign = 2;
5837 }
5838 def J4_cmpeq_fp1_jump_nt : HInst<
5839 (outs),
5840 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
5841 "p1 = cmp.eq($Rs16,$Rt16); if (!p1.new) jump:nt $Ii",
5842 tc_56336eb0, TypeCJ>, Enc_6a5972, PredRel {
5843 let Inst{0-0} = 0b0;
5844 let Inst{13-12} = 0b01;
5845 let Inst{31-22} = 0b0001010001;
5846 let isPredicated = 1;
5847 let isPredicatedFalse = 1;
5848 let isTerminator = 1;
5849 let isBranch = 1;
5850 let isPredicatedNew = 1;
5851 let cofRelax1 = 1;
5852 let cofRelax2 = 1;
5853 let cofMax1 = 1;
5854 let Uses = [P1];
5855 let Defs = [P1, PC];
5856 let BaseOpcode = "J4_cmpeqp1";
5857 let isTaken = Inst{13};
5858 let isExtendable = 1;
5859 let opExtendable = 2;
5860 let isExtentSigned = 1;
5861 let opExtentBits = 11;
5862 let opExtentAlign = 2;
5863 }
5864 def J4_cmpeq_fp1_jump_t : HInst<
5865 (outs),
5866 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
5867 "p1 = cmp.eq($Rs16,$Rt16); if (!p1.new) jump:t $Ii",
5868 tc_56336eb0, TypeCJ>, Enc_6a5972, PredRel {
5869 let Inst{0-0} = 0b0;
5870 let Inst{13-12} = 0b11;
5871 let Inst{31-22} = 0b0001010001;
5872 let isPredicated = 1;
5873 let isPredicatedFalse = 1;
5874 let isTerminator = 1;
5875 let isBranch = 1;
5876 let isPredicatedNew = 1;
5877 let cofRelax1 = 1;
5878 let cofRelax2 = 1;
5879 let cofMax1 = 1;
5880 let Uses = [P1];
5881 let Defs = [P1, PC];
5882 let BaseOpcode = "J4_cmpeqp1";
5883 let isTaken = Inst{13};
5884 let isExtendable = 1;
5885 let opExtendable = 2;
5886 let isExtentSigned = 1;
5887 let opExtentBits = 11;
5888 let opExtentAlign = 2;
5889 }
5890 def J4_cmpeq_t_jumpnv_nt : HInst<
5891 (outs),
5892 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
5893 "if (cmp.eq($Ns8.new,$Rt32)) jump:nt $Ii",
5894 tc_9bfd761f, TypeNCJ>, Enc_c9a18e, PredRel {
5895 let Inst{0-0} = 0b0;
5896 let Inst{13-13} = 0b0;
5897 let Inst{19-19} = 0b0;
5898 let Inst{31-22} = 0b0010000000;
5899 let isPredicated = 1;
5900 let isTerminator = 1;
5901 let isBranch = 1;
5902 let isNewValue = 1;
5903 let cofMax1 = 1;
5904 let isRestrictNoSlot1Store = 1;
5905 let Defs = [PC];
5906 let BaseOpcode = "J4_cmpeqr";
5907 let isTaken = Inst{13};
5908 let isExtendable = 1;
5909 let opExtendable = 2;
5910 let isExtentSigned = 1;
5911 let opExtentBits = 11;
5912 let opExtentAlign = 2;
5913 let opNewValue = 0;
5914 }
5915 def J4_cmpeq_t_jumpnv_t : HInst<
5916 (outs),
5917 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
5918 "if (cmp.eq($Ns8.new,$Rt32)) jump:t $Ii",
5919 tc_9bfd761f, TypeNCJ>, Enc_c9a18e, PredRel {
5920 let Inst{0-0} = 0b0;
5921 let Inst{13-13} = 0b1;
5922 let Inst{19-19} = 0b0;
5923 let Inst{31-22} = 0b0010000000;
5924 let isPredicated = 1;
5925 let isTerminator = 1;
5926 let isBranch = 1;
5927 let isNewValue = 1;
5928 let cofMax1 = 1;
5929 let isRestrictNoSlot1Store = 1;
5930 let Defs = [PC];
5931 let BaseOpcode = "J4_cmpeqr";
5932 let isTaken = Inst{13};
5933 let isExtendable = 1;
5934 let opExtendable = 2;
5935 let isExtentSigned = 1;
5936 let opExtentBits = 11;
5937 let opExtentAlign = 2;
5938 let opNewValue = 0;
5939 }
5940 def J4_cmpeq_tp0_jump_nt : HInst<
5941 (outs),
5942 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
5943 "p0 = cmp.eq($Rs16,$Rt16); if (p0.new) jump:nt $Ii",
5944 tc_56336eb0, TypeCJ>, Enc_6a5972, PredRel {
5945 let Inst{0-0} = 0b0;
5946 let Inst{13-12} = 0b00;
5947 let Inst{31-22} = 0b0001010000;
5948 let isPredicated = 1;
5949 let isTerminator = 1;
5950 let isBranch = 1;
5951 let isPredicatedNew = 1;
5952 let cofRelax1 = 1;
5953 let cofRelax2 = 1;
5954 let cofMax1 = 1;
5955 let Uses = [P0];
5956 let Defs = [P0, PC];
5957 let BaseOpcode = "J4_cmpeqp0";
5958 let isTaken = Inst{13};
5959 let isExtendable = 1;
5960 let opExtendable = 2;
5961 let isExtentSigned = 1;
5962 let opExtentBits = 11;
5963 let opExtentAlign = 2;
5964 }
5965 def J4_cmpeq_tp0_jump_t : HInst<
5966 (outs),
5967 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
5968 "p0 = cmp.eq($Rs16,$Rt16); if (p0.new) jump:t $Ii",
5969 tc_56336eb0, TypeCJ>, Enc_6a5972, PredRel {
5970 let Inst{0-0} = 0b0;
5971 let Inst{13-12} = 0b10;
5972 let Inst{31-22} = 0b0001010000;
5973 let isPredicated = 1;
5974 let isTerminator = 1;
5975 let isBranch = 1;
5976 let isPredicatedNew = 1;
5977 let cofRelax1 = 1;
5978 let cofRelax2 = 1;
5979 let cofMax1 = 1;
5980 let Uses = [P0];
5981 let Defs = [P0, PC];
5982 let BaseOpcode = "J4_cmpeqp0";
5983 let isTaken = Inst{13};
5984 let isExtendable = 1;
5985 let opExtendable = 2;
5986 let isExtentSigned = 1;
5987 let opExtentBits = 11;
5988 let opExtentAlign = 2;
5989 }
5990 def J4_cmpeq_tp1_jump_nt : HInst<
5991 (outs),
5992 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
5993 "p1 = cmp.eq($Rs16,$Rt16); if (p1.new) jump:nt $Ii",
5994 tc_56336eb0, TypeCJ>, Enc_6a5972, PredRel {
5995 let Inst{0-0} = 0b0;
5996 let Inst{13-12} = 0b01;
5997 let Inst{31-22} = 0b0001010000;
5998 let isPredicated = 1;
5999 let isTerminator = 1;
6000 let isBranch = 1;
6001 let isPredicatedNew = 1;
6002 let cofRelax1 = 1;
6003 let cofRelax2 = 1;
6004 let cofMax1 = 1;
6005 let Uses = [P1];
6006 let Defs = [P1, PC];
6007 let BaseOpcode = "J4_cmpeqp1";
6008 let isTaken = Inst{13};
6009 let isExtendable = 1;
6010 let opExtendable = 2;
6011 let isExtentSigned = 1;
6012 let opExtentBits = 11;
6013 let opExtentAlign = 2;
6014 }
6015 def J4_cmpeq_tp1_jump_t : HInst<
6016 (outs),
6017 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6018 "p1 = cmp.eq($Rs16,$Rt16); if (p1.new) jump:t $Ii",
6019 tc_56336eb0, TypeCJ>, Enc_6a5972, PredRel {
6020 let Inst{0-0} = 0b0;
6021 let Inst{13-12} = 0b11;
6022 let Inst{31-22} = 0b0001010000;
6023 let isPredicated = 1;
6024 let isTerminator = 1;
6025 let isBranch = 1;
6026 let isPredicatedNew = 1;
6027 let cofRelax1 = 1;
6028 let cofRelax2 = 1;
6029 let cofMax1 = 1;
6030 let Uses = [P1];
6031 let Defs = [P1, PC];
6032 let BaseOpcode = "J4_cmpeqp1";
6033 let isTaken = Inst{13};
6034 let isExtendable = 1;
6035 let opExtendable = 2;
6036 let isExtentSigned = 1;
6037 let opExtentBits = 11;
6038 let opExtentAlign = 2;
6039 }
6040 def J4_cmpeqi_f_jumpnv_nt : HInst<
6041 (outs),
6042 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
6043 "if (!cmp.eq($Ns8.new,#$II)) jump:nt $Ii",
6044 tc_bd8382d1, TypeNCJ>, Enc_eafd18, PredRel {
6045 let Inst{0-0} = 0b0;
6046 let Inst{13-13} = 0b0;
6047 let Inst{19-19} = 0b0;
6048 let Inst{31-22} = 0b0010010001;
6049 let isPredicated = 1;
6050 let isPredicatedFalse = 1;
6051 let isTerminator = 1;
6052 let isBranch = 1;
6053 let isNewValue = 1;
6054 let cofMax1 = 1;
6055 let isRestrictNoSlot1Store = 1;
6056 let Defs = [PC];
6057 let BaseOpcode = "J4_cmpeqi";
6058 let isTaken = Inst{13};
6059 let isExtendable = 1;
6060 let opExtendable = 2;
6061 let isExtentSigned = 1;
6062 let opExtentBits = 11;
6063 let opExtentAlign = 2;
6064 let opNewValue = 0;
6065 }
6066 def J4_cmpeqi_f_jumpnv_t : HInst<
6067 (outs),
6068 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
6069 "if (!cmp.eq($Ns8.new,#$II)) jump:t $Ii",
6070 tc_bd8382d1, TypeNCJ>, Enc_eafd18, PredRel {
6071 let Inst{0-0} = 0b0;
6072 let Inst{13-13} = 0b1;
6073 let Inst{19-19} = 0b0;
6074 let Inst{31-22} = 0b0010010001;
6075 let isPredicated = 1;
6076 let isPredicatedFalse = 1;
6077 let isTerminator = 1;
6078 let isBranch = 1;
6079 let isNewValue = 1;
6080 let cofMax1 = 1;
6081 let isRestrictNoSlot1Store = 1;
6082 let Defs = [PC];
6083 let BaseOpcode = "J4_cmpeqi";
6084 let isTaken = Inst{13};
6085 let isExtendable = 1;
6086 let opExtendable = 2;
6087 let isExtentSigned = 1;
6088 let opExtentBits = 11;
6089 let opExtentAlign = 2;
6090 let opNewValue = 0;
6091 }
6092 def J4_cmpeqi_fp0_jump_nt : HInst<
6093 (outs),
6094 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6095 "p0 = cmp.eq($Rs16,#$II); if (!p0.new) jump:nt $Ii",
6096 tc_3d495a39, TypeCJ>, Enc_14d27a, PredRel {
6097 let Inst{0-0} = 0b0;
6098 let Inst{13-13} = 0b0;
6099 let Inst{31-22} = 0b0001000001;
6100 let isPredicated = 1;
6101 let isPredicatedFalse = 1;
6102 let isTerminator = 1;
6103 let isBranch = 1;
6104 let isPredicatedNew = 1;
6105 let cofRelax1 = 1;
6106 let cofRelax2 = 1;
6107 let cofMax1 = 1;
6108 let Uses = [P0];
6109 let Defs = [P0, PC];
6110 let BaseOpcode = "J4_cmpeqip0";
6111 let isTaken = Inst{13};
6112 let isExtendable = 1;
6113 let opExtendable = 2;
6114 let isExtentSigned = 1;
6115 let opExtentBits = 11;
6116 let opExtentAlign = 2;
6117 }
6118 def J4_cmpeqi_fp0_jump_t : HInst<
6119 (outs),
6120 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6121 "p0 = cmp.eq($Rs16,#$II); if (!p0.new) jump:t $Ii",
6122 tc_3d495a39, TypeCJ>, Enc_14d27a, PredRel {
6123 let Inst{0-0} = 0b0;
6124 let Inst{13-13} = 0b1;
6125 let Inst{31-22} = 0b0001000001;
6126 let isPredicated = 1;
6127 let isPredicatedFalse = 1;
6128 let isTerminator = 1;
6129 let isBranch = 1;
6130 let isPredicatedNew = 1;
6131 let cofRelax1 = 1;
6132 let cofRelax2 = 1;
6133 let cofMax1 = 1;
6134 let Uses = [P0];
6135 let Defs = [P0, PC];
6136 let BaseOpcode = "J4_cmpeqip0";
6137 let isTaken = Inst{13};
6138 let isExtendable = 1;
6139 let opExtendable = 2;
6140 let isExtentSigned = 1;
6141 let opExtentBits = 11;
6142 let opExtentAlign = 2;
6143 }
6144 def J4_cmpeqi_fp1_jump_nt : HInst<
6145 (outs),
6146 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6147 "p1 = cmp.eq($Rs16,#$II); if (!p1.new) jump:nt $Ii",
6148 tc_3d495a39, TypeCJ>, Enc_14d27a, PredRel {
6149 let Inst{0-0} = 0b0;
6150 let Inst{13-13} = 0b0;
6151 let Inst{31-22} = 0b0001001001;
6152 let isPredicated = 1;
6153 let isPredicatedFalse = 1;
6154 let isTerminator = 1;
6155 let isBranch = 1;
6156 let isPredicatedNew = 1;
6157 let cofRelax1 = 1;
6158 let cofRelax2 = 1;
6159 let cofMax1 = 1;
6160 let Uses = [P1];
6161 let Defs = [P1, PC];
6162 let BaseOpcode = "J4_cmpeqip1";
6163 let isTaken = Inst{13};
6164 let isExtendable = 1;
6165 let opExtendable = 2;
6166 let isExtentSigned = 1;
6167 let opExtentBits = 11;
6168 let opExtentAlign = 2;
6169 }
6170 def J4_cmpeqi_fp1_jump_t : HInst<
6171 (outs),
6172 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6173 "p1 = cmp.eq($Rs16,#$II); if (!p1.new) jump:t $Ii",
6174 tc_3d495a39, TypeCJ>, Enc_14d27a, PredRel {
6175 let Inst{0-0} = 0b0;
6176 let Inst{13-13} = 0b1;
6177 let Inst{31-22} = 0b0001001001;
6178 let isPredicated = 1;
6179 let isPredicatedFalse = 1;
6180 let isTerminator = 1;
6181 let isBranch = 1;
6182 let isPredicatedNew = 1;
6183 let cofRelax1 = 1;
6184 let cofRelax2 = 1;
6185 let cofMax1 = 1;
6186 let Uses = [P1];
6187 let Defs = [P1, PC];
6188 let BaseOpcode = "J4_cmpeqip1";
6189 let isTaken = Inst{13};
6190 let isExtendable = 1;
6191 let opExtendable = 2;
6192 let isExtentSigned = 1;
6193 let opExtentBits = 11;
6194 let opExtentAlign = 2;
6195 }
6196 def J4_cmpeqi_t_jumpnv_nt : HInst<
6197 (outs),
6198 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
6199 "if (cmp.eq($Ns8.new,#$II)) jump:nt $Ii",
6200 tc_bd8382d1, TypeNCJ>, Enc_eafd18, PredRel {
6201 let Inst{0-0} = 0b0;
6202 let Inst{13-13} = 0b0;
6203 let Inst{19-19} = 0b0;
6204 let Inst{31-22} = 0b0010010000;
6205 let isPredicated = 1;
6206 let isTerminator = 1;
6207 let isBranch = 1;
6208 let isNewValue = 1;
6209 let cofMax1 = 1;
6210 let isRestrictNoSlot1Store = 1;
6211 let Defs = [PC];
6212 let BaseOpcode = "J4_cmpeqi";
6213 let isTaken = Inst{13};
6214 let isExtendable = 1;
6215 let opExtendable = 2;
6216 let isExtentSigned = 1;
6217 let opExtentBits = 11;
6218 let opExtentAlign = 2;
6219 let opNewValue = 0;
6220 }
6221 def J4_cmpeqi_t_jumpnv_t : HInst<
6222 (outs),
6223 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
6224 "if (cmp.eq($Ns8.new,#$II)) jump:t $Ii",
6225 tc_bd8382d1, TypeNCJ>, Enc_eafd18, PredRel {
6226 let Inst{0-0} = 0b0;
6227 let Inst{13-13} = 0b1;
6228 let Inst{19-19} = 0b0;
6229 let Inst{31-22} = 0b0010010000;
6230 let isPredicated = 1;
6231 let isTerminator = 1;
6232 let isBranch = 1;
6233 let isNewValue = 1;
6234 let cofMax1 = 1;
6235 let isRestrictNoSlot1Store = 1;
6236 let Defs = [PC];
6237 let BaseOpcode = "J4_cmpeqi";
6238 let isTaken = Inst{13};
6239 let isExtendable = 1;
6240 let opExtendable = 2;
6241 let isExtentSigned = 1;
6242 let opExtentBits = 11;
6243 let opExtentAlign = 2;
6244 let opNewValue = 0;
6245 }
6246 def J4_cmpeqi_tp0_jump_nt : HInst<
6247 (outs),
6248 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6249 "p0 = cmp.eq($Rs16,#$II); if (p0.new) jump:nt $Ii",
6250 tc_3d495a39, TypeCJ>, Enc_14d27a, PredRel {
6251 let Inst{0-0} = 0b0;
6252 let Inst{13-13} = 0b0;
6253 let Inst{31-22} = 0b0001000000;
6254 let isPredicated = 1;
6255 let isTerminator = 1;
6256 let isBranch = 1;
6257 let isPredicatedNew = 1;
6258 let cofRelax1 = 1;
6259 let cofRelax2 = 1;
6260 let cofMax1 = 1;
6261 let Uses = [P0];
6262 let Defs = [P0, PC];
6263 let BaseOpcode = "J4_cmpeqip0";
6264 let isTaken = Inst{13};
6265 let isExtendable = 1;
6266 let opExtendable = 2;
6267 let isExtentSigned = 1;
6268 let opExtentBits = 11;
6269 let opExtentAlign = 2;
6270 }
6271 def J4_cmpeqi_tp0_jump_t : HInst<
6272 (outs),
6273 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6274 "p0 = cmp.eq($Rs16,#$II); if (p0.new) jump:t $Ii",
6275 tc_3d495a39, TypeCJ>, Enc_14d27a, PredRel {
6276 let Inst{0-0} = 0b0;
6277 let Inst{13-13} = 0b1;
6278 let Inst{31-22} = 0b0001000000;
6279 let isPredicated = 1;
6280 let isTerminator = 1;
6281 let isBranch = 1;
6282 let isPredicatedNew = 1;
6283 let cofRelax1 = 1;
6284 let cofRelax2 = 1;
6285 let cofMax1 = 1;
6286 let Uses = [P0];
6287 let Defs = [P0, PC];
6288 let BaseOpcode = "J4_cmpeqip0";
6289 let isTaken = Inst{13};
6290 let isExtendable = 1;
6291 let opExtendable = 2;
6292 let isExtentSigned = 1;
6293 let opExtentBits = 11;
6294 let opExtentAlign = 2;
6295 }
6296 def J4_cmpeqi_tp1_jump_nt : HInst<
6297 (outs),
6298 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6299 "p1 = cmp.eq($Rs16,#$II); if (p1.new) jump:nt $Ii",
6300 tc_3d495a39, TypeCJ>, Enc_14d27a, PredRel {
6301 let Inst{0-0} = 0b0;
6302 let Inst{13-13} = 0b0;
6303 let Inst{31-22} = 0b0001001000;
6304 let isPredicated = 1;
6305 let isTerminator = 1;
6306 let isBranch = 1;
6307 let isPredicatedNew = 1;
6308 let cofRelax1 = 1;
6309 let cofRelax2 = 1;
6310 let cofMax1 = 1;
6311 let Uses = [P1];
6312 let Defs = [P1, PC];
6313 let BaseOpcode = "J4_cmpeqip1";
6314 let isTaken = Inst{13};
6315 let isExtendable = 1;
6316 let opExtendable = 2;
6317 let isExtentSigned = 1;
6318 let opExtentBits = 11;
6319 let opExtentAlign = 2;
6320 }
6321 def J4_cmpeqi_tp1_jump_t : HInst<
6322 (outs),
6323 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
6324 "p1 = cmp.eq($Rs16,#$II); if (p1.new) jump:t $Ii",
6325 tc_3d495a39, TypeCJ>, Enc_14d27a, PredRel {
6326 let Inst{0-0} = 0b0;
6327 let Inst{13-13} = 0b1;
6328 let Inst{31-22} = 0b0001001000;
6329 let isPredicated = 1;
6330 let isTerminator = 1;
6331 let isBranch = 1;
6332 let isPredicatedNew = 1;
6333 let cofRelax1 = 1;
6334 let cofRelax2 = 1;
6335 let cofMax1 = 1;
6336 let Uses = [P1];
6337 let Defs = [P1, PC];
6338 let BaseOpcode = "J4_cmpeqip1";
6339 let isTaken = Inst{13};
6340 let isExtendable = 1;
6341 let opExtendable = 2;
6342 let isExtentSigned = 1;
6343 let opExtentBits = 11;
6344 let opExtentAlign = 2;
6345 }
6346 def J4_cmpeqn1_f_jumpnv_nt : HInst<
6347 (outs),
6348 (ins IntRegs:$Ns8, n1Const:$n1, b30_2Imm:$Ii),
6349 "if (!cmp.eq($Ns8.new,#$n1)) jump:nt $Ii",
6350 tc_bd8382d1, TypeNCJ>, Enc_e90a15, PredRel {
6351 let Inst{0-0} = 0b0;
6352 let Inst{13-8} = 0b000000;
6353 let Inst{19-19} = 0b0;
6354 let Inst{31-22} = 0b0010011001;
6355 let isPredicated = 1;
6356 let isPredicatedFalse = 1;
6357 let isTerminator = 1;
6358 let isBranch = 1;
6359 let isNewValue = 1;
6360 let cofMax1 = 1;
6361 let isRestrictNoSlot1Store = 1;
6362 let Defs = [PC];
6363 let BaseOpcode = "J4_cmpeqn1r";
6364 let isTaken = Inst{13};
6365 let isExtendable = 1;
6366 let opExtendable = 2;
6367 let isExtentSigned = 1;
6368 let opExtentBits = 11;
6369 let opExtentAlign = 2;
6370 let opNewValue = 0;
6371 }
6372 def J4_cmpeqn1_f_jumpnv_t : HInst<
6373 (outs),
6374 (ins IntRegs:$Ns8, n1Const:$n1, b30_2Imm:$Ii),
6375 "if (!cmp.eq($Ns8.new,#$n1)) jump:t $Ii",
6376 tc_bd8382d1, TypeNCJ>, Enc_5a18b3, PredRel {
6377 let Inst{0-0} = 0b0;
6378 let Inst{13-8} = 0b100000;
6379 let Inst{19-19} = 0b0;
6380 let Inst{31-22} = 0b0010011001;
6381 let isPredicated = 1;
6382 let isPredicatedFalse = 1;
6383 let isTerminator = 1;
6384 let isBranch = 1;
6385 let isNewValue = 1;
6386 let cofMax1 = 1;
6387 let isRestrictNoSlot1Store = 1;
6388 let Defs = [PC];
6389 let BaseOpcode = "J4_cmpeqn1r";
6390 let isTaken = Inst{13};
6391 let isExtendable = 1;
6392 let opExtendable = 2;
6393 let isExtentSigned = 1;
6394 let opExtentBits = 11;
6395 let opExtentAlign = 2;
6396 let opNewValue = 0;
6397 }
6398 def J4_cmpeqn1_fp0_jump_nt : HInst<
6399 (outs),
6400 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
6401 "p0 = cmp.eq($Rs16,#$n1); if (!p0.new) jump:nt $Ii",
6402 tc_3d495a39, TypeCJ>, Enc_1de724, PredRel {
6403 let Inst{0-0} = 0b0;
6404 let Inst{13-8} = 0b000000;
6405 let Inst{31-22} = 0b0001000111;
6406 let isPredicated = 1;
6407 let isPredicatedFalse = 1;
6408 let isTerminator = 1;
6409 let isBranch = 1;
6410 let isPredicatedNew = 1;
6411 let cofRelax1 = 1;
6412 let cofRelax2 = 1;
6413 let cofMax1 = 1;
6414 let Uses = [P0];
6415 let Defs = [P0, PC];
6416 let BaseOpcode = "J4_cmpeqn1p0";
6417 let isTaken = Inst{13};
6418 let isExtendable = 1;
6419 let opExtendable = 2;
6420 let isExtentSigned = 1;
6421 let opExtentBits = 11;
6422 let opExtentAlign = 2;
6423 }
6424 def J4_cmpeqn1_fp0_jump_t : HInst<
6425 (outs),
6426 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
6427 "p0 = cmp.eq($Rs16,#$n1); if (!p0.new) jump:t $Ii",
6428 tc_3d495a39, TypeCJ>, Enc_14640c, PredRel {
6429 let Inst{0-0} = 0b0;
6430 let Inst{13-8} = 0b100000;
6431 let Inst{31-22} = 0b0001000111;
6432 let isPredicated = 1;
6433 let isPredicatedFalse = 1;
6434 let isTerminator = 1;
6435 let isBranch = 1;
6436 let isPredicatedNew = 1;
6437 let cofRelax1 = 1;
6438 let cofRelax2 = 1;
6439 let cofMax1 = 1;
6440 let Uses = [P0];
6441 let Defs = [P0, PC];
6442 let BaseOpcode = "J4_cmpeqn1p0";
6443 let isTaken = Inst{13};
6444 let isExtendable = 1;
6445 let opExtendable = 2;
6446 let isExtentSigned = 1;
6447 let opExtentBits = 11;
6448 let opExtentAlign = 2;
6449 }
6450 def J4_cmpeqn1_fp1_jump_nt : HInst<
6451 (outs),
6452 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
6453 "p1 = cmp.eq($Rs16,#$n1); if (!p1.new) jump:nt $Ii",
6454 tc_3d495a39, TypeCJ>, Enc_668704, PredRel {
6455 let Inst{0-0} = 0b0;
6456 let Inst{13-8} = 0b000000;
6457 let Inst{31-22} = 0b0001001111;
6458 let isPredicated = 1;
6459 let isPredicatedFalse = 1;
6460 let isTerminator = 1;
6461 let isBranch = 1;
6462 let isPredicatedNew = 1;
6463 let cofRelax1 = 1;
6464 let cofRelax2 = 1;
6465 let cofMax1 = 1;
6466 let Uses = [P1];
6467 let Defs = [P1, PC];
6468 let BaseOpcode = "J4_cmpeqn1p1";
6469 let isTaken = Inst{13};
6470 let isExtendable = 1;
6471 let opExtendable = 2;
6472 let isExtentSigned = 1;
6473 let opExtentBits = 11;
6474 let opExtentAlign = 2;
6475 }
6476 def J4_cmpeqn1_fp1_jump_t : HInst<
6477 (outs),
6478 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
6479 "p1 = cmp.eq($Rs16,#$n1); if (!p1.new) jump:t $Ii",
6480 tc_3d495a39, TypeCJ>, Enc_800e04, PredRel {
6481 let Inst{0-0} = 0b0;
6482 let Inst{13-8} = 0b100000;
6483 let Inst{31-22} = 0b0001001111;
6484 let isPredicated = 1;
6485 let isPredicatedFalse = 1;
6486 let isTerminator = 1;
6487 let isBranch = 1;
6488 let isPredicatedNew = 1;
6489 let cofRelax1 = 1;
6490 let cofRelax2 = 1;
6491 let cofMax1 = 1;
6492 let Uses = [P1];
6493 let Defs = [P1, PC];
6494 let BaseOpcode = "J4_cmpeqn1p1";
6495 let isTaken = Inst{13};
6496 let isExtendable = 1;
6497 let opExtendable = 2;
6498 let isExtentSigned = 1;
6499 let opExtentBits = 11;
6500 let opExtentAlign = 2;
6501 }
6502 def J4_cmpeqn1_t_jumpnv_nt : HInst<
6503 (outs),
6504 (ins IntRegs:$Ns8, n1Const:$n1, b30_2Imm:$Ii),
6505 "if (cmp.eq($Ns8.new,#$n1)) jump:nt $Ii",
6506 tc_bd8382d1, TypeNCJ>, Enc_4aca3a, PredRel {
6507 let Inst{0-0} = 0b0;
6508 let Inst{13-8} = 0b000000;
6509 let Inst{19-19} = 0b0;
6510 let Inst{31-22} = 0b0010011000;
6511 let isPredicated = 1;
6512 let isTerminator = 1;
6513 let isBranch = 1;
6514 let isNewValue = 1;
6515 let cofMax1 = 1;
6516 let isRestrictNoSlot1Store = 1;
6517 let Defs = [PC];
6518 let BaseOpcode = "J4_cmpeqn1r";
6519 let isTaken = Inst{13};
6520 let isExtendable = 1;
6521 let opExtendable = 2;
6522 let isExtentSigned = 1;
6523 let opExtentBits = 11;
6524 let opExtentAlign = 2;
6525 let opNewValue = 0;
6526 }
6527 def J4_cmpeqn1_t_jumpnv_t : HInst<
6528 (outs),
6529 (ins IntRegs:$Ns8, n1Const:$n1, b30_2Imm:$Ii),
6530 "if (cmp.eq($Ns8.new,#$n1)) jump:t $Ii",
6531 tc_bd8382d1, TypeNCJ>, Enc_f7ea77, PredRel {
6532 let Inst{0-0} = 0b0;
6533 let Inst{13-8} = 0b100000;
6534 let Inst{19-19} = 0b0;
6535 let Inst{31-22} = 0b0010011000;
6536 let isPredicated = 1;
6537 let isTerminator = 1;
6538 let isBranch = 1;
6539 let isNewValue = 1;
6540 let cofMax1 = 1;
6541 let isRestrictNoSlot1Store = 1;
6542 let Defs = [PC];
6543 let BaseOpcode = "J4_cmpeqn1r";
6544 let isTaken = Inst{13};
6545 let isExtendable = 1;
6546 let opExtendable = 2;
6547 let isExtentSigned = 1;
6548 let opExtentBits = 11;
6549 let opExtentAlign = 2;
6550 let opNewValue = 0;
6551 }
6552 def J4_cmpeqn1_tp0_jump_nt : HInst<
6553 (outs),
6554 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
6555 "p0 = cmp.eq($Rs16,#$n1); if (p0.new) jump:nt $Ii",
6556 tc_3d495a39, TypeCJ>, Enc_405228, PredRel {
6557 let Inst{0-0} = 0b0;
6558 let Inst{13-8} = 0b000000;
6559 let Inst{31-22} = 0b0001000110;
6560 let isPredicated = 1;
6561 let isTerminator = 1;
6562 let isBranch = 1;
6563 let isPredicatedNew = 1;
6564 let cofRelax1 = 1;
6565 let cofRelax2 = 1;
6566 let cofMax1 = 1;
6567 let Uses = [P0];
6568 let Defs = [P0, PC];
6569 let BaseOpcode = "J4_cmpeqn1p0";
6570 let isTaken = Inst{13};
6571 let isExtendable = 1;
6572 let opExtendable = 2;
6573 let isExtentSigned = 1;
6574 let opExtentBits = 11;
6575 let opExtentAlign = 2;
6576 }
6577 def J4_cmpeqn1_tp0_jump_t : HInst<
6578 (outs),
6579 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
6580 "p0 = cmp.eq($Rs16,#$n1); if (p0.new) jump:t $Ii",
6581 tc_3d495a39, TypeCJ>, Enc_3a2484, PredRel {
6582 let Inst{0-0} = 0b0;
6583 let Inst{13-8} = 0b100000;
6584 let Inst{31-22} = 0b0001000110;
6585 let isPredicated = 1;
6586 let isTerminator = 1;
6587 let isBranch = 1;
6588 let isPredicatedNew = 1;
6589 let cofRelax1 = 1;
6590 let cofRelax2 = 1;
6591 let cofMax1 = 1;
6592 let Uses = [P0];
6593 let Defs = [P0, PC];
6594 let BaseOpcode = "J4_cmpeqn1p0";
6595 let isTaken = Inst{13};
6596 let isExtendable = 1;
6597 let opExtendable = 2;
6598 let isExtentSigned = 1;
6599 let opExtentBits = 11;
6600 let opExtentAlign = 2;
6601 }
6602 def J4_cmpeqn1_tp1_jump_nt : HInst<
6603 (outs),
6604 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
6605 "p1 = cmp.eq($Rs16,#$n1); if (p1.new) jump:nt $Ii",
6606 tc_3d495a39, TypeCJ>, Enc_736575, PredRel {
6607 let Inst{0-0} = 0b0;
6608 let Inst{13-8} = 0b000000;
6609 let Inst{31-22} = 0b0001001110;
6610 let isPredicated = 1;
6611 let isTerminator = 1;
6612 let isBranch = 1;
6613 let isPredicatedNew = 1;
6614 let cofRelax1 = 1;
6615 let cofRelax2 = 1;
6616 let cofMax1 = 1;
6617 let Uses = [P1];
6618 let Defs = [P1, PC];
6619 let BaseOpcode = "J4_cmpeqn1p1";
6620 let isTaken = Inst{13};
6621 let isExtendable = 1;
6622 let opExtendable = 2;
6623 let isExtentSigned = 1;
6624 let opExtentBits = 11;
6625 let opExtentAlign = 2;
6626 }
6627 def J4_cmpeqn1_tp1_jump_t : HInst<
6628 (outs),
6629 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
6630 "p1 = cmp.eq($Rs16,#$n1); if (p1.new) jump:t $Ii",
6631 tc_3d495a39, TypeCJ>, Enc_8e583a, PredRel {
6632 let Inst{0-0} = 0b0;
6633 let Inst{13-8} = 0b100000;
6634 let Inst{31-22} = 0b0001001110;
6635 let isPredicated = 1;
6636 let isTerminator = 1;
6637 let isBranch = 1;
6638 let isPredicatedNew = 1;
6639 let cofRelax1 = 1;
6640 let cofRelax2 = 1;
6641 let cofMax1 = 1;
6642 let Uses = [P1];
6643 let Defs = [P1, PC];
6644 let BaseOpcode = "J4_cmpeqn1p1";
6645 let isTaken = Inst{13};
6646 let isExtendable = 1;
6647 let opExtendable = 2;
6648 let isExtentSigned = 1;
6649 let opExtentBits = 11;
6650 let opExtentAlign = 2;
6651 }
6652 def J4_cmpgt_f_jumpnv_nt : HInst<
6653 (outs),
6654 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
6655 "if (!cmp.gt($Ns8.new,$Rt32)) jump:nt $Ii",
6656 tc_9bfd761f, TypeNCJ>, Enc_c9a18e, PredRel {
6657 let Inst{0-0} = 0b0;
6658 let Inst{13-13} = 0b0;
6659 let Inst{19-19} = 0b0;
6660 let Inst{31-22} = 0b0010000011;
6661 let isPredicated = 1;
6662 let isPredicatedFalse = 1;
6663 let isTerminator = 1;
6664 let isBranch = 1;
6665 let isNewValue = 1;
6666 let cofMax1 = 1;
6667 let isRestrictNoSlot1Store = 1;
6668 let Defs = [PC];
6669 let BaseOpcode = "J4_cmpgtr";
6670 let isTaken = Inst{13};
6671 let isExtendable = 1;
6672 let opExtendable = 2;
6673 let isExtentSigned = 1;
6674 let opExtentBits = 11;
6675 let opExtentAlign = 2;
6676 let opNewValue = 0;
6677 }
6678 def J4_cmpgt_f_jumpnv_t : HInst<
6679 (outs),
6680 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
6681 "if (!cmp.gt($Ns8.new,$Rt32)) jump:t $Ii",
6682 tc_9bfd761f, TypeNCJ>, Enc_c9a18e, PredRel {
6683 let Inst{0-0} = 0b0;
6684 let Inst{13-13} = 0b1;
6685 let Inst{19-19} = 0b0;
6686 let Inst{31-22} = 0b0010000011;
6687 let isPredicated = 1;
6688 let isPredicatedFalse = 1;
6689 let isTerminator = 1;
6690 let isBranch = 1;
6691 let isNewValue = 1;
6692 let cofMax1 = 1;
6693 let isRestrictNoSlot1Store = 1;
6694 let Defs = [PC];
6695 let BaseOpcode = "J4_cmpgtr";
6696 let isTaken = Inst{13};
6697 let isExtendable = 1;
6698 let opExtendable = 2;
6699 let isExtentSigned = 1;
6700 let opExtentBits = 11;
6701 let opExtentAlign = 2;
6702 let opNewValue = 0;
6703 }
6704 def J4_cmpgt_fp0_jump_nt : HInst<
6705 (outs),
6706 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6707 "p0 = cmp.gt($Rs16,$Rt16); if (!p0.new) jump:nt $Ii",
6708 tc_56336eb0, TypeCJ>, Enc_6a5972, PredRel {
6709 let Inst{0-0} = 0b0;
6710 let Inst{13-12} = 0b00;
6711 let Inst{31-22} = 0b0001010011;
6712 let isPredicated = 1;
6713 let isPredicatedFalse = 1;
6714 let isTerminator = 1;
6715 let isBranch = 1;
6716 let isPredicatedNew = 1;
6717 let cofRelax1 = 1;
6718 let cofRelax2 = 1;
6719 let cofMax1 = 1;
6720 let Uses = [P0];
6721 let Defs = [P0, PC];
6722 let BaseOpcode = "J4_cmpgtp0";
6723 let isTaken = Inst{13};
6724 let isExtendable = 1;
6725 let opExtendable = 2;
6726 let isExtentSigned = 1;
6727 let opExtentBits = 11;
6728 let opExtentAlign = 2;
6729 }
6730 def J4_cmpgt_fp0_jump_t : HInst<
6731 (outs),
6732 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6733 "p0 = cmp.gt($Rs16,$Rt16); if (!p0.new) jump:t $Ii",
6734 tc_56336eb0, TypeCJ>, Enc_6a5972, PredRel {
6735 let Inst{0-0} = 0b0;
6736 let Inst{13-12} = 0b10;
6737 let Inst{31-22} = 0b0001010011;
6738 let isPredicated = 1;
6739 let isPredicatedFalse = 1;
6740 let isTerminator = 1;
6741 let isBranch = 1;
6742 let isPredicatedNew = 1;
6743 let cofRelax1 = 1;
6744 let cofRelax2 = 1;
6745 let cofMax1 = 1;
6746 let Uses = [P0];
6747 let Defs = [P0, PC];
6748 let BaseOpcode = "J4_cmpgtp0";
6749 let isTaken = Inst{13};
6750 let isExtendable = 1;
6751 let opExtendable = 2;
6752 let isExtentSigned = 1;
6753 let opExtentBits = 11;
6754 let opExtentAlign = 2;
6755 }
6756 def J4_cmpgt_fp1_jump_nt : HInst<
6757 (outs),
6758 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6759 "p1 = cmp.gt($Rs16,$Rt16); if (!p1.new) jump:nt $Ii",
6760 tc_56336eb0, TypeCJ>, Enc_6a5972, PredRel {
6761 let Inst{0-0} = 0b0;
6762 let Inst{13-12} = 0b01;
6763 let Inst{31-22} = 0b0001010011;
6764 let isPredicated = 1;
6765 let isPredicatedFalse = 1;
6766 let isTerminator = 1;
6767 let isBranch = 1;
6768 let isPredicatedNew = 1;
6769 let cofRelax1 = 1;
6770 let cofRelax2 = 1;
6771 let cofMax1 = 1;
6772 let Uses = [P1];
6773 let Defs = [P1, PC];
6774 let BaseOpcode = "J4_cmpgtp1";
6775 let isTaken = Inst{13};
6776 let isExtendable = 1;
6777 let opExtendable = 2;
6778 let isExtentSigned = 1;
6779 let opExtentBits = 11;
6780 let opExtentAlign = 2;
6781 }
6782 def J4_cmpgt_fp1_jump_t : HInst<
6783 (outs),
6784 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6785 "p1 = cmp.gt($Rs16,$Rt16); if (!p1.new) jump:t $Ii",
6786 tc_56336eb0, TypeCJ>, Enc_6a5972, PredRel {
6787 let Inst{0-0} = 0b0;
6788 let Inst{13-12} = 0b11;
6789 let Inst{31-22} = 0b0001010011;
6790 let isPredicated = 1;
6791 let isPredicatedFalse = 1;
6792 let isTerminator = 1;
6793 let isBranch = 1;
6794 let isPredicatedNew = 1;
6795 let cofRelax1 = 1;
6796 let cofRelax2 = 1;
6797 let cofMax1 = 1;
6798 let Uses = [P1];
6799 let Defs = [P1, PC];
6800 let BaseOpcode = "J4_cmpgtp1";
6801 let isTaken = Inst{13};
6802 let isExtendable = 1;
6803 let opExtendable = 2;
6804 let isExtentSigned = 1;
6805 let opExtentBits = 11;
6806 let opExtentAlign = 2;
6807 }
6808 def J4_cmpgt_t_jumpnv_nt : HInst<
6809 (outs),
6810 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
6811 "if (cmp.gt($Ns8.new,$Rt32)) jump:nt $Ii",
6812 tc_9bfd761f, TypeNCJ>, Enc_c9a18e, PredRel {
6813 let Inst{0-0} = 0b0;
6814 let Inst{13-13} = 0b0;
6815 let Inst{19-19} = 0b0;
6816 let Inst{31-22} = 0b0010000010;
6817 let isPredicated = 1;
6818 let isTerminator = 1;
6819 let isBranch = 1;
6820 let isNewValue = 1;
6821 let cofMax1 = 1;
6822 let isRestrictNoSlot1Store = 1;
6823 let Defs = [PC];
6824 let BaseOpcode = "J4_cmpgtr";
6825 let isTaken = Inst{13};
6826 let isExtendable = 1;
6827 let opExtendable = 2;
6828 let isExtentSigned = 1;
6829 let opExtentBits = 11;
6830 let opExtentAlign = 2;
6831 let opNewValue = 0;
6832 }
6833 def J4_cmpgt_t_jumpnv_t : HInst<
6834 (outs),
6835 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
6836 "if (cmp.gt($Ns8.new,$Rt32)) jump:t $Ii",
6837 tc_9bfd761f, TypeNCJ>, Enc_c9a18e, PredRel {
6838 let Inst{0-0} = 0b0;
6839 let Inst{13-13} = 0b1;
6840 let Inst{19-19} = 0b0;
6841 let Inst{31-22} = 0b0010000010;
6842 let isPredicated = 1;
6843 let isTerminator = 1;
6844 let isBranch = 1;
6845 let isNewValue = 1;
6846 let cofMax1 = 1;
6847 let isRestrictNoSlot1Store = 1;
6848 let Defs = [PC];
6849 let BaseOpcode = "J4_cmpgtr";
6850 let isTaken = Inst{13};
6851 let isExtendable = 1;
6852 let opExtendable = 2;
6853 let isExtentSigned = 1;
6854 let opExtentBits = 11;
6855 let opExtentAlign = 2;
6856 let opNewValue = 0;
6857 }
6858 def J4_cmpgt_tp0_jump_nt : HInst<
6859 (outs),
6860 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6861 "p0 = cmp.gt($Rs16,$Rt16); if (p0.new) jump:nt $Ii",
6862 tc_56336eb0, TypeCJ>, Enc_6a5972, PredRel {
6863 let Inst{0-0} = 0b0;
6864 let Inst{13-12} = 0b00;
6865 let Inst{31-22} = 0b0001010010;
6866 let isPredicated = 1;
6867 let isTerminator = 1;
6868 let isBranch = 1;
6869 let isPredicatedNew = 1;
6870 let cofRelax1 = 1;
6871 let cofRelax2 = 1;
6872 let cofMax1 = 1;
6873 let Uses = [P0];
6874 let Defs = [P0, PC];
6875 let BaseOpcode = "J4_cmpgtp0";
6876 let isTaken = Inst{13};
6877 let isExtendable = 1;
6878 let opExtendable = 2;
6879 let isExtentSigned = 1;
6880 let opExtentBits = 11;
6881 let opExtentAlign = 2;
6882 }
6883 def J4_cmpgt_tp0_jump_t : HInst<
6884 (outs),
6885 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6886 "p0 = cmp.gt($Rs16,$Rt16); if (p0.new) jump:t $Ii",
6887 tc_56336eb0, TypeCJ>, Enc_6a5972, PredRel {
6888 let Inst{0-0} = 0b0;
6889 let Inst{13-12} = 0b10;
6890 let Inst{31-22} = 0b0001010010;
6891 let isPredicated = 1;
6892 let isTerminator = 1;
6893 let isBranch = 1;
6894 let isPredicatedNew = 1;
6895 let cofRelax1 = 1;
6896 let cofRelax2 = 1;
6897 let cofMax1 = 1;
6898 let Uses = [P0];
6899 let Defs = [P0, PC];
6900 let BaseOpcode = "J4_cmpgtp0";
6901 let isTaken = Inst{13};
6902 let isExtendable = 1;
6903 let opExtendable = 2;
6904 let isExtentSigned = 1;
6905 let opExtentBits = 11;
6906 let opExtentAlign = 2;
6907 }
6908 def J4_cmpgt_tp1_jump_nt : HInst<
6909 (outs),
6910 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6911 "p1 = cmp.gt($Rs16,$Rt16); if (p1.new) jump:nt $Ii",
6912 tc_56336eb0, TypeCJ>, Enc_6a5972, PredRel {
6913 let Inst{0-0} = 0b0;
6914 let Inst{13-12} = 0b01;
6915 let Inst{31-22} = 0b0001010010;
6916 let isPredicated = 1;
6917 let isTerminator = 1;
6918 let isBranch = 1;
6919 let isPredicatedNew = 1;
6920 let cofRelax1 = 1;
6921 let cofRelax2 = 1;
6922 let cofMax1 = 1;
6923 let Uses = [P1];
6924 let Defs = [P1, PC];
6925 let BaseOpcode = "J4_cmpgtp1";
6926 let isTaken = Inst{13};
6927 let isExtendable = 1;
6928 let opExtendable = 2;
6929 let isExtentSigned = 1;
6930 let opExtentBits = 11;
6931 let opExtentAlign = 2;
6932 }
6933 def J4_cmpgt_tp1_jump_t : HInst<
6934 (outs),
6935 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
6936 "p1 = cmp.gt($Rs16,$Rt16); if (p1.new) jump:t $Ii",
6937 tc_56336eb0, TypeCJ>, Enc_6a5972, PredRel {
6938 let Inst{0-0} = 0b0;
6939 let Inst{13-12} = 0b11;
6940 let Inst{31-22} = 0b0001010010;
6941 let isPredicated = 1;
6942 let isTerminator = 1;
6943 let isBranch = 1;
6944 let isPredicatedNew = 1;
6945 let cofRelax1 = 1;
6946 let cofRelax2 = 1;
6947 let cofMax1 = 1;
6948 let Uses = [P1];
6949 let Defs = [P1, PC];
6950 let BaseOpcode = "J4_cmpgtp1";
6951 let isTaken = Inst{13};
6952 let isExtendable = 1;
6953 let opExtendable = 2;
6954 let isExtentSigned = 1;
6955 let opExtentBits = 11;
6956 let opExtentAlign = 2;
6957 }
6958 def J4_cmpgti_f_jumpnv_nt : HInst<
6959 (outs),
6960 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
6961 "if (!cmp.gt($Ns8.new,#$II)) jump:nt $Ii",
6962 tc_bd8382d1, TypeNCJ>, Enc_eafd18, PredRel {
6963 let Inst{0-0} = 0b0;
6964 let Inst{13-13} = 0b0;
6965 let Inst{19-19} = 0b0;
6966 let Inst{31-22} = 0b0010010011;
6967 let isPredicated = 1;
6968 let isPredicatedFalse = 1;
6969 let isTerminator = 1;
6970 let isBranch = 1;
6971 let isNewValue = 1;
6972 let cofMax1 = 1;
6973 let isRestrictNoSlot1Store = 1;
6974 let Defs = [PC];
6975 let BaseOpcode = "J4_cmpgtir";
6976 let isTaken = Inst{13};
6977 let isExtendable = 1;
6978 let opExtendable = 2;
6979 let isExtentSigned = 1;
6980 let opExtentBits = 11;
6981 let opExtentAlign = 2;
6982 let opNewValue = 0;
6983 }
6984 def J4_cmpgti_f_jumpnv_t : HInst<
6985 (outs),
6986 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
6987 "if (!cmp.gt($Ns8.new,#$II)) jump:t $Ii",
6988 tc_bd8382d1, TypeNCJ>, Enc_eafd18, PredRel {
6989 let Inst{0-0} = 0b0;
6990 let Inst{13-13} = 0b1;
6991 let Inst{19-19} = 0b0;
6992 let Inst{31-22} = 0b0010010011;
6993 let isPredicated = 1;
6994 let isPredicatedFalse = 1;
6995 let isTerminator = 1;
6996 let isBranch = 1;
6997 let isNewValue = 1;
6998 let cofMax1 = 1;
6999 let isRestrictNoSlot1Store = 1;
7000 let Defs = [PC];
7001 let BaseOpcode = "J4_cmpgtir";
7002 let isTaken = Inst{13};
7003 let isExtendable = 1;
7004 let opExtendable = 2;
7005 let isExtentSigned = 1;
7006 let opExtentBits = 11;
7007 let opExtentAlign = 2;
7008 let opNewValue = 0;
7009 }
7010 def J4_cmpgti_fp0_jump_nt : HInst<
7011 (outs),
7012 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7013 "p0 = cmp.gt($Rs16,#$II); if (!p0.new) jump:nt $Ii",
7014 tc_3d495a39, TypeCJ>, Enc_14d27a, PredRel {
7015 let Inst{0-0} = 0b0;
7016 let Inst{13-13} = 0b0;
7017 let Inst{31-22} = 0b0001000011;
7018 let isPredicated = 1;
7019 let isPredicatedFalse = 1;
7020 let isTerminator = 1;
7021 let isBranch = 1;
7022 let isPredicatedNew = 1;
7023 let cofRelax1 = 1;
7024 let cofRelax2 = 1;
7025 let cofMax1 = 1;
7026 let Uses = [P0];
7027 let Defs = [P0, PC];
7028 let BaseOpcode = "J4_cmpgtip0";
7029 let isTaken = Inst{13};
7030 let isExtendable = 1;
7031 let opExtendable = 2;
7032 let isExtentSigned = 1;
7033 let opExtentBits = 11;
7034 let opExtentAlign = 2;
7035 }
7036 def J4_cmpgti_fp0_jump_t : HInst<
7037 (outs),
7038 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7039 "p0 = cmp.gt($Rs16,#$II); if (!p0.new) jump:t $Ii",
7040 tc_3d495a39, TypeCJ>, Enc_14d27a, PredRel {
7041 let Inst{0-0} = 0b0;
7042 let Inst{13-13} = 0b1;
7043 let Inst{31-22} = 0b0001000011;
7044 let isPredicated = 1;
7045 let isPredicatedFalse = 1;
7046 let isTerminator = 1;
7047 let isBranch = 1;
7048 let isPredicatedNew = 1;
7049 let cofRelax1 = 1;
7050 let cofRelax2 = 1;
7051 let cofMax1 = 1;
7052 let Uses = [P0];
7053 let Defs = [P0, PC];
7054 let BaseOpcode = "J4_cmpgtip0";
7055 let isTaken = Inst{13};
7056 let isExtendable = 1;
7057 let opExtendable = 2;
7058 let isExtentSigned = 1;
7059 let opExtentBits = 11;
7060 let opExtentAlign = 2;
7061 }
7062 def J4_cmpgti_fp1_jump_nt : HInst<
7063 (outs),
7064 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7065 "p1 = cmp.gt($Rs16,#$II); if (!p1.new) jump:nt $Ii",
7066 tc_3d495a39, TypeCJ>, Enc_14d27a, PredRel {
7067 let Inst{0-0} = 0b0;
7068 let Inst{13-13} = 0b0;
7069 let Inst{31-22} = 0b0001001011;
7070 let isPredicated = 1;
7071 let isPredicatedFalse = 1;
7072 let isTerminator = 1;
7073 let isBranch = 1;
7074 let isPredicatedNew = 1;
7075 let cofRelax1 = 1;
7076 let cofRelax2 = 1;
7077 let cofMax1 = 1;
7078 let Uses = [P1];
7079 let Defs = [P1, PC];
7080 let BaseOpcode = "J4_cmpgtip1";
7081 let isTaken = Inst{13};
7082 let isExtendable = 1;
7083 let opExtendable = 2;
7084 let isExtentSigned = 1;
7085 let opExtentBits = 11;
7086 let opExtentAlign = 2;
7087 }
7088 def J4_cmpgti_fp1_jump_t : HInst<
7089 (outs),
7090 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7091 "p1 = cmp.gt($Rs16,#$II); if (!p1.new) jump:t $Ii",
7092 tc_3d495a39, TypeCJ>, Enc_14d27a, PredRel {
7093 let Inst{0-0} = 0b0;
7094 let Inst{13-13} = 0b1;
7095 let Inst{31-22} = 0b0001001011;
7096 let isPredicated = 1;
7097 let isPredicatedFalse = 1;
7098 let isTerminator = 1;
7099 let isBranch = 1;
7100 let isPredicatedNew = 1;
7101 let cofRelax1 = 1;
7102 let cofRelax2 = 1;
7103 let cofMax1 = 1;
7104 let Uses = [P1];
7105 let Defs = [P1, PC];
7106 let BaseOpcode = "J4_cmpgtip1";
7107 let isTaken = Inst{13};
7108 let isExtendable = 1;
7109 let opExtendable = 2;
7110 let isExtentSigned = 1;
7111 let opExtentBits = 11;
7112 let opExtentAlign = 2;
7113 }
7114 def J4_cmpgti_t_jumpnv_nt : HInst<
7115 (outs),
7116 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
7117 "if (cmp.gt($Ns8.new,#$II)) jump:nt $Ii",
7118 tc_bd8382d1, TypeNCJ>, Enc_eafd18, PredRel {
7119 let Inst{0-0} = 0b0;
7120 let Inst{13-13} = 0b0;
7121 let Inst{19-19} = 0b0;
7122 let Inst{31-22} = 0b0010010010;
7123 let isPredicated = 1;
7124 let isTerminator = 1;
7125 let isBranch = 1;
7126 let isNewValue = 1;
7127 let cofMax1 = 1;
7128 let isRestrictNoSlot1Store = 1;
7129 let Defs = [PC];
7130 let BaseOpcode = "J4_cmpgtir";
7131 let isTaken = Inst{13};
7132 let isExtendable = 1;
7133 let opExtendable = 2;
7134 let isExtentSigned = 1;
7135 let opExtentBits = 11;
7136 let opExtentAlign = 2;
7137 let opNewValue = 0;
7138 }
7139 def J4_cmpgti_t_jumpnv_t : HInst<
7140 (outs),
7141 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
7142 "if (cmp.gt($Ns8.new,#$II)) jump:t $Ii",
7143 tc_bd8382d1, TypeNCJ>, Enc_eafd18, PredRel {
7144 let Inst{0-0} = 0b0;
7145 let Inst{13-13} = 0b1;
7146 let Inst{19-19} = 0b0;
7147 let Inst{31-22} = 0b0010010010;
7148 let isPredicated = 1;
7149 let isTerminator = 1;
7150 let isBranch = 1;
7151 let isNewValue = 1;
7152 let cofMax1 = 1;
7153 let isRestrictNoSlot1Store = 1;
7154 let Defs = [PC];
7155 let BaseOpcode = "J4_cmpgtir";
7156 let isTaken = Inst{13};
7157 let isExtendable = 1;
7158 let opExtendable = 2;
7159 let isExtentSigned = 1;
7160 let opExtentBits = 11;
7161 let opExtentAlign = 2;
7162 let opNewValue = 0;
7163 }
7164 def J4_cmpgti_tp0_jump_nt : HInst<
7165 (outs),
7166 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7167 "p0 = cmp.gt($Rs16,#$II); if (p0.new) jump:nt $Ii",
7168 tc_3d495a39, TypeCJ>, Enc_14d27a, PredRel {
7169 let Inst{0-0} = 0b0;
7170 let Inst{13-13} = 0b0;
7171 let Inst{31-22} = 0b0001000010;
7172 let isPredicated = 1;
7173 let isTerminator = 1;
7174 let isBranch = 1;
7175 let isPredicatedNew = 1;
7176 let cofRelax1 = 1;
7177 let cofRelax2 = 1;
7178 let cofMax1 = 1;
7179 let Uses = [P0];
7180 let Defs = [P0, PC];
7181 let BaseOpcode = "J4_cmpgtip0";
7182 let isTaken = Inst{13};
7183 let isExtendable = 1;
7184 let opExtendable = 2;
7185 let isExtentSigned = 1;
7186 let opExtentBits = 11;
7187 let opExtentAlign = 2;
7188 }
7189 def J4_cmpgti_tp0_jump_t : HInst<
7190 (outs),
7191 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7192 "p0 = cmp.gt($Rs16,#$II); if (p0.new) jump:t $Ii",
7193 tc_3d495a39, TypeCJ>, Enc_14d27a, PredRel {
7194 let Inst{0-0} = 0b0;
7195 let Inst{13-13} = 0b1;
7196 let Inst{31-22} = 0b0001000010;
7197 let isPredicated = 1;
7198 let isTerminator = 1;
7199 let isBranch = 1;
7200 let isPredicatedNew = 1;
7201 let cofRelax1 = 1;
7202 let cofRelax2 = 1;
7203 let cofMax1 = 1;
7204 let Uses = [P0];
7205 let Defs = [P0, PC];
7206 let BaseOpcode = "J4_cmpgtip0";
7207 let isTaken = Inst{13};
7208 let isExtendable = 1;
7209 let opExtendable = 2;
7210 let isExtentSigned = 1;
7211 let opExtentBits = 11;
7212 let opExtentAlign = 2;
7213 }
7214 def J4_cmpgti_tp1_jump_nt : HInst<
7215 (outs),
7216 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7217 "p1 = cmp.gt($Rs16,#$II); if (p1.new) jump:nt $Ii",
7218 tc_3d495a39, TypeCJ>, Enc_14d27a, PredRel {
7219 let Inst{0-0} = 0b0;
7220 let Inst{13-13} = 0b0;
7221 let Inst{31-22} = 0b0001001010;
7222 let isPredicated = 1;
7223 let isTerminator = 1;
7224 let isBranch = 1;
7225 let isPredicatedNew = 1;
7226 let cofRelax1 = 1;
7227 let cofRelax2 = 1;
7228 let cofMax1 = 1;
7229 let Uses = [P1];
7230 let Defs = [P1, PC];
7231 let BaseOpcode = "J4_cmpgtip1";
7232 let isTaken = Inst{13};
7233 let isExtendable = 1;
7234 let opExtendable = 2;
7235 let isExtentSigned = 1;
7236 let opExtentBits = 11;
7237 let opExtentAlign = 2;
7238 }
7239 def J4_cmpgti_tp1_jump_t : HInst<
7240 (outs),
7241 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7242 "p1 = cmp.gt($Rs16,#$II); if (p1.new) jump:t $Ii",
7243 tc_3d495a39, TypeCJ>, Enc_14d27a, PredRel {
7244 let Inst{0-0} = 0b0;
7245 let Inst{13-13} = 0b1;
7246 let Inst{31-22} = 0b0001001010;
7247 let isPredicated = 1;
7248 let isTerminator = 1;
7249 let isBranch = 1;
7250 let isPredicatedNew = 1;
7251 let cofRelax1 = 1;
7252 let cofRelax2 = 1;
7253 let cofMax1 = 1;
7254 let Uses = [P1];
7255 let Defs = [P1, PC];
7256 let BaseOpcode = "J4_cmpgtip1";
7257 let isTaken = Inst{13};
7258 let isExtendable = 1;
7259 let opExtendable = 2;
7260 let isExtentSigned = 1;
7261 let opExtentBits = 11;
7262 let opExtentAlign = 2;
7263 }
7264 def J4_cmpgtn1_f_jumpnv_nt : HInst<
7265 (outs),
7266 (ins IntRegs:$Ns8, n1Const:$n1, b30_2Imm:$Ii),
7267 "if (!cmp.gt($Ns8.new,#$n1)) jump:nt $Ii",
7268 tc_bd8382d1, TypeNCJ>, Enc_3694bd, PredRel {
7269 let Inst{0-0} = 0b0;
7270 let Inst{13-8} = 0b000000;
7271 let Inst{19-19} = 0b0;
7272 let Inst{31-22} = 0b0010011011;
7273 let isPredicated = 1;
7274 let isPredicatedFalse = 1;
7275 let isTerminator = 1;
7276 let isBranch = 1;
7277 let isNewValue = 1;
7278 let cofMax1 = 1;
7279 let isRestrictNoSlot1Store = 1;
7280 let Defs = [PC];
7281 let BaseOpcode = "J4_cmpgtn1r";
7282 let isTaken = Inst{13};
7283 let isExtendable = 1;
7284 let opExtendable = 2;
7285 let isExtentSigned = 1;
7286 let opExtentBits = 11;
7287 let opExtentAlign = 2;
7288 let opNewValue = 0;
7289 }
7290 def J4_cmpgtn1_f_jumpnv_t : HInst<
7291 (outs),
7292 (ins IntRegs:$Ns8, n1Const:$n1, b30_2Imm:$Ii),
7293 "if (!cmp.gt($Ns8.new,#$n1)) jump:t $Ii",
7294 tc_bd8382d1, TypeNCJ>, Enc_a6853f, PredRel {
7295 let Inst{0-0} = 0b0;
7296 let Inst{13-8} = 0b100000;
7297 let Inst{19-19} = 0b0;
7298 let Inst{31-22} = 0b0010011011;
7299 let isPredicated = 1;
7300 let isPredicatedFalse = 1;
7301 let isTerminator = 1;
7302 let isBranch = 1;
7303 let isNewValue = 1;
7304 let cofMax1 = 1;
7305 let isRestrictNoSlot1Store = 1;
7306 let Defs = [PC];
7307 let BaseOpcode = "J4_cmpgtn1r";
7308 let isTaken = Inst{13};
7309 let isExtendable = 1;
7310 let opExtendable = 2;
7311 let isExtentSigned = 1;
7312 let opExtentBits = 11;
7313 let opExtentAlign = 2;
7314 let opNewValue = 0;
7315 }
7316 def J4_cmpgtn1_fp0_jump_nt : HInst<
7317 (outs),
7318 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
7319 "p0 = cmp.gt($Rs16,#$n1); if (!p0.new) jump:nt $Ii",
7320 tc_3d495a39, TypeCJ>, Enc_a42857, PredRel {
7321 let Inst{0-0} = 0b0;
7322 let Inst{13-8} = 0b000001;
7323 let Inst{31-22} = 0b0001000111;
7324 let isPredicated = 1;
7325 let isPredicatedFalse = 1;
7326 let isTerminator = 1;
7327 let isBranch = 1;
7328 let isPredicatedNew = 1;
7329 let cofRelax1 = 1;
7330 let cofRelax2 = 1;
7331 let cofMax1 = 1;
7332 let Uses = [P0];
7333 let Defs = [P0, PC];
7334 let BaseOpcode = "J4_cmpgtn1p0";
7335 let isTaken = Inst{13};
7336 let isExtendable = 1;
7337 let opExtendable = 2;
7338 let isExtentSigned = 1;
7339 let opExtentBits = 11;
7340 let opExtentAlign = 2;
7341 }
7342 def J4_cmpgtn1_fp0_jump_t : HInst<
7343 (outs),
7344 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
7345 "p0 = cmp.gt($Rs16,#$n1); if (!p0.new) jump:t $Ii",
7346 tc_3d495a39, TypeCJ>, Enc_f6fe0b, PredRel {
7347 let Inst{0-0} = 0b0;
7348 let Inst{13-8} = 0b100001;
7349 let Inst{31-22} = 0b0001000111;
7350 let isPredicated = 1;
7351 let isPredicatedFalse = 1;
7352 let isTerminator = 1;
7353 let isBranch = 1;
7354 let isPredicatedNew = 1;
7355 let cofRelax1 = 1;
7356 let cofRelax2 = 1;
7357 let cofMax1 = 1;
7358 let Uses = [P0];
7359 let Defs = [P0, PC];
7360 let BaseOpcode = "J4_cmpgtn1p0";
7361 let isTaken = Inst{13};
7362 let isExtendable = 1;
7363 let opExtendable = 2;
7364 let isExtentSigned = 1;
7365 let opExtentBits = 11;
7366 let opExtentAlign = 2;
7367 }
7368 def J4_cmpgtn1_fp1_jump_nt : HInst<
7369 (outs),
7370 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
7371 "p1 = cmp.gt($Rs16,#$n1); if (!p1.new) jump:nt $Ii",
7372 tc_3d495a39, TypeCJ>, Enc_3e3989, PredRel {
7373 let Inst{0-0} = 0b0;
7374 let Inst{13-8} = 0b000001;
7375 let Inst{31-22} = 0b0001001111;
7376 let isPredicated = 1;
7377 let isPredicatedFalse = 1;
7378 let isTerminator = 1;
7379 let isBranch = 1;
7380 let isPredicatedNew = 1;
7381 let cofRelax1 = 1;
7382 let cofRelax2 = 1;
7383 let cofMax1 = 1;
7384 let Uses = [P1];
7385 let Defs = [P1, PC];
7386 let BaseOpcode = "J4_cmpgtn1p1";
7387 let isTaken = Inst{13};
7388 let isExtendable = 1;
7389 let opExtendable = 2;
7390 let isExtentSigned = 1;
7391 let opExtentBits = 11;
7392 let opExtentAlign = 2;
7393 }
7394 def J4_cmpgtn1_fp1_jump_t : HInst<
7395 (outs),
7396 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
7397 "p1 = cmp.gt($Rs16,#$n1); if (!p1.new) jump:t $Ii",
7398 tc_3d495a39, TypeCJ>, Enc_b909d2, PredRel {
7399 let Inst{0-0} = 0b0;
7400 let Inst{13-8} = 0b100001;
7401 let Inst{31-22} = 0b0001001111;
7402 let isPredicated = 1;
7403 let isPredicatedFalse = 1;
7404 let isTerminator = 1;
7405 let isBranch = 1;
7406 let isPredicatedNew = 1;
7407 let cofRelax1 = 1;
7408 let cofRelax2 = 1;
7409 let cofMax1 = 1;
7410 let Uses = [P1];
7411 let Defs = [P1, PC];
7412 let BaseOpcode = "J4_cmpgtn1p1";
7413 let isTaken = Inst{13};
7414 let isExtendable = 1;
7415 let opExtendable = 2;
7416 let isExtentSigned = 1;
7417 let opExtentBits = 11;
7418 let opExtentAlign = 2;
7419 }
7420 def J4_cmpgtn1_t_jumpnv_nt : HInst<
7421 (outs),
7422 (ins IntRegs:$Ns8, n1Const:$n1, b30_2Imm:$Ii),
7423 "if (cmp.gt($Ns8.new,#$n1)) jump:nt $Ii",
7424 tc_bd8382d1, TypeNCJ>, Enc_f82302, PredRel {
7425 let Inst{0-0} = 0b0;
7426 let Inst{13-8} = 0b000000;
7427 let Inst{19-19} = 0b0;
7428 let Inst{31-22} = 0b0010011010;
7429 let isPredicated = 1;
7430 let isTerminator = 1;
7431 let isBranch = 1;
7432 let isNewValue = 1;
7433 let cofMax1 = 1;
7434 let isRestrictNoSlot1Store = 1;
7435 let Defs = [PC];
7436 let BaseOpcode = "J4_cmpgtn1r";
7437 let isTaken = Inst{13};
7438 let isExtendable = 1;
7439 let opExtendable = 2;
7440 let isExtentSigned = 1;
7441 let opExtentBits = 11;
7442 let opExtentAlign = 2;
7443 let opNewValue = 0;
7444 }
7445 def J4_cmpgtn1_t_jumpnv_t : HInst<
7446 (outs),
7447 (ins IntRegs:$Ns8, n1Const:$n1, b30_2Imm:$Ii),
7448 "if (cmp.gt($Ns8.new,#$n1)) jump:t $Ii",
7449 tc_bd8382d1, TypeNCJ>, Enc_6413b6, PredRel {
7450 let Inst{0-0} = 0b0;
7451 let Inst{13-8} = 0b100000;
7452 let Inst{19-19} = 0b0;
7453 let Inst{31-22} = 0b0010011010;
7454 let isPredicated = 1;
7455 let isTerminator = 1;
7456 let isBranch = 1;
7457 let isNewValue = 1;
7458 let cofMax1 = 1;
7459 let isRestrictNoSlot1Store = 1;
7460 let Defs = [PC];
7461 let BaseOpcode = "J4_cmpgtn1r";
7462 let isTaken = Inst{13};
7463 let isExtendable = 1;
7464 let opExtendable = 2;
7465 let isExtentSigned = 1;
7466 let opExtentBits = 11;
7467 let opExtentAlign = 2;
7468 let opNewValue = 0;
7469 }
7470 def J4_cmpgtn1_tp0_jump_nt : HInst<
7471 (outs),
7472 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
7473 "p0 = cmp.gt($Rs16,#$n1); if (p0.new) jump:nt $Ii",
7474 tc_3d495a39, TypeCJ>, Enc_b78edd, PredRel {
7475 let Inst{0-0} = 0b0;
7476 let Inst{13-8} = 0b000001;
7477 let Inst{31-22} = 0b0001000110;
7478 let isPredicated = 1;
7479 let isTerminator = 1;
7480 let isBranch = 1;
7481 let isPredicatedNew = 1;
7482 let cofRelax1 = 1;
7483 let cofRelax2 = 1;
7484 let cofMax1 = 1;
7485 let Uses = [P0];
7486 let Defs = [P0, PC];
7487 let BaseOpcode = "J4_cmpgtn1p0";
7488 let isTaken = Inst{13};
7489 let isExtendable = 1;
7490 let opExtendable = 2;
7491 let isExtentSigned = 1;
7492 let opExtentBits = 11;
7493 let opExtentAlign = 2;
7494 }
7495 def J4_cmpgtn1_tp0_jump_t : HInst<
7496 (outs),
7497 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
7498 "p0 = cmp.gt($Rs16,#$n1); if (p0.new) jump:t $Ii",
7499 tc_3d495a39, TypeCJ>, Enc_041d7b, PredRel {
7500 let Inst{0-0} = 0b0;
7501 let Inst{13-8} = 0b100001;
7502 let Inst{31-22} = 0b0001000110;
7503 let isPredicated = 1;
7504 let isTerminator = 1;
7505 let isBranch = 1;
7506 let isPredicatedNew = 1;
7507 let cofRelax1 = 1;
7508 let cofRelax2 = 1;
7509 let cofMax1 = 1;
7510 let Uses = [P0];
7511 let Defs = [P0, PC];
7512 let BaseOpcode = "J4_cmpgtn1p0";
7513 let isTaken = Inst{13};
7514 let isExtendable = 1;
7515 let opExtendable = 2;
7516 let isExtentSigned = 1;
7517 let opExtentBits = 11;
7518 let opExtentAlign = 2;
7519 }
7520 def J4_cmpgtn1_tp1_jump_nt : HInst<
7521 (outs),
7522 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
7523 "p1 = cmp.gt($Rs16,#$n1); if (p1.new) jump:nt $Ii",
7524 tc_3d495a39, TypeCJ>, Enc_b1e1fb, PredRel {
7525 let Inst{0-0} = 0b0;
7526 let Inst{13-8} = 0b000001;
7527 let Inst{31-22} = 0b0001001110;
7528 let isPredicated = 1;
7529 let isTerminator = 1;
7530 let isBranch = 1;
7531 let isPredicatedNew = 1;
7532 let cofRelax1 = 1;
7533 let cofRelax2 = 1;
7534 let cofMax1 = 1;
7535 let Uses = [P1];
7536 let Defs = [P1, PC];
7537 let BaseOpcode = "J4_cmpgtn1p1";
7538 let isTaken = Inst{13};
7539 let isExtendable = 1;
7540 let opExtendable = 2;
7541 let isExtentSigned = 1;
7542 let opExtentBits = 11;
7543 let opExtentAlign = 2;
7544 }
7545 def J4_cmpgtn1_tp1_jump_t : HInst<
7546 (outs),
7547 (ins GeneralSubRegs:$Rs16, n1Const:$n1, b30_2Imm:$Ii),
7548 "p1 = cmp.gt($Rs16,#$n1); if (p1.new) jump:t $Ii",
7549 tc_3d495a39, TypeCJ>, Enc_178717, PredRel {
7550 let Inst{0-0} = 0b0;
7551 let Inst{13-8} = 0b100001;
7552 let Inst{31-22} = 0b0001001110;
7553 let isPredicated = 1;
7554 let isTerminator = 1;
7555 let isBranch = 1;
7556 let isPredicatedNew = 1;
7557 let cofRelax1 = 1;
7558 let cofRelax2 = 1;
7559 let cofMax1 = 1;
7560 let Uses = [P1];
7561 let Defs = [P1, PC];
7562 let BaseOpcode = "J4_cmpgtn1p1";
7563 let isTaken = Inst{13};
7564 let isExtendable = 1;
7565 let opExtendable = 2;
7566 let isExtentSigned = 1;
7567 let opExtentBits = 11;
7568 let opExtentAlign = 2;
7569 }
7570 def J4_cmpgtu_f_jumpnv_nt : HInst<
7571 (outs),
7572 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
7573 "if (!cmp.gtu($Ns8.new,$Rt32)) jump:nt $Ii",
7574 tc_9bfd761f, TypeNCJ>, Enc_c9a18e, PredRel {
7575 let Inst{0-0} = 0b0;
7576 let Inst{13-13} = 0b0;
7577 let Inst{19-19} = 0b0;
7578 let Inst{31-22} = 0b0010000101;
7579 let isPredicated = 1;
7580 let isPredicatedFalse = 1;
7581 let isTerminator = 1;
7582 let isBranch = 1;
7583 let isNewValue = 1;
7584 let cofMax1 = 1;
7585 let isRestrictNoSlot1Store = 1;
7586 let Defs = [PC];
7587 let BaseOpcode = "J4_cmpgtur";
7588 let isTaken = Inst{13};
7589 let isExtendable = 1;
7590 let opExtendable = 2;
7591 let isExtentSigned = 1;
7592 let opExtentBits = 11;
7593 let opExtentAlign = 2;
7594 let opNewValue = 0;
7595 }
7596 def J4_cmpgtu_f_jumpnv_t : HInst<
7597 (outs),
7598 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
7599 "if (!cmp.gtu($Ns8.new,$Rt32)) jump:t $Ii",
7600 tc_9bfd761f, TypeNCJ>, Enc_c9a18e, PredRel {
7601 let Inst{0-0} = 0b0;
7602 let Inst{13-13} = 0b1;
7603 let Inst{19-19} = 0b0;
7604 let Inst{31-22} = 0b0010000101;
7605 let isPredicated = 1;
7606 let isPredicatedFalse = 1;
7607 let isTerminator = 1;
7608 let isBranch = 1;
7609 let isNewValue = 1;
7610 let cofMax1 = 1;
7611 let isRestrictNoSlot1Store = 1;
7612 let Defs = [PC];
7613 let BaseOpcode = "J4_cmpgtur";
7614 let isTaken = Inst{13};
7615 let isExtendable = 1;
7616 let opExtendable = 2;
7617 let isExtentSigned = 1;
7618 let opExtentBits = 11;
7619 let opExtentAlign = 2;
7620 let opNewValue = 0;
7621 }
7622 def J4_cmpgtu_fp0_jump_nt : HInst<
7623 (outs),
7624 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7625 "p0 = cmp.gtu($Rs16,$Rt16); if (!p0.new) jump:nt $Ii",
7626 tc_56336eb0, TypeCJ>, Enc_6a5972, PredRel {
7627 let Inst{0-0} = 0b0;
7628 let Inst{13-12} = 0b00;
7629 let Inst{31-22} = 0b0001010101;
7630 let isPredicated = 1;
7631 let isPredicatedFalse = 1;
7632 let isTerminator = 1;
7633 let isBranch = 1;
7634 let isPredicatedNew = 1;
7635 let cofRelax1 = 1;
7636 let cofRelax2 = 1;
7637 let cofMax1 = 1;
7638 let Uses = [P0];
7639 let Defs = [P0, PC];
7640 let BaseOpcode = "J4_cmpgtup0";
7641 let isTaken = Inst{13};
7642 let isExtendable = 1;
7643 let opExtendable = 2;
7644 let isExtentSigned = 1;
7645 let opExtentBits = 11;
7646 let opExtentAlign = 2;
7647 }
7648 def J4_cmpgtu_fp0_jump_t : HInst<
7649 (outs),
7650 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7651 "p0 = cmp.gtu($Rs16,$Rt16); if (!p0.new) jump:t $Ii",
7652 tc_56336eb0, TypeCJ>, Enc_6a5972, PredRel {
7653 let Inst{0-0} = 0b0;
7654 let Inst{13-12} = 0b10;
7655 let Inst{31-22} = 0b0001010101;
7656 let isPredicated = 1;
7657 let isPredicatedFalse = 1;
7658 let isTerminator = 1;
7659 let isBranch = 1;
7660 let isPredicatedNew = 1;
7661 let cofRelax1 = 1;
7662 let cofRelax2 = 1;
7663 let cofMax1 = 1;
7664 let Uses = [P0];
7665 let Defs = [P0, PC];
7666 let BaseOpcode = "J4_cmpgtup0";
7667 let isTaken = Inst{13};
7668 let isExtendable = 1;
7669 let opExtendable = 2;
7670 let isExtentSigned = 1;
7671 let opExtentBits = 11;
7672 let opExtentAlign = 2;
7673 }
7674 def J4_cmpgtu_fp1_jump_nt : HInst<
7675 (outs),
7676 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7677 "p1 = cmp.gtu($Rs16,$Rt16); if (!p1.new) jump:nt $Ii",
7678 tc_56336eb0, TypeCJ>, Enc_6a5972, PredRel {
7679 let Inst{0-0} = 0b0;
7680 let Inst{13-12} = 0b01;
7681 let Inst{31-22} = 0b0001010101;
7682 let isPredicated = 1;
7683 let isPredicatedFalse = 1;
7684 let isTerminator = 1;
7685 let isBranch = 1;
7686 let isPredicatedNew = 1;
7687 let cofRelax1 = 1;
7688 let cofRelax2 = 1;
7689 let cofMax1 = 1;
7690 let Uses = [P1];
7691 let Defs = [P1, PC];
7692 let BaseOpcode = "J4_cmpgtup1";
7693 let isTaken = Inst{13};
7694 let isExtendable = 1;
7695 let opExtendable = 2;
7696 let isExtentSigned = 1;
7697 let opExtentBits = 11;
7698 let opExtentAlign = 2;
7699 }
7700 def J4_cmpgtu_fp1_jump_t : HInst<
7701 (outs),
7702 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7703 "p1 = cmp.gtu($Rs16,$Rt16); if (!p1.new) jump:t $Ii",
7704 tc_56336eb0, TypeCJ>, Enc_6a5972, PredRel {
7705 let Inst{0-0} = 0b0;
7706 let Inst{13-12} = 0b11;
7707 let Inst{31-22} = 0b0001010101;
7708 let isPredicated = 1;
7709 let isPredicatedFalse = 1;
7710 let isTerminator = 1;
7711 let isBranch = 1;
7712 let isPredicatedNew = 1;
7713 let cofRelax1 = 1;
7714 let cofRelax2 = 1;
7715 let cofMax1 = 1;
7716 let Uses = [P1];
7717 let Defs = [P1, PC];
7718 let BaseOpcode = "J4_cmpgtup1";
7719 let isTaken = Inst{13};
7720 let isExtendable = 1;
7721 let opExtendable = 2;
7722 let isExtentSigned = 1;
7723 let opExtentBits = 11;
7724 let opExtentAlign = 2;
7725 }
7726 def J4_cmpgtu_t_jumpnv_nt : HInst<
7727 (outs),
7728 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
7729 "if (cmp.gtu($Ns8.new,$Rt32)) jump:nt $Ii",
7730 tc_9bfd761f, TypeNCJ>, Enc_c9a18e, PredRel {
7731 let Inst{0-0} = 0b0;
7732 let Inst{13-13} = 0b0;
7733 let Inst{19-19} = 0b0;
7734 let Inst{31-22} = 0b0010000100;
7735 let isPredicated = 1;
7736 let isTerminator = 1;
7737 let isBranch = 1;
7738 let isNewValue = 1;
7739 let cofMax1 = 1;
7740 let isRestrictNoSlot1Store = 1;
7741 let Defs = [PC];
7742 let BaseOpcode = "J4_cmpgtur";
7743 let isTaken = Inst{13};
7744 let isExtendable = 1;
7745 let opExtendable = 2;
7746 let isExtentSigned = 1;
7747 let opExtentBits = 11;
7748 let opExtentAlign = 2;
7749 let opNewValue = 0;
7750 }
7751 def J4_cmpgtu_t_jumpnv_t : HInst<
7752 (outs),
7753 (ins IntRegs:$Ns8, IntRegs:$Rt32, b30_2Imm:$Ii),
7754 "if (cmp.gtu($Ns8.new,$Rt32)) jump:t $Ii",
7755 tc_9bfd761f, TypeNCJ>, Enc_c9a18e, PredRel {
7756 let Inst{0-0} = 0b0;
7757 let Inst{13-13} = 0b1;
7758 let Inst{19-19} = 0b0;
7759 let Inst{31-22} = 0b0010000100;
7760 let isPredicated = 1;
7761 let isTerminator = 1;
7762 let isBranch = 1;
7763 let isNewValue = 1;
7764 let cofMax1 = 1;
7765 let isRestrictNoSlot1Store = 1;
7766 let Defs = [PC];
7767 let BaseOpcode = "J4_cmpgtur";
7768 let isTaken = Inst{13};
7769 let isExtendable = 1;
7770 let opExtendable = 2;
7771 let isExtentSigned = 1;
7772 let opExtentBits = 11;
7773 let opExtentAlign = 2;
7774 let opNewValue = 0;
7775 }
7776 def J4_cmpgtu_tp0_jump_nt : HInst<
7777 (outs),
7778 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7779 "p0 = cmp.gtu($Rs16,$Rt16); if (p0.new) jump:nt $Ii",
7780 tc_56336eb0, TypeCJ>, Enc_6a5972, PredRel {
7781 let Inst{0-0} = 0b0;
7782 let Inst{13-12} = 0b00;
7783 let Inst{31-22} = 0b0001010100;
7784 let isPredicated = 1;
7785 let isTerminator = 1;
7786 let isBranch = 1;
7787 let isPredicatedNew = 1;
7788 let cofRelax1 = 1;
7789 let cofRelax2 = 1;
7790 let cofMax1 = 1;
7791 let Uses = [P0];
7792 let Defs = [P0, PC];
7793 let BaseOpcode = "J4_cmpgtup0";
7794 let isTaken = Inst{13};
7795 let isExtendable = 1;
7796 let opExtendable = 2;
7797 let isExtentSigned = 1;
7798 let opExtentBits = 11;
7799 let opExtentAlign = 2;
7800 }
7801 def J4_cmpgtu_tp0_jump_t : HInst<
7802 (outs),
7803 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7804 "p0 = cmp.gtu($Rs16,$Rt16); if (p0.new) jump:t $Ii",
7805 tc_56336eb0, TypeCJ>, Enc_6a5972, PredRel {
7806 let Inst{0-0} = 0b0;
7807 let Inst{13-12} = 0b10;
7808 let Inst{31-22} = 0b0001010100;
7809 let isPredicated = 1;
7810 let isTerminator = 1;
7811 let isBranch = 1;
7812 let isPredicatedNew = 1;
7813 let cofRelax1 = 1;
7814 let cofRelax2 = 1;
7815 let cofMax1 = 1;
7816 let Uses = [P0];
7817 let Defs = [P0, PC];
7818 let BaseOpcode = "J4_cmpgtup0";
7819 let isTaken = Inst{13};
7820 let isExtendable = 1;
7821 let opExtendable = 2;
7822 let isExtentSigned = 1;
7823 let opExtentBits = 11;
7824 let opExtentAlign = 2;
7825 }
7826 def J4_cmpgtu_tp1_jump_nt : HInst<
7827 (outs),
7828 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7829 "p1 = cmp.gtu($Rs16,$Rt16); if (p1.new) jump:nt $Ii",
7830 tc_56336eb0, TypeCJ>, Enc_6a5972, PredRel {
7831 let Inst{0-0} = 0b0;
7832 let Inst{13-12} = 0b01;
7833 let Inst{31-22} = 0b0001010100;
7834 let isPredicated = 1;
7835 let isTerminator = 1;
7836 let isBranch = 1;
7837 let isPredicatedNew = 1;
7838 let cofRelax1 = 1;
7839 let cofRelax2 = 1;
7840 let cofMax1 = 1;
7841 let Uses = [P1];
7842 let Defs = [P1, PC];
7843 let BaseOpcode = "J4_cmpgtup1";
7844 let isTaken = Inst{13};
7845 let isExtendable = 1;
7846 let opExtendable = 2;
7847 let isExtentSigned = 1;
7848 let opExtentBits = 11;
7849 let opExtentAlign = 2;
7850 }
7851 def J4_cmpgtu_tp1_jump_t : HInst<
7852 (outs),
7853 (ins GeneralSubRegs:$Rs16, GeneralSubRegs:$Rt16, b30_2Imm:$Ii),
7854 "p1 = cmp.gtu($Rs16,$Rt16); if (p1.new) jump:t $Ii",
7855 tc_56336eb0, TypeCJ>, Enc_6a5972, PredRel {
7856 let Inst{0-0} = 0b0;
7857 let Inst{13-12} = 0b11;
7858 let Inst{31-22} = 0b0001010100;
7859 let isPredicated = 1;
7860 let isTerminator = 1;
7861 let isBranch = 1;
7862 let isPredicatedNew = 1;
7863 let cofRelax1 = 1;
7864 let cofRelax2 = 1;
7865 let cofMax1 = 1;
7866 let Uses = [P1];
7867 let Defs = [P1, PC];
7868 let BaseOpcode = "J4_cmpgtup1";
7869 let isTaken = Inst{13};
7870 let isExtendable = 1;
7871 let opExtendable = 2;
7872 let isExtentSigned = 1;
7873 let opExtentBits = 11;
7874 let opExtentAlign = 2;
7875 }
7876 def J4_cmpgtui_f_jumpnv_nt : HInst<
7877 (outs),
7878 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
7879 "if (!cmp.gtu($Ns8.new,#$II)) jump:nt $Ii",
7880 tc_bd8382d1, TypeNCJ>, Enc_eafd18, PredRel {
7881 let Inst{0-0} = 0b0;
7882 let Inst{13-13} = 0b0;
7883 let Inst{19-19} = 0b0;
7884 let Inst{31-22} = 0b0010010101;
7885 let isPredicated = 1;
7886 let isPredicatedFalse = 1;
7887 let isTerminator = 1;
7888 let isBranch = 1;
7889 let isNewValue = 1;
7890 let cofMax1 = 1;
7891 let isRestrictNoSlot1Store = 1;
7892 let Defs = [PC];
7893 let BaseOpcode = "J4_cmpgtuir";
7894 let isTaken = Inst{13};
7895 let isExtendable = 1;
7896 let opExtendable = 2;
7897 let isExtentSigned = 1;
7898 let opExtentBits = 11;
7899 let opExtentAlign = 2;
7900 let opNewValue = 0;
7901 }
7902 def J4_cmpgtui_f_jumpnv_t : HInst<
7903 (outs),
7904 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
7905 "if (!cmp.gtu($Ns8.new,#$II)) jump:t $Ii",
7906 tc_bd8382d1, TypeNCJ>, Enc_eafd18, PredRel {
7907 let Inst{0-0} = 0b0;
7908 let Inst{13-13} = 0b1;
7909 let Inst{19-19} = 0b0;
7910 let Inst{31-22} = 0b0010010101;
7911 let isPredicated = 1;
7912 let isPredicatedFalse = 1;
7913 let isTerminator = 1;
7914 let isBranch = 1;
7915 let isNewValue = 1;
7916 let cofMax1 = 1;
7917 let isRestrictNoSlot1Store = 1;
7918 let Defs = [PC];
7919 let BaseOpcode = "J4_cmpgtuir";
7920 let isTaken = Inst{13};
7921 let isExtendable = 1;
7922 let opExtendable = 2;
7923 let isExtentSigned = 1;
7924 let opExtentBits = 11;
7925 let opExtentAlign = 2;
7926 let opNewValue = 0;
7927 }
7928 def J4_cmpgtui_fp0_jump_nt : HInst<
7929 (outs),
7930 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7931 "p0 = cmp.gtu($Rs16,#$II); if (!p0.new) jump:nt $Ii",
7932 tc_3d495a39, TypeCJ>, Enc_14d27a, PredRel {
7933 let Inst{0-0} = 0b0;
7934 let Inst{13-13} = 0b0;
7935 let Inst{31-22} = 0b0001000101;
7936 let isPredicated = 1;
7937 let isPredicatedFalse = 1;
7938 let isTerminator = 1;
7939 let isBranch = 1;
7940 let isPredicatedNew = 1;
7941 let cofRelax1 = 1;
7942 let cofRelax2 = 1;
7943 let cofMax1 = 1;
7944 let Uses = [P0];
7945 let Defs = [P0, PC];
7946 let BaseOpcode = "J4_cmpgtuip0";
7947 let isTaken = Inst{13};
7948 let isExtendable = 1;
7949 let opExtendable = 2;
7950 let isExtentSigned = 1;
7951 let opExtentBits = 11;
7952 let opExtentAlign = 2;
7953 }
7954 def J4_cmpgtui_fp0_jump_t : HInst<
7955 (outs),
7956 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7957 "p0 = cmp.gtu($Rs16,#$II); if (!p0.new) jump:t $Ii",
7958 tc_3d495a39, TypeCJ>, Enc_14d27a, PredRel {
7959 let Inst{0-0} = 0b0;
7960 let Inst{13-13} = 0b1;
7961 let Inst{31-22} = 0b0001000101;
7962 let isPredicated = 1;
7963 let isPredicatedFalse = 1;
7964 let isTerminator = 1;
7965 let isBranch = 1;
7966 let isPredicatedNew = 1;
7967 let cofRelax1 = 1;
7968 let cofRelax2 = 1;
7969 let cofMax1 = 1;
7970 let Uses = [P0];
7971 let Defs = [P0, PC];
7972 let BaseOpcode = "J4_cmpgtuip0";
7973 let isTaken = Inst{13};
7974 let isExtendable = 1;
7975 let opExtendable = 2;
7976 let isExtentSigned = 1;
7977 let opExtentBits = 11;
7978 let opExtentAlign = 2;
7979 }
7980 def J4_cmpgtui_fp1_jump_nt : HInst<
7981 (outs),
7982 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
7983 "p1 = cmp.gtu($Rs16,#$II); if (!p1.new) jump:nt $Ii",
7984 tc_3d495a39, TypeCJ>, Enc_14d27a, PredRel {
7985 let Inst{0-0} = 0b0;
7986 let Inst{13-13} = 0b0;
7987 let Inst{31-22} = 0b0001001101;
7988 let isPredicated = 1;
7989 let isPredicatedFalse = 1;
7990 let isTerminator = 1;
7991 let isBranch = 1;
7992 let isPredicatedNew = 1;
7993 let cofRelax1 = 1;
7994 let cofRelax2 = 1;
7995 let cofMax1 = 1;
7996 let Uses = [P1];
7997 let Defs = [P1, PC];
7998 let BaseOpcode = "J4_cmpgtuip1";
7999 let isTaken = Inst{13};
8000 let isExtendable = 1;
8001 let opExtendable = 2;
8002 let isExtentSigned = 1;
8003 let opExtentBits = 11;
8004 let opExtentAlign = 2;
8005 }
8006 def J4_cmpgtui_fp1_jump_t : HInst<
8007 (outs),
8008 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
8009 "p1 = cmp.gtu($Rs16,#$II); if (!p1.new) jump:t $Ii",
8010 tc_3d495a39, TypeCJ>, Enc_14d27a, PredRel {
8011 let Inst{0-0} = 0b0;
8012 let Inst{13-13} = 0b1;
8013 let Inst{31-22} = 0b0001001101;
8014 let isPredicated = 1;
8015 let isPredicatedFalse = 1;
8016 let isTerminator = 1;
8017 let isBranch = 1;
8018 let isPredicatedNew = 1;
8019 let cofRelax1 = 1;
8020 let cofRelax2 = 1;
8021 let cofMax1 = 1;
8022 let Uses = [P1];
8023 let Defs = [P1, PC];
8024 let BaseOpcode = "J4_cmpgtuip1";
8025 let isTaken = Inst{13};
8026 let isExtendable = 1;
8027 let opExtendable = 2;
8028 let isExtentSigned = 1;
8029 let opExtentBits = 11;
8030 let opExtentAlign = 2;
8031 }
8032 def J4_cmpgtui_t_jumpnv_nt : HInst<
8033 (outs),
8034 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
8035 "if (cmp.gtu($Ns8.new,#$II)) jump:nt $Ii",
8036 tc_bd8382d1, TypeNCJ>, Enc_eafd18, PredRel {
8037 let Inst{0-0} = 0b0;
8038 let Inst{13-13} = 0b0;
8039 let Inst{19-19} = 0b0;
8040 let Inst{31-22} = 0b0010010100;
8041 let isPredicated = 1;
8042 let isTerminator = 1;
8043 let isBranch = 1;
8044 let isNewValue = 1;
8045 let cofMax1 = 1;
8046 let isRestrictNoSlot1Store = 1;
8047 let Defs = [PC];
8048 let BaseOpcode = "J4_cmpgtuir";
8049 let isTaken = Inst{13};
8050 let isExtendable = 1;
8051 let opExtendable = 2;
8052 let isExtentSigned = 1;
8053 let opExtentBits = 11;
8054 let opExtentAlign = 2;
8055 let opNewValue = 0;
8056 }
8057 def J4_cmpgtui_t_jumpnv_t : HInst<
8058 (outs),
8059 (ins IntRegs:$Ns8, u5_0Imm:$II, b30_2Imm:$Ii),
8060 "if (cmp.gtu($Ns8.new,#$II)) jump:t $Ii",
8061 tc_bd8382d1, TypeNCJ>, Enc_eafd18, PredRel {
8062 let Inst{0-0} = 0b0;
8063 let Inst{13-13} = 0b1;
8064 let Inst{19-19} = 0b0;
8065 let Inst{31-22} = 0b0010010100;
8066 let isPredicated = 1;
8067 let isTerminator = 1;
8068 let isBranch = 1;
8069 let isNewValue = 1;
8070 let cofMax1 = 1;
8071 let isRestrictNoSlot1Store = 1;
8072 let Defs = [PC];
8073 let BaseOpcode = "J4_cmpgtuir";
8074 let isTaken = Inst{13};
8075 let isExtendable = 1;
8076 let opExtendable = 2;
8077 let isExtentSigned = 1;
8078 let opExtentBits = 11;
8079 let opExtentAlign = 2;
8080 let opNewValue = 0;
8081 }
8082 def J4_cmpgtui_tp0_jump_nt : HInst<
8083 (outs),
8084 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
8085 "p0 = cmp.gtu($Rs16,#$II); if (p0.new) jump:nt $Ii",
8086 tc_3d495a39, TypeCJ>, Enc_14d27a, PredRel {
8087 let Inst{0-0} = 0b0;
8088 let Inst{13-13} = 0b0;
8089 let Inst{31-22} = 0b0001000100;
8090 let isPredicated = 1;
8091 let isTerminator = 1;
8092 let isBranch = 1;
8093 let isPredicatedNew = 1;
8094 let cofRelax1 = 1;
8095 let cofRelax2 = 1;
8096 let cofMax1 = 1;
8097 let Uses = [P0];
8098 let Defs = [P0, PC];
8099 let BaseOpcode = "J4_cmpgtuip0";
8100 let isTaken = Inst{13};
8101 let isExtendable = 1;
8102 let opExtendable = 2;
8103 let isExtentSigned = 1;
8104 let opExtentBits = 11;
8105 let opExtentAlign = 2;
8106 }
8107 def J4_cmpgtui_tp0_jump_t : HInst<
8108 (outs),
8109 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
8110 "p0 = cmp.gtu($Rs16,#$II); if (p0.new) jump:t $Ii",
8111 tc_3d495a39, TypeCJ>, Enc_14d27a, PredRel {
8112 let Inst{0-0} = 0b0;
8113 let Inst{13-13} = 0b1;
8114 let Inst{31-22} = 0b0001000100;
8115 let isPredicated = 1;
8116 let isTerminator = 1;
8117 let isBranch = 1;
8118 let isPredicatedNew = 1;
8119 let cofRelax1 = 1;
8120 let cofRelax2 = 1;
8121 let cofMax1 = 1;
8122 let Uses = [P0];
8123 let Defs = [P0, PC];
8124 let BaseOpcode = "J4_cmpgtuip0";
8125 let isTaken = Inst{13};
8126 let isExtendable = 1;
8127 let opExtendable = 2;
8128 let isExtentSigned = 1;
8129 let opExtentBits = 11;
8130 let opExtentAlign = 2;
8131 }
8132 def J4_cmpgtui_tp1_jump_nt : HInst<
8133 (outs),
8134 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
8135 "p1 = cmp.gtu($Rs16,#$II); if (p1.new) jump:nt $Ii",
8136 tc_3d495a39, TypeCJ>, Enc_14d27a, PredRel {
8137 let Inst{0-0} = 0b0;
8138 let Inst{13-13} = 0b0;
8139 let Inst{31-22} = 0b0001001100;
8140 let isPredicated = 1;
8141 let isTerminator = 1;
8142 let isBranch = 1;
8143 let isPredicatedNew = 1;
8144 let cofRelax1 = 1;
8145 let cofRelax2 = 1;
8146 let cofMax1 = 1;
8147 let Uses = [P1];
8148 let Defs = [P1, PC];
8149 let BaseOpcode = "J4_cmpgtuip1";
8150 let isTaken = Inst{13};
8151 let isExtendable = 1;
8152 let opExtendable = 2;
8153 let isExtentSigned = 1;
8154 let opExtentBits = 11;
8155 let opExtentAlign = 2;
8156 }
8157 def J4_cmpgtui_tp1_jump_t : HInst<
8158 (outs),
8159 (ins GeneralSubRegs:$Rs16, u5_0Imm:$II, b30_2Imm:$Ii),
8160 "p1 = cmp.gtu($Rs16,#$II); if (p1.new) jump:t $Ii",
8161 tc_3d495a39, TypeCJ>, Enc_14d27a, PredRel {
8162 let Inst{0-0} = 0b0;
8163 let Inst{13-13} = 0b1;
8164 let Inst{31-22} = 0b0001001100;
8165 let isPredicated = 1;
8166 let isTerminator = 1;
8167 let isBranch = 1;
8168 let isPredicatedNew = 1;
8169 let cofRelax1 = 1;
8170 let cofRelax2 = 1;
8171 let cofMax1 = 1;
8172 let Uses = [P1];
8173 let Defs = [P1, PC];
8174 let BaseOpcode = "J4_cmpgtuip1";
8175 let isTaken = Inst{13};
8176 let isExtendable = 1;
8177 let opExtendable = 2;
8178 let isExtentSigned = 1;
8179 let opExtentBits = 11;
8180 let opExtentAlign = 2;
8181 }
8182 def J4_cmplt_f_jumpnv_nt : HInst<
8183 (outs),
8184 (ins IntRegs:$Rt32, IntRegs:$Ns8, b30_2Imm:$Ii),
8185 "if (!cmp.gt($Rt32,$Ns8.new)) jump:nt $Ii",
8186 tc_b343892a, TypeNCJ>, Enc_5de85f, PredRel {
8187 let Inst{0-0} = 0b0;
8188 let Inst{13-13} = 0b0;
8189 let Inst{19-19} = 0b0;
8190 let Inst{31-22} = 0b0010000111;
8191 let isPredicated = 1;
8192 let isPredicatedFalse = 1;
8193 let isTerminator = 1;
8194 let isBranch = 1;
8195 let isNewValue = 1;
8196 let cofMax1 = 1;
8197 let isRestrictNoSlot1Store = 1;
8198 let Defs = [PC];
8199 let BaseOpcode = "J4_cmpltr";
8200 let isTaken = Inst{13};
8201 let isExtendable = 1;
8202 let opExtendable = 2;
8203 let isExtentSigned = 1;
8204 let opExtentBits = 11;
8205 let opExtentAlign = 2;
8206 let opNewValue = 1;
8207 }
8208 def J4_cmplt_f_jumpnv_t : HInst<
8209 (outs),
8210 (ins IntRegs:$Rt32, IntRegs:$Ns8, b30_2Imm:$Ii),
8211 "if (!cmp.gt($Rt32,$Ns8.new)) jump:t $Ii",
8212 tc_b343892a, TypeNCJ>, Enc_5de85f, PredRel {
8213 let Inst{0-0} = 0b0;
8214 let Inst{13-13} = 0b1;
8215 let Inst{19-19} = 0b0;
8216 let Inst{31-22} = 0b0010000111;
8217 let isPredicated = 1;
8218 let isPredicatedFalse = 1;
8219 let isTerminator = 1;
8220 let isBranch = 1;
8221 let isNewValue = 1;
8222 let cofMax1 = 1;
8223 let isRestrictNoSlot1Store = 1;
8224 let Defs = [PC];
8225 let BaseOpcode = "J4_cmpltr";
8226 let isTaken = Inst{13};
8227 let isExtendable = 1;
8228 let opExtendable = 2;
8229 let isExtentSigned = 1;
8230 let opExtentBits = 11;
8231 let opExtentAlign = 2;
8232 let opNewValue = 1;
8233 }
8234 def J4_cmplt_t_jumpnv_nt : HInst<
8235 (outs),
8236 (ins IntRegs:$Rt32, IntRegs:$Ns8, b30_2Imm:$Ii),
8237 "if (cmp.gt($Rt32,$Ns8.new)) jump:nt $Ii",
8238 tc_b343892a, TypeNCJ>, Enc_5de85f, PredRel {
8239 let Inst{0-0} = 0b0;
8240 let Inst{13-13} = 0b0;
8241 let Inst{19-19} = 0b0;
8242 let Inst{31-22} = 0b0010000110;
8243 let isPredicated = 1;
8244 let isTerminator = 1;
8245 let isBranch = 1;
8246 let isNewValue = 1;
8247 let cofMax1 = 1;
8248 let isRestrictNoSlot1Store = 1;
8249 let Defs = [PC];
8250 let BaseOpcode = "J4_cmpltr";
8251 let isTaken = Inst{13};
8252 let isExtendable = 1;
8253 let opExtendable = 2;
8254 let isExtentSigned = 1;
8255 let opExtentBits = 11;
8256 let opExtentAlign = 2;
8257 let opNewValue = 1;
8258 }
8259 def J4_cmplt_t_jumpnv_t : HInst<
8260 (outs),
8261 (ins IntRegs:$Rt32, IntRegs:$Ns8, b30_2Imm:$Ii),
8262 "if (cmp.gt($Rt32,$Ns8.new)) jump:t $Ii",
8263 tc_b343892a, TypeNCJ>, Enc_5de85f, PredRel {
8264 let Inst{0-0} = 0b0;
8265 let Inst{13-13} = 0b1;
8266 let Inst{19-19} = 0b0;
8267 let Inst{31-22} = 0b0010000110;
8268 let isPredicated = 1;
8269 let isTerminator = 1;
8270 let isBranch = 1;
8271 let isNewValue = 1;
8272 let cofMax1 = 1;
8273 let isRestrictNoSlot1Store = 1;
8274 let Defs = [PC];
8275 let BaseOpcode = "J4_cmpltr";
8276 let isTaken = Inst{13};
8277 let isExtendable = 1;
8278 let opExtendable = 2;
8279 let isExtentSigned = 1;
8280 let opExtentBits = 11;
8281 let opExtentAlign = 2;
8282 let opNewValue = 1;
8283 }
8284 def J4_cmpltu_f_jumpnv_nt : HInst<
8285 (outs),
8286 (ins IntRegs:$Rt32, IntRegs:$Ns8, b30_2Imm:$Ii),
8287 "if (!cmp.gtu($Rt32,$Ns8.new)) jump:nt $Ii",
8288 tc_b343892a, TypeNCJ>, Enc_5de85f, PredRel {
8289 let Inst{0-0} = 0b0;
8290 let Inst{13-13} = 0b0;
8291 let Inst{19-19} = 0b0;
8292 let Inst{31-22} = 0b0010001001;
8293 let isPredicated = 1;
8294 let isPredicatedFalse = 1;
8295 let isTerminator = 1;
8296 let isBranch = 1;
8297 let isNewValue = 1;
8298 let cofMax1 = 1;
8299 let isRestrictNoSlot1Store = 1;
8300 let Defs = [PC];
8301 let BaseOpcode = "J4_cmpltur";
8302 let isTaken = Inst{13};
8303 let isExtendable = 1;
8304 let opExtendable = 2;
8305 let isExtentSigned = 1;
8306 let opExtentBits = 11;
8307 let opExtentAlign = 2;
8308 let opNewValue = 1;
8309 }
8310 def J4_cmpltu_f_jumpnv_t : HInst<
8311 (outs),
8312 (ins IntRegs:$Rt32, IntRegs:$Ns8, b30_2Imm:$Ii),
8313 "if (!cmp.gtu($Rt32,$Ns8.new)) jump:t $Ii",
8314 tc_b343892a, TypeNCJ>, Enc_5de85f, PredRel {
8315 let Inst{0-0} = 0b0;
8316 let Inst{13-13} = 0b1;
8317 let Inst{19-19} = 0b0;
8318 let Inst{31-22} = 0b0010001001;
8319 let isPredicated = 1;
8320 let isPredicatedFalse = 1;
8321 let isTerminator = 1;
8322 let isBranch = 1;
8323 let isNewValue = 1;
8324 let cofMax1 = 1;
8325 let isRestrictNoSlot1Store = 1;
8326 let Defs = [PC];
8327 let BaseOpcode = "J4_cmpltur";
8328 let isTaken = Inst{13};
8329 let isExtendable = 1;
8330 let opExtendable = 2;
8331 let isExtentSigned = 1;
8332 let opExtentBits = 11;
8333 let opExtentAlign = 2;
8334 let opNewValue = 1;
8335 }
8336 def J4_cmpltu_t_jumpnv_nt : HInst<
8337 (outs),
8338 (ins IntRegs:$Rt32, IntRegs:$Ns8, b30_2Imm:$Ii),
8339 "if (cmp.gtu($Rt32,$Ns8.new)) jump:nt $Ii",
8340 tc_b343892a, TypeNCJ>, Enc_5de85f, PredRel {
8341 let Inst{0-0} = 0b0;
8342 let Inst{13-13} = 0b0;
8343 let Inst{19-19} = 0b0;
8344 let Inst{31-22} = 0b0010001000;
8345 let isPredicated = 1;
8346 let isTerminator = 1;
8347 let isBranch = 1;
8348 let isNewValue = 1;
8349 let cofMax1 = 1;
8350 let isRestrictNoSlot1Store = 1;
8351 let Defs = [PC];
8352 let BaseOpcode = "J4_cmpltur";
8353 let isTaken = Inst{13};
8354 let isExtendable = 1;
8355 let opExtendable = 2;
8356 let isExtentSigned = 1;
8357 let opExtentBits = 11;
8358 let opExtentAlign = 2;
8359 let opNewValue = 1;
8360 }
8361 def J4_cmpltu_t_jumpnv_t : HInst<
8362 (outs),
8363 (ins IntRegs:$Rt32, IntRegs:$Ns8, b30_2Imm:$Ii),
8364 "if (cmp.gtu($Rt32,$Ns8.new)) jump:t $Ii",
8365 tc_b343892a, TypeNCJ>, Enc_5de85f, PredRel {
8366 let Inst{0-0} = 0b0;
8367 let Inst{13-13} = 0b1;
8368 let Inst{19-19} = 0b0;
8369 let Inst{31-22} = 0b0010001000;
8370 let isPredicated = 1;
8371 let isTerminator = 1;
8372 let isBranch = 1;
8373 let isNewValue = 1;
8374 let cofMax1 = 1;
8375 let isRestrictNoSlot1Store = 1;
8376 let Defs = [PC];
8377 let BaseOpcode = "J4_cmpltur";
8378 let isTaken = Inst{13};
8379 let isExtendable = 1;
8380 let opExtendable = 2;
8381 let isExtentSigned = 1;
8382 let opExtentBits = 11;
8383 let opExtentAlign = 2;
8384 let opNewValue = 1;
8385 }
8386 def J4_hintjumpr : HInst<
8387 (outs),
8388 (ins IntRegs:$Rs32),
8389 "hintjr($Rs32)",
8390 tc_d5b7b0c1, TypeJ>, Enc_ecbcc8 {
8391 let Inst{13-0} = 0b00000000000000;
8392 let Inst{31-21} = 0b01010010101;
8393 let isTerminator = 1;
8394 let isIndirectBranch = 1;
8395 let isBranch = 1;
8396 let cofMax1 = 1;
8397 }
8398 def J4_jumpseti : HInst<
8399 (outs GeneralSubRegs:$Rd16),
8400 (ins u6_0Imm:$II, b30_2Imm:$Ii),
8401 "$Rd16 = #$II ; jump $Ii",
8402 tc_0663f615, TypeCJ>, Enc_9e4c3f {
8403 let Inst{0-0} = 0b0;
8404 let Inst{31-22} = 0b0001011000;
8405 let hasNewValue = 1;
8406 let opNewValue = 0;
8407 let isTerminator = 1;
8408 let isBranch = 1;
8409 let cofRelax2 = 1;
8410 let cofMax1 = 1;
8411 let Defs = [PC];
8412 let isExtendable = 1;
8413 let opExtendable = 2;
8414 let isExtentSigned = 1;
8415 let opExtentBits = 11;
8416 let opExtentAlign = 2;
8417 }
8418 def J4_jumpsetr : HInst<
8419 (outs GeneralSubRegs:$Rd16),
8420 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8421 "$Rd16 = $Rs16 ; jump $Ii",
8422 tc_0663f615, TypeCJ>, Enc_66bce1 {
8423 let Inst{0-0} = 0b0;
8424 let Inst{13-12} = 0b00;
8425 let Inst{31-22} = 0b0001011100;
8426 let hasNewValue = 1;
8427 let opNewValue = 0;
8428 let isTerminator = 1;
8429 let isBranch = 1;
8430 let cofRelax2 = 1;
8431 let cofMax1 = 1;
8432 let Defs = [PC];
8433 let isExtendable = 1;
8434 let opExtendable = 2;
8435 let isExtentSigned = 1;
8436 let opExtentBits = 11;
8437 let opExtentAlign = 2;
8438 }
8439 def J4_tstbit0_f_jumpnv_nt : HInst<
8440 (outs),
8441 (ins IntRegs:$Ns8, b30_2Imm:$Ii),
8442 "if (!tstbit($Ns8.new,#0)) jump:nt $Ii",
8443 tc_8c945be0, TypeNCJ>, Enc_69d63b {
8444 let Inst{0-0} = 0b0;
8445 let Inst{13-8} = 0b000000;
8446 let Inst{19-19} = 0b0;
8447 let Inst{31-22} = 0b0010010111;
8448 let isPredicated = 1;
8449 let isPredicatedFalse = 1;
8450 let isTerminator = 1;
8451 let isBranch = 1;
8452 let isNewValue = 1;
8453 let cofMax1 = 1;
8454 let isRestrictNoSlot1Store = 1;
8455 let Defs = [PC];
8456 let isTaken = Inst{13};
8457 let isExtendable = 1;
8458 let opExtendable = 1;
8459 let isExtentSigned = 1;
8460 let opExtentBits = 11;
8461 let opExtentAlign = 2;
8462 let opNewValue = 0;
8463 }
8464 def J4_tstbit0_f_jumpnv_t : HInst<
8465 (outs),
8466 (ins IntRegs:$Ns8, b30_2Imm:$Ii),
8467 "if (!tstbit($Ns8.new,#0)) jump:t $Ii",
8468 tc_8c945be0, TypeNCJ>, Enc_69d63b {
8469 let Inst{0-0} = 0b0;
8470 let Inst{13-8} = 0b100000;
8471 let Inst{19-19} = 0b0;
8472 let Inst{31-22} = 0b0010010111;
8473 let isPredicated = 1;
8474 let isPredicatedFalse = 1;
8475 let isTerminator = 1;
8476 let isBranch = 1;
8477 let isNewValue = 1;
8478 let cofMax1 = 1;
8479 let isRestrictNoSlot1Store = 1;
8480 let Defs = [PC];
8481 let isTaken = Inst{13};
8482 let isExtendable = 1;
8483 let opExtendable = 1;
8484 let isExtentSigned = 1;
8485 let opExtentBits = 11;
8486 let opExtentAlign = 2;
8487 let opNewValue = 0;
8488 }
8489 def J4_tstbit0_fp0_jump_nt : HInst<
8490 (outs),
8491 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8492 "p0 = tstbit($Rs16,#0); if (!p0.new) jump:nt $Ii",
8493 tc_2332b92e, TypeCJ>, Enc_ad1c74 {
8494 let Inst{0-0} = 0b0;
8495 let Inst{13-8} = 0b000011;
8496 let Inst{31-22} = 0b0001000111;
8497 let isPredicated = 1;
8498 let isPredicatedFalse = 1;
8499 let isTerminator = 1;
8500 let isBranch = 1;
8501 let isPredicatedNew = 1;
8502 let cofRelax1 = 1;
8503 let cofRelax2 = 1;
8504 let cofMax1 = 1;
8505 let Uses = [P0];
8506 let Defs = [P0, PC];
8507 let isTaken = Inst{13};
8508 let isExtendable = 1;
8509 let opExtendable = 1;
8510 let isExtentSigned = 1;
8511 let opExtentBits = 11;
8512 let opExtentAlign = 2;
8513 }
8514 def J4_tstbit0_fp0_jump_t : HInst<
8515 (outs),
8516 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8517 "p0 = tstbit($Rs16,#0); if (!p0.new) jump:t $Ii",
8518 tc_2332b92e, TypeCJ>, Enc_ad1c74 {
8519 let Inst{0-0} = 0b0;
8520 let Inst{13-8} = 0b100011;
8521 let Inst{31-22} = 0b0001000111;
8522 let isPredicated = 1;
8523 let isPredicatedFalse = 1;
8524 let isTerminator = 1;
8525 let isBranch = 1;
8526 let isPredicatedNew = 1;
8527 let cofRelax1 = 1;
8528 let cofRelax2 = 1;
8529 let cofMax1 = 1;
8530 let Uses = [P0];
8531 let Defs = [P0, PC];
8532 let isTaken = Inst{13};
8533 let isExtendable = 1;
8534 let opExtendable = 1;
8535 let isExtentSigned = 1;
8536 let opExtentBits = 11;
8537 let opExtentAlign = 2;
8538 }
8539 def J4_tstbit0_fp1_jump_nt : HInst<
8540 (outs),
8541 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8542 "p1 = tstbit($Rs16,#0); if (!p1.new) jump:nt $Ii",
8543 tc_2332b92e, TypeCJ>, Enc_ad1c74 {
8544 let Inst{0-0} = 0b0;
8545 let Inst{13-8} = 0b000011;
8546 let Inst{31-22} = 0b0001001111;
8547 let isPredicated = 1;
8548 let isPredicatedFalse = 1;
8549 let isTerminator = 1;
8550 let isBranch = 1;
8551 let isPredicatedNew = 1;
8552 let cofRelax1 = 1;
8553 let cofRelax2 = 1;
8554 let cofMax1 = 1;
8555 let Uses = [P1];
8556 let Defs = [P1, PC];
8557 let isTaken = Inst{13};
8558 let isExtendable = 1;
8559 let opExtendable = 1;
8560 let isExtentSigned = 1;
8561 let opExtentBits = 11;
8562 let opExtentAlign = 2;
8563 }
8564 def J4_tstbit0_fp1_jump_t : HInst<
8565 (outs),
8566 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8567 "p1 = tstbit($Rs16,#0); if (!p1.new) jump:t $Ii",
8568 tc_2332b92e, TypeCJ>, Enc_ad1c74 {
8569 let Inst{0-0} = 0b0;
8570 let Inst{13-8} = 0b100011;
8571 let Inst{31-22} = 0b0001001111;
8572 let isPredicated = 1;
8573 let isPredicatedFalse = 1;
8574 let isTerminator = 1;
8575 let isBranch = 1;
8576 let isPredicatedNew = 1;
8577 let cofRelax1 = 1;
8578 let cofRelax2 = 1;
8579 let cofMax1 = 1;
8580 let Uses = [P1];
8581 let Defs = [P1, PC];
8582 let isTaken = Inst{13};
8583 let isExtendable = 1;
8584 let opExtendable = 1;
8585 let isExtentSigned = 1;
8586 let opExtentBits = 11;
8587 let opExtentAlign = 2;
8588 }
8589 def J4_tstbit0_t_jumpnv_nt : HInst<
8590 (outs),
8591 (ins IntRegs:$Ns8, b30_2Imm:$Ii),
8592 "if (tstbit($Ns8.new,#0)) jump:nt $Ii",
8593 tc_8c945be0, TypeNCJ>, Enc_69d63b {
8594 let Inst{0-0} = 0b0;
8595 let Inst{13-8} = 0b000000;
8596 let Inst{19-19} = 0b0;
8597 let Inst{31-22} = 0b0010010110;
8598 let isPredicated = 1;
8599 let isTerminator = 1;
8600 let isBranch = 1;
8601 let isNewValue = 1;
8602 let cofMax1 = 1;
8603 let isRestrictNoSlot1Store = 1;
8604 let Defs = [PC];
8605 let isTaken = Inst{13};
8606 let isExtendable = 1;
8607 let opExtendable = 1;
8608 let isExtentSigned = 1;
8609 let opExtentBits = 11;
8610 let opExtentAlign = 2;
8611 let opNewValue = 0;
8612 }
8613 def J4_tstbit0_t_jumpnv_t : HInst<
8614 (outs),
8615 (ins IntRegs:$Ns8, b30_2Imm:$Ii),
8616 "if (tstbit($Ns8.new,#0)) jump:t $Ii",
8617 tc_8c945be0, TypeNCJ>, Enc_69d63b {
8618 let Inst{0-0} = 0b0;
8619 let Inst{13-8} = 0b100000;
8620 let Inst{19-19} = 0b0;
8621 let Inst{31-22} = 0b0010010110;
8622 let isPredicated = 1;
8623 let isTerminator = 1;
8624 let isBranch = 1;
8625 let isNewValue = 1;
8626 let cofMax1 = 1;
8627 let isRestrictNoSlot1Store = 1;
8628 let Defs = [PC];
8629 let isTaken = Inst{13};
8630 let isExtendable = 1;
8631 let opExtendable = 1;
8632 let isExtentSigned = 1;
8633 let opExtentBits = 11;
8634 let opExtentAlign = 2;
8635 let opNewValue = 0;
8636 }
8637 def J4_tstbit0_tp0_jump_nt : HInst<
8638 (outs),
8639 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8640 "p0 = tstbit($Rs16,#0); if (p0.new) jump:nt $Ii",
8641 tc_2332b92e, TypeCJ>, Enc_ad1c74 {
8642 let Inst{0-0} = 0b0;
8643 let Inst{13-8} = 0b000011;
8644 let Inst{31-22} = 0b0001000110;
8645 let isPredicated = 1;
8646 let isTerminator = 1;
8647 let isBranch = 1;
8648 let isPredicatedNew = 1;
8649 let cofRelax1 = 1;
8650 let cofRelax2 = 1;
8651 let cofMax1 = 1;
8652 let Uses = [P0];
8653 let Defs = [P0, PC];
8654 let isTaken = Inst{13};
8655 let isExtendable = 1;
8656 let opExtendable = 1;
8657 let isExtentSigned = 1;
8658 let opExtentBits = 11;
8659 let opExtentAlign = 2;
8660 }
8661 def J4_tstbit0_tp0_jump_t : HInst<
8662 (outs),
8663 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8664 "p0 = tstbit($Rs16,#0); if (p0.new) jump:t $Ii",
8665 tc_2332b92e, TypeCJ>, Enc_ad1c74 {
8666 let Inst{0-0} = 0b0;
8667 let Inst{13-8} = 0b100011;
8668 let Inst{31-22} = 0b0001000110;
8669 let isPredicated = 1;
8670 let isTerminator = 1;
8671 let isBranch = 1;
8672 let isPredicatedNew = 1;
8673 let cofRelax1 = 1;
8674 let cofRelax2 = 1;
8675 let cofMax1 = 1;
8676 let Uses = [P0];
8677 let Defs = [P0, PC];
8678 let isTaken = Inst{13};
8679 let isExtendable = 1;
8680 let opExtendable = 1;
8681 let isExtentSigned = 1;
8682 let opExtentBits = 11;
8683 let opExtentAlign = 2;
8684 }
8685 def J4_tstbit0_tp1_jump_nt : HInst<
8686 (outs),
8687 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8688 "p1 = tstbit($Rs16,#0); if (p1.new) jump:nt $Ii",
8689 tc_2332b92e, TypeCJ>, Enc_ad1c74 {
8690 let Inst{0-0} = 0b0;
8691 let Inst{13-8} = 0b000011;
8692 let Inst{31-22} = 0b0001001110;
8693 let isPredicated = 1;
8694 let isTerminator = 1;
8695 let isBranch = 1;
8696 let isPredicatedNew = 1;
8697 let cofRelax1 = 1;
8698 let cofRelax2 = 1;
8699 let cofMax1 = 1;
8700 let Uses = [P1];
8701 let Defs = [P1, PC];
8702 let isTaken = Inst{13};
8703 let isExtendable = 1;
8704 let opExtendable = 1;
8705 let isExtentSigned = 1;
8706 let opExtentBits = 11;
8707 let opExtentAlign = 2;
8708 }
8709 def J4_tstbit0_tp1_jump_t : HInst<
8710 (outs),
8711 (ins GeneralSubRegs:$Rs16, b30_2Imm:$Ii),
8712 "p1 = tstbit($Rs16,#0); if (p1.new) jump:t $Ii",
8713 tc_2332b92e, TypeCJ>, Enc_ad1c74 {
8714 let Inst{0-0} = 0b0;
8715 let Inst{13-8} = 0b100011;
8716 let Inst{31-22} = 0b0001001110;
8717 let isPredicated = 1;
8718 let isTerminator = 1;
8719 let isBranch = 1;
8720 let isPredicatedNew = 1;
8721 let cofRelax1 = 1;
8722 let cofRelax2 = 1;
8723 let cofMax1 = 1;
8724 let Uses = [P1];
8725 let Defs = [P1, PC];
8726 let isTaken = Inst{13};
8727 let isExtendable = 1;
8728 let opExtendable = 1;
8729 let isExtentSigned = 1;
8730 let opExtentBits = 11;
8731 let opExtentAlign = 2;
8732 }
8733 def L2_deallocframe : HInst<
8734 (outs DoubleRegs:$Rdd32),
8735 (ins IntRegs:$Rs32),
8736 "$Rdd32 = deallocframe($Rs32):raw",
8737 tc_15aa71c5, TypeLD>, Enc_3a3d62 {
8738 let Inst{13-5} = 0b000000000;
8739 let Inst{31-21} = 0b10010000000;
8740 let accessSize = DoubleWordAccess;
8741 let mayLoad = 1;
8742 let Uses = [FRAMEKEY];
8743 let Defs = [R29];
8744 }
8745 def L2_loadalignb_io : HInst<
8746 (outs DoubleRegs:$Ryy32),
8747 (ins DoubleRegs:$Ryy32in, IntRegs:$Rs32, s32_0Imm:$Ii),
8748 "$Ryy32 = memb_fifo($Rs32+#$Ii)",
8749 tc_5ef37dc4, TypeLD>, Enc_a27588 {
8750 let Inst{24-21} = 0b0100;
8751 let Inst{31-27} = 0b10010;
8752 let addrMode = BaseImmOffset;
8753 let accessSize = ByteAccess;
8754 let mayLoad = 1;
8755 let isExtendable = 1;
8756 let opExtendable = 3;
8757 let isExtentSigned = 1;
8758 let opExtentBits = 11;
8759 let opExtentAlign = 0;
8760 let Constraints = "$Ryy32 = $Ryy32in";
8761 }
8762 def L2_loadalignb_pbr : HInst<
8763 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8764 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, ModRegs:$Mu2),
8765 "$Ryy32 = memb_fifo($Rx32++$Mu2:brev)",
8766 tc_3c76b0ff, TypeLD>, Enc_1f5d8f {
8767 let Inst{12-5} = 0b00000000;
8768 let Inst{31-21} = 0b10011110100;
8769 let addrMode = PostInc;
8770 let accessSize = ByteAccess;
8771 let mayLoad = 1;
8772 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8773 }
8774 def L2_loadalignb_pci : HInst<
8775 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8776 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, s4_0Imm:$Ii, ModRegs:$Mu2),
8777 "$Ryy32 = memb_fifo($Rx32++#$Ii:circ($Mu2))",
8778 tc_785f65a7, TypeLD>, Enc_74aef2 {
8779 let Inst{12-9} = 0b0000;
8780 let Inst{31-21} = 0b10011000100;
8781 let addrMode = PostInc;
8782 let accessSize = ByteAccess;
8783 let mayLoad = 1;
8784 let Uses = [CS];
8785 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8786 }
8787 def L2_loadalignb_pcr : HInst<
8788 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8789 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, ModRegs:$Mu2),
8790 "$Ryy32 = memb_fifo($Rx32++I:circ($Mu2))",
8791 tc_3c76b0ff, TypeLD>, Enc_1f5d8f {
8792 let Inst{12-5} = 0b00010000;
8793 let Inst{31-21} = 0b10011000100;
8794 let addrMode = PostInc;
8795 let accessSize = ByteAccess;
8796 let mayLoad = 1;
8797 let Uses = [CS];
8798 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8799 }
8800 def L2_loadalignb_pi : HInst<
8801 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8802 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, s4_0Imm:$Ii),
8803 "$Ryy32 = memb_fifo($Rx32++#$Ii)",
8804 tc_3c76b0ff, TypeLD>, Enc_6b197f {
8805 let Inst{13-9} = 0b00000;
8806 let Inst{31-21} = 0b10011010100;
8807 let addrMode = PostInc;
8808 let accessSize = ByteAccess;
8809 let mayLoad = 1;
8810 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8811 }
8812 def L2_loadalignb_pr : HInst<
8813 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8814 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, ModRegs:$Mu2),
8815 "$Ryy32 = memb_fifo($Rx32++$Mu2)",
8816 tc_3c76b0ff, TypeLD>, Enc_1f5d8f {
8817 let Inst{12-5} = 0b00000000;
8818 let Inst{31-21} = 0b10011100100;
8819 let addrMode = PostInc;
8820 let accessSize = ByteAccess;
8821 let mayLoad = 1;
8822 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8823 }
8824 def L2_loadalignb_zomap : HInst<
8825 (outs DoubleRegs:$Ryy32),
8826 (ins DoubleRegs:$Ryy32in, IntRegs:$Rs32),
8827 "$Ryy32 = memb_fifo($Rs32)",
8828 tc_5ef37dc4, TypeMAPPING> {
8829 let isPseudo = 1;
8830 let isCodeGenOnly = 1;
8831 let Constraints = "$Ryy32 = $Ryy32in";
8832 }
8833 def L2_loadalignh_io : HInst<
8834 (outs DoubleRegs:$Ryy32),
8835 (ins DoubleRegs:$Ryy32in, IntRegs:$Rs32, s31_1Imm:$Ii),
8836 "$Ryy32 = memh_fifo($Rs32+#$Ii)",
8837 tc_5ef37dc4, TypeLD>, Enc_5cd7e9 {
8838 let Inst{24-21} = 0b0010;
8839 let Inst{31-27} = 0b10010;
8840 let addrMode = BaseImmOffset;
8841 let accessSize = HalfWordAccess;
8842 let mayLoad = 1;
8843 let isExtendable = 1;
8844 let opExtendable = 3;
8845 let isExtentSigned = 1;
8846 let opExtentBits = 12;
8847 let opExtentAlign = 1;
8848 let Constraints = "$Ryy32 = $Ryy32in";
8849 }
8850 def L2_loadalignh_pbr : HInst<
8851 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8852 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, ModRegs:$Mu2),
8853 "$Ryy32 = memh_fifo($Rx32++$Mu2:brev)",
8854 tc_3c76b0ff, TypeLD>, Enc_1f5d8f {
8855 let Inst{12-5} = 0b00000000;
8856 let Inst{31-21} = 0b10011110010;
8857 let addrMode = PostInc;
8858 let accessSize = HalfWordAccess;
8859 let mayLoad = 1;
8860 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8861 }
8862 def L2_loadalignh_pci : HInst<
8863 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8864 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, s4_1Imm:$Ii, ModRegs:$Mu2),
8865 "$Ryy32 = memh_fifo($Rx32++#$Ii:circ($Mu2))",
8866 tc_785f65a7, TypeLD>, Enc_9e2e1c {
8867 let Inst{12-9} = 0b0000;
8868 let Inst{31-21} = 0b10011000010;
8869 let addrMode = PostInc;
8870 let accessSize = HalfWordAccess;
8871 let mayLoad = 1;
8872 let Uses = [CS];
8873 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8874 }
8875 def L2_loadalignh_pcr : HInst<
8876 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8877 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, ModRegs:$Mu2),
8878 "$Ryy32 = memh_fifo($Rx32++I:circ($Mu2))",
8879 tc_3c76b0ff, TypeLD>, Enc_1f5d8f {
8880 let Inst{12-5} = 0b00010000;
8881 let Inst{31-21} = 0b10011000010;
8882 let addrMode = PostInc;
8883 let accessSize = HalfWordAccess;
8884 let mayLoad = 1;
8885 let Uses = [CS];
8886 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8887 }
8888 def L2_loadalignh_pi : HInst<
8889 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8890 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, s4_1Imm:$Ii),
8891 "$Ryy32 = memh_fifo($Rx32++#$Ii)",
8892 tc_3c76b0ff, TypeLD>, Enc_bd1cbc {
8893 let Inst{13-9} = 0b00000;
8894 let Inst{31-21} = 0b10011010010;
8895 let addrMode = PostInc;
8896 let accessSize = HalfWordAccess;
8897 let mayLoad = 1;
8898 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8899 }
8900 def L2_loadalignh_pr : HInst<
8901 (outs DoubleRegs:$Ryy32, IntRegs:$Rx32),
8902 (ins DoubleRegs:$Ryy32in, IntRegs:$Rx32in, ModRegs:$Mu2),
8903 "$Ryy32 = memh_fifo($Rx32++$Mu2)",
8904 tc_3c76b0ff, TypeLD>, Enc_1f5d8f {
8905 let Inst{12-5} = 0b00000000;
8906 let Inst{31-21} = 0b10011100010;
8907 let addrMode = PostInc;
8908 let accessSize = HalfWordAccess;
8909 let mayLoad = 1;
8910 let Constraints = "$Ryy32 = $Ryy32in, $Rx32 = $Rx32in";
8911 }
8912 def L2_loadalignh_zomap : HInst<
8913 (outs DoubleRegs:$Ryy32),
8914 (ins DoubleRegs:$Ryy32in, IntRegs:$Rs32),
8915 "$Ryy32 = memh_fifo($Rs32)",
8916 tc_5ef37dc4, TypeMAPPING> {
8917 let isPseudo = 1;
8918 let isCodeGenOnly = 1;
8919 let Constraints = "$Ryy32 = $Ryy32in";
8920 }
8921 def L2_loadbsw2_io : HInst<
8922 (outs IntRegs:$Rd32),
8923 (ins IntRegs:$Rs32, s31_1Imm:$Ii),
8924 "$Rd32 = membh($Rs32+#$Ii)",
8925 tc_17e0d2cd, TypeLD>, Enc_de0214 {
8926 let Inst{24-21} = 0b0001;
8927 let Inst{31-27} = 0b10010;
8928 let hasNewValue = 1;
8929 let opNewValue = 0;
8930 let addrMode = BaseImmOffset;
8931 let accessSize = HalfWordAccess;
8932 let mayLoad = 1;
8933 let isExtendable = 1;
8934 let opExtendable = 2;
8935 let isExtentSigned = 1;
8936 let opExtentBits = 12;
8937 let opExtentAlign = 1;
8938 }
8939 def L2_loadbsw2_pbr : HInst<
8940 (outs IntRegs:$Rd32, IntRegs:$Rx32),
8941 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
8942 "$Rd32 = membh($Rx32++$Mu2:brev)",
8943 tc_44d3da28, TypeLD>, Enc_74d4e5 {
8944 let Inst{12-5} = 0b00000000;
8945 let Inst{31-21} = 0b10011110001;
8946 let hasNewValue = 1;
8947 let opNewValue = 0;
8948 let addrMode = PostInc;
8949 let accessSize = HalfWordAccess;
8950 let mayLoad = 1;
8951 let Constraints = "$Rx32 = $Rx32in";
8952 }
8953 def L2_loadbsw2_pci : HInst<
8954 (outs IntRegs:$Rd32, IntRegs:$Rx32),
8955 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, ModRegs:$Mu2),
8956 "$Rd32 = membh($Rx32++#$Ii:circ($Mu2))",
8957 tc_e93a3d71, TypeLD>, Enc_e83554 {
8958 let Inst{12-9} = 0b0000;
8959 let Inst{31-21} = 0b10011000001;
8960 let hasNewValue = 1;
8961 let opNewValue = 0;
8962 let addrMode = PostInc;
8963 let accessSize = HalfWordAccess;
8964 let mayLoad = 1;
8965 let Uses = [CS];
8966 let Constraints = "$Rx32 = $Rx32in";
8967 }
8968 def L2_loadbsw2_pcr : HInst<
8969 (outs IntRegs:$Rd32, IntRegs:$Rx32),
8970 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
8971 "$Rd32 = membh($Rx32++I:circ($Mu2))",
8972 tc_44d3da28, TypeLD>, Enc_74d4e5 {
8973 let Inst{12-5} = 0b00010000;
8974 let Inst{31-21} = 0b10011000001;
8975 let hasNewValue = 1;
8976 let opNewValue = 0;
8977 let addrMode = PostInc;
8978 let accessSize = HalfWordAccess;
8979 let mayLoad = 1;
8980 let Uses = [CS];
8981 let Constraints = "$Rx32 = $Rx32in";
8982 }
8983 def L2_loadbsw2_pi : HInst<
8984 (outs IntRegs:$Rd32, IntRegs:$Rx32),
8985 (ins IntRegs:$Rx32in, s4_1Imm:$Ii),
8986 "$Rd32 = membh($Rx32++#$Ii)",
8987 tc_44d3da28, TypeLD>, Enc_152467 {
8988 let Inst{13-9} = 0b00000;
8989 let Inst{31-21} = 0b10011010001;
8990 let hasNewValue = 1;
8991 let opNewValue = 0;
8992 let addrMode = PostInc;
8993 let accessSize = HalfWordAccess;
8994 let mayLoad = 1;
8995 let Constraints = "$Rx32 = $Rx32in";
8996 }
8997 def L2_loadbsw2_pr : HInst<
8998 (outs IntRegs:$Rd32, IntRegs:$Rx32),
8999 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9000 "$Rd32 = membh($Rx32++$Mu2)",
9001 tc_44d3da28, TypeLD>, Enc_74d4e5 {
9002 let Inst{12-5} = 0b00000000;
9003 let Inst{31-21} = 0b10011100001;
9004 let hasNewValue = 1;
9005 let opNewValue = 0;
9006 let addrMode = PostInc;
9007 let accessSize = HalfWordAccess;
9008 let mayLoad = 1;
9009 let Constraints = "$Rx32 = $Rx32in";
9010 }
9011 def L2_loadbsw2_zomap : HInst<
9012 (outs IntRegs:$Rd32),
9013 (ins IntRegs:$Rs32),
9014 "$Rd32 = membh($Rs32)",
9015 tc_17e0d2cd, TypeMAPPING> {
9016 let hasNewValue = 1;
9017 let opNewValue = 0;
9018 let isPseudo = 1;
9019 let isCodeGenOnly = 1;
9020 }
9021 def L2_loadbsw4_io : HInst<
9022 (outs DoubleRegs:$Rdd32),
9023 (ins IntRegs:$Rs32, s30_2Imm:$Ii),
9024 "$Rdd32 = membh($Rs32+#$Ii)",
9025 tc_17e0d2cd, TypeLD>, Enc_2d7491 {
9026 let Inst{24-21} = 0b0111;
9027 let Inst{31-27} = 0b10010;
9028 let addrMode = BaseImmOffset;
9029 let accessSize = WordAccess;
9030 let mayLoad = 1;
9031 let isExtendable = 1;
9032 let opExtendable = 2;
9033 let isExtentSigned = 1;
9034 let opExtentBits = 13;
9035 let opExtentAlign = 2;
9036 }
9037 def L2_loadbsw4_pbr : HInst<
9038 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9039 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9040 "$Rdd32 = membh($Rx32++$Mu2:brev)",
9041 tc_44d3da28, TypeLD>, Enc_7eee72 {
9042 let Inst{12-5} = 0b00000000;
9043 let Inst{31-21} = 0b10011110111;
9044 let addrMode = PostInc;
9045 let accessSize = WordAccess;
9046 let mayLoad = 1;
9047 let Constraints = "$Rx32 = $Rx32in";
9048 }
9049 def L2_loadbsw4_pci : HInst<
9050 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9051 (ins IntRegs:$Rx32in, s4_2Imm:$Ii, ModRegs:$Mu2),
9052 "$Rdd32 = membh($Rx32++#$Ii:circ($Mu2))",
9053 tc_e93a3d71, TypeLD>, Enc_70b24b {
9054 let Inst{12-9} = 0b0000;
9055 let Inst{31-21} = 0b10011000111;
9056 let addrMode = PostInc;
9057 let accessSize = WordAccess;
9058 let mayLoad = 1;
9059 let Uses = [CS];
9060 let Constraints = "$Rx32 = $Rx32in";
9061 }
9062 def L2_loadbsw4_pcr : HInst<
9063 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9064 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9065 "$Rdd32 = membh($Rx32++I:circ($Mu2))",
9066 tc_44d3da28, TypeLD>, Enc_7eee72 {
9067 let Inst{12-5} = 0b00010000;
9068 let Inst{31-21} = 0b10011000111;
9069 let addrMode = PostInc;
9070 let accessSize = WordAccess;
9071 let mayLoad = 1;
9072 let Uses = [CS];
9073 let Constraints = "$Rx32 = $Rx32in";
9074 }
9075 def L2_loadbsw4_pi : HInst<
9076 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9077 (ins IntRegs:$Rx32in, s4_2Imm:$Ii),
9078 "$Rdd32 = membh($Rx32++#$Ii)",
9079 tc_44d3da28, TypeLD>, Enc_71f1b4 {
9080 let Inst{13-9} = 0b00000;
9081 let Inst{31-21} = 0b10011010111;
9082 let addrMode = PostInc;
9083 let accessSize = WordAccess;
9084 let mayLoad = 1;
9085 let Constraints = "$Rx32 = $Rx32in";
9086 }
9087 def L2_loadbsw4_pr : HInst<
9088 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9089 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9090 "$Rdd32 = membh($Rx32++$Mu2)",
9091 tc_44d3da28, TypeLD>, Enc_7eee72 {
9092 let Inst{12-5} = 0b00000000;
9093 let Inst{31-21} = 0b10011100111;
9094 let addrMode = PostInc;
9095 let accessSize = WordAccess;
9096 let mayLoad = 1;
9097 let Constraints = "$Rx32 = $Rx32in";
9098 }
9099 def L2_loadbsw4_zomap : HInst<
9100 (outs DoubleRegs:$Rdd32),
9101 (ins IntRegs:$Rs32),
9102 "$Rdd32 = membh($Rs32)",
9103 tc_17e0d2cd, TypeMAPPING> {
9104 let isPseudo = 1;
9105 let isCodeGenOnly = 1;
9106 }
9107 def L2_loadbzw2_io : HInst<
9108 (outs IntRegs:$Rd32),
9109 (ins IntRegs:$Rs32, s31_1Imm:$Ii),
9110 "$Rd32 = memubh($Rs32+#$Ii)",
9111 tc_17e0d2cd, TypeLD>, Enc_de0214 {
9112 let Inst{24-21} = 0b0011;
9113 let Inst{31-27} = 0b10010;
9114 let hasNewValue = 1;
9115 let opNewValue = 0;
9116 let addrMode = BaseImmOffset;
9117 let accessSize = HalfWordAccess;
9118 let mayLoad = 1;
9119 let isExtendable = 1;
9120 let opExtendable = 2;
9121 let isExtentSigned = 1;
9122 let opExtentBits = 12;
9123 let opExtentAlign = 1;
9124 }
9125 def L2_loadbzw2_pbr : HInst<
9126 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9127 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9128 "$Rd32 = memubh($Rx32++$Mu2:brev)",
9129 tc_44d3da28, TypeLD>, Enc_74d4e5 {
9130 let Inst{12-5} = 0b00000000;
9131 let Inst{31-21} = 0b10011110011;
9132 let hasNewValue = 1;
9133 let opNewValue = 0;
9134 let addrMode = PostInc;
9135 let accessSize = HalfWordAccess;
9136 let mayLoad = 1;
9137 let Constraints = "$Rx32 = $Rx32in";
9138 }
9139 def L2_loadbzw2_pci : HInst<
9140 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9141 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, ModRegs:$Mu2),
9142 "$Rd32 = memubh($Rx32++#$Ii:circ($Mu2))",
9143 tc_e93a3d71, TypeLD>, Enc_e83554 {
9144 let Inst{12-9} = 0b0000;
9145 let Inst{31-21} = 0b10011000011;
9146 let hasNewValue = 1;
9147 let opNewValue = 0;
9148 let addrMode = PostInc;
9149 let accessSize = HalfWordAccess;
9150 let mayLoad = 1;
9151 let Uses = [CS];
9152 let Constraints = "$Rx32 = $Rx32in";
9153 }
9154 def L2_loadbzw2_pcr : HInst<
9155 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9156 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9157 "$Rd32 = memubh($Rx32++I:circ($Mu2))",
9158 tc_44d3da28, TypeLD>, Enc_74d4e5 {
9159 let Inst{12-5} = 0b00010000;
9160 let Inst{31-21} = 0b10011000011;
9161 let hasNewValue = 1;
9162 let opNewValue = 0;
9163 let addrMode = PostInc;
9164 let accessSize = HalfWordAccess;
9165 let mayLoad = 1;
9166 let Uses = [CS];
9167 let Constraints = "$Rx32 = $Rx32in";
9168 }
9169 def L2_loadbzw2_pi : HInst<
9170 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9171 (ins IntRegs:$Rx32in, s4_1Imm:$Ii),
9172 "$Rd32 = memubh($Rx32++#$Ii)",
9173 tc_44d3da28, TypeLD>, Enc_152467 {
9174 let Inst{13-9} = 0b00000;
9175 let Inst{31-21} = 0b10011010011;
9176 let hasNewValue = 1;
9177 let opNewValue = 0;
9178 let addrMode = PostInc;
9179 let accessSize = HalfWordAccess;
9180 let mayLoad = 1;
9181 let Constraints = "$Rx32 = $Rx32in";
9182 }
9183 def L2_loadbzw2_pr : HInst<
9184 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9185 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9186 "$Rd32 = memubh($Rx32++$Mu2)",
9187 tc_44d3da28, TypeLD>, Enc_74d4e5 {
9188 let Inst{12-5} = 0b00000000;
9189 let Inst{31-21} = 0b10011100011;
9190 let hasNewValue = 1;
9191 let opNewValue = 0;
9192 let addrMode = PostInc;
9193 let accessSize = HalfWordAccess;
9194 let mayLoad = 1;
9195 let Constraints = "$Rx32 = $Rx32in";
9196 }
9197 def L2_loadbzw2_zomap : HInst<
9198 (outs IntRegs:$Rd32),
9199 (ins IntRegs:$Rs32),
9200 "$Rd32 = memubh($Rs32)",
9201 tc_17e0d2cd, TypeMAPPING> {
9202 let hasNewValue = 1;
9203 let opNewValue = 0;
9204 let isPseudo = 1;
9205 let isCodeGenOnly = 1;
9206 }
9207 def L2_loadbzw4_io : HInst<
9208 (outs DoubleRegs:$Rdd32),
9209 (ins IntRegs:$Rs32, s30_2Imm:$Ii),
9210 "$Rdd32 = memubh($Rs32+#$Ii)",
9211 tc_17e0d2cd, TypeLD>, Enc_2d7491 {
9212 let Inst{24-21} = 0b0101;
9213 let Inst{31-27} = 0b10010;
9214 let addrMode = BaseImmOffset;
9215 let accessSize = WordAccess;
9216 let mayLoad = 1;
9217 let isExtendable = 1;
9218 let opExtendable = 2;
9219 let isExtentSigned = 1;
9220 let opExtentBits = 13;
9221 let opExtentAlign = 2;
9222 }
9223 def L2_loadbzw4_pbr : HInst<
9224 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9225 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9226 "$Rdd32 = memubh($Rx32++$Mu2:brev)",
9227 tc_44d3da28, TypeLD>, Enc_7eee72 {
9228 let Inst{12-5} = 0b00000000;
9229 let Inst{31-21} = 0b10011110101;
9230 let addrMode = PostInc;
9231 let accessSize = WordAccess;
9232 let mayLoad = 1;
9233 let Constraints = "$Rx32 = $Rx32in";
9234 }
9235 def L2_loadbzw4_pci : HInst<
9236 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9237 (ins IntRegs:$Rx32in, s4_2Imm:$Ii, ModRegs:$Mu2),
9238 "$Rdd32 = memubh($Rx32++#$Ii:circ($Mu2))",
9239 tc_e93a3d71, TypeLD>, Enc_70b24b {
9240 let Inst{12-9} = 0b0000;
9241 let Inst{31-21} = 0b10011000101;
9242 let addrMode = PostInc;
9243 let accessSize = WordAccess;
9244 let mayLoad = 1;
9245 let Uses = [CS];
9246 let Constraints = "$Rx32 = $Rx32in";
9247 }
9248 def L2_loadbzw4_pcr : HInst<
9249 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9250 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9251 "$Rdd32 = memubh($Rx32++I:circ($Mu2))",
9252 tc_44d3da28, TypeLD>, Enc_7eee72 {
9253 let Inst{12-5} = 0b00010000;
9254 let Inst{31-21} = 0b10011000101;
9255 let addrMode = PostInc;
9256 let accessSize = WordAccess;
9257 let mayLoad = 1;
9258 let Uses = [CS];
9259 let Constraints = "$Rx32 = $Rx32in";
9260 }
9261 def L2_loadbzw4_pi : HInst<
9262 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9263 (ins IntRegs:$Rx32in, s4_2Imm:$Ii),
9264 "$Rdd32 = memubh($Rx32++#$Ii)",
9265 tc_44d3da28, TypeLD>, Enc_71f1b4 {
9266 let Inst{13-9} = 0b00000;
9267 let Inst{31-21} = 0b10011010101;
9268 let addrMode = PostInc;
9269 let accessSize = WordAccess;
9270 let mayLoad = 1;
9271 let Constraints = "$Rx32 = $Rx32in";
9272 }
9273 def L2_loadbzw4_pr : HInst<
9274 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9275 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9276 "$Rdd32 = memubh($Rx32++$Mu2)",
9277 tc_44d3da28, TypeLD>, Enc_7eee72 {
9278 let Inst{12-5} = 0b00000000;
9279 let Inst{31-21} = 0b10011100101;
9280 let addrMode = PostInc;
9281 let accessSize = WordAccess;
9282 let mayLoad = 1;
9283 let Constraints = "$Rx32 = $Rx32in";
9284 }
9285 def L2_loadbzw4_zomap : HInst<
9286 (outs DoubleRegs:$Rdd32),
9287 (ins IntRegs:$Rs32),
9288 "$Rdd32 = memubh($Rs32)",
9289 tc_17e0d2cd, TypeMAPPING> {
9290 let isPseudo = 1;
9291 let isCodeGenOnly = 1;
9292 }
9293 def L2_loadrb_io : HInst<
9294 (outs IntRegs:$Rd32),
9295 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
9296 "$Rd32 = memb($Rs32+#$Ii)",
9297 tc_17e0d2cd, TypeLD>, Enc_211aaa, AddrModeRel, PostInc_BaseImm {
9298 let Inst{24-21} = 0b1000;
9299 let Inst{31-27} = 0b10010;
9300 let hasNewValue = 1;
9301 let opNewValue = 0;
9302 let addrMode = BaseImmOffset;
9303 let accessSize = ByteAccess;
9304 let mayLoad = 1;
9305 let CextOpcode = "L2_loadrb";
9306 let BaseOpcode = "L2_loadrb_io";
9307 let isPredicable = 1;
9308 let isExtendable = 1;
9309 let opExtendable = 2;
9310 let isExtentSigned = 1;
9311 let opExtentBits = 11;
9312 let opExtentAlign = 0;
9313 }
9314 def L2_loadrb_pbr : HInst<
9315 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9316 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9317 "$Rd32 = memb($Rx32++$Mu2:brev)",
9318 tc_44d3da28, TypeLD>, Enc_74d4e5 {
9319 let Inst{12-5} = 0b00000000;
9320 let Inst{31-21} = 0b10011111000;
9321 let hasNewValue = 1;
9322 let opNewValue = 0;
9323 let addrMode = PostInc;
9324 let accessSize = ByteAccess;
9325 let mayLoad = 1;
9326 let Constraints = "$Rx32 = $Rx32in";
9327 }
9328 def L2_loadrb_pci : HInst<
9329 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9330 (ins IntRegs:$Rx32in, s4_0Imm:$Ii, ModRegs:$Mu2),
9331 "$Rd32 = memb($Rx32++#$Ii:circ($Mu2))",
9332 tc_e93a3d71, TypeLD>, Enc_e0a47a {
9333 let Inst{12-9} = 0b0000;
9334 let Inst{31-21} = 0b10011001000;
9335 let hasNewValue = 1;
9336 let opNewValue = 0;
9337 let addrMode = PostInc;
9338 let accessSize = ByteAccess;
9339 let mayLoad = 1;
9340 let Uses = [CS];
9341 let Constraints = "$Rx32 = $Rx32in";
9342 }
9343 def L2_loadrb_pcr : HInst<
9344 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9345 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9346 "$Rd32 = memb($Rx32++I:circ($Mu2))",
9347 tc_44d3da28, TypeLD>, Enc_74d4e5 {
9348 let Inst{12-5} = 0b00010000;
9349 let Inst{31-21} = 0b10011001000;
9350 let hasNewValue = 1;
9351 let opNewValue = 0;
9352 let addrMode = PostInc;
9353 let accessSize = ByteAccess;
9354 let mayLoad = 1;
9355 let Uses = [CS];
9356 let Constraints = "$Rx32 = $Rx32in";
9357 }
9358 def L2_loadrb_pi : HInst<
9359 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9360 (ins IntRegs:$Rx32in, s4_0Imm:$Ii),
9361 "$Rd32 = memb($Rx32++#$Ii)",
9362 tc_44d3da28, TypeLD>, Enc_222336, PredNewRel, PostInc_BaseImm {
9363 let Inst{13-9} = 0b00000;
9364 let Inst{31-21} = 0b10011011000;
9365 let hasNewValue = 1;
9366 let opNewValue = 0;
9367 let addrMode = PostInc;
9368 let accessSize = ByteAccess;
9369 let mayLoad = 1;
9370 let CextOpcode = "L2_loadrb";
9371 let BaseOpcode = "L2_loadrb_pi";
9372 let isPredicable = 1;
9373 let Constraints = "$Rx32 = $Rx32in";
9374 }
9375 def L2_loadrb_pr : HInst<
9376 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9377 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9378 "$Rd32 = memb($Rx32++$Mu2)",
9379 tc_44d3da28, TypeLD>, Enc_74d4e5 {
9380 let Inst{12-5} = 0b00000000;
9381 let Inst{31-21} = 0b10011101000;
9382 let hasNewValue = 1;
9383 let opNewValue = 0;
9384 let addrMode = PostInc;
9385 let accessSize = ByteAccess;
9386 let mayLoad = 1;
9387 let Constraints = "$Rx32 = $Rx32in";
9388 }
9389 def L2_loadrb_zomap : HInst<
9390 (outs IntRegs:$Rd32),
9391 (ins IntRegs:$Rs32),
9392 "$Rd32 = memb($Rs32)",
9393 tc_17e0d2cd, TypeMAPPING> {
9394 let hasNewValue = 1;
9395 let opNewValue = 0;
9396 let isPseudo = 1;
9397 let isCodeGenOnly = 1;
9398 }
9399 def L2_loadrbgp : HInst<
9400 (outs IntRegs:$Rd32),
9401 (ins u32_0Imm:$Ii),
9402 "$Rd32 = memb(gp+#$Ii)",
9403 tc_c4db48cb, TypeV2LDST>, Enc_25bef0, AddrModeRel {
9404 let Inst{24-21} = 0b1000;
9405 let Inst{31-27} = 0b01001;
9406 let hasNewValue = 1;
9407 let opNewValue = 0;
9408 let accessSize = ByteAccess;
9409 let mayLoad = 1;
9410 let Uses = [GP];
9411 let BaseOpcode = "L4_loadrb_abs";
9412 let isPredicable = 1;
9413 let opExtendable = 1;
9414 let isExtentSigned = 0;
9415 let opExtentBits = 16;
9416 let opExtentAlign = 0;
9417 }
9418 def L2_loadrd_io : HInst<
9419 (outs DoubleRegs:$Rdd32),
9420 (ins IntRegs:$Rs32, s29_3Imm:$Ii),
9421 "$Rdd32 = memd($Rs32+#$Ii)",
9422 tc_17e0d2cd, TypeLD>, Enc_fa3ba4, AddrModeRel, PostInc_BaseImm {
9423 let Inst{24-21} = 0b1110;
9424 let Inst{31-27} = 0b10010;
9425 let addrMode = BaseImmOffset;
9426 let accessSize = DoubleWordAccess;
9427 let mayLoad = 1;
9428 let CextOpcode = "L2_loadrd";
9429 let BaseOpcode = "L2_loadrd_io";
9430 let isPredicable = 1;
9431 let isExtendable = 1;
9432 let opExtendable = 2;
9433 let isExtentSigned = 1;
9434 let opExtentBits = 14;
9435 let opExtentAlign = 3;
9436 }
9437 def L2_loadrd_pbr : HInst<
9438 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9439 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9440 "$Rdd32 = memd($Rx32++$Mu2:brev)",
9441 tc_44d3da28, TypeLD>, Enc_7eee72 {
9442 let Inst{12-5} = 0b00000000;
9443 let Inst{31-21} = 0b10011111110;
9444 let addrMode = PostInc;
9445 let accessSize = DoubleWordAccess;
9446 let mayLoad = 1;
9447 let Constraints = "$Rx32 = $Rx32in";
9448 }
9449 def L2_loadrd_pci : HInst<
9450 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9451 (ins IntRegs:$Rx32in, s4_3Imm:$Ii, ModRegs:$Mu2),
9452 "$Rdd32 = memd($Rx32++#$Ii:circ($Mu2))",
9453 tc_e93a3d71, TypeLD>, Enc_b05839 {
9454 let Inst{12-9} = 0b0000;
9455 let Inst{31-21} = 0b10011001110;
9456 let addrMode = PostInc;
9457 let accessSize = DoubleWordAccess;
9458 let mayLoad = 1;
9459 let Uses = [CS];
9460 let Constraints = "$Rx32 = $Rx32in";
9461 }
9462 def L2_loadrd_pcr : HInst<
9463 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9464 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9465 "$Rdd32 = memd($Rx32++I:circ($Mu2))",
9466 tc_44d3da28, TypeLD>, Enc_7eee72 {
9467 let Inst{12-5} = 0b00010000;
9468 let Inst{31-21} = 0b10011001110;
9469 let addrMode = PostInc;
9470 let accessSize = DoubleWordAccess;
9471 let mayLoad = 1;
9472 let Uses = [CS];
9473 let Constraints = "$Rx32 = $Rx32in";
9474 }
9475 def L2_loadrd_pi : HInst<
9476 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9477 (ins IntRegs:$Rx32in, s4_3Imm:$Ii),
9478 "$Rdd32 = memd($Rx32++#$Ii)",
9479 tc_44d3da28, TypeLD>, Enc_5bdd42, PredNewRel, PostInc_BaseImm {
9480 let Inst{13-9} = 0b00000;
9481 let Inst{31-21} = 0b10011011110;
9482 let addrMode = PostInc;
9483 let accessSize = DoubleWordAccess;
9484 let mayLoad = 1;
9485 let CextOpcode = "L2_loadrd";
9486 let BaseOpcode = "L2_loadrd_pi";
9487 let isPredicable = 1;
9488 let Constraints = "$Rx32 = $Rx32in";
9489 }
9490 def L2_loadrd_pr : HInst<
9491 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
9492 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9493 "$Rdd32 = memd($Rx32++$Mu2)",
9494 tc_44d3da28, TypeLD>, Enc_7eee72 {
9495 let Inst{12-5} = 0b00000000;
9496 let Inst{31-21} = 0b10011101110;
9497 let addrMode = PostInc;
9498 let accessSize = DoubleWordAccess;
9499 let mayLoad = 1;
9500 let Constraints = "$Rx32 = $Rx32in";
9501 }
9502 def L2_loadrd_zomap : HInst<
9503 (outs DoubleRegs:$Rdd32),
9504 (ins IntRegs:$Rs32),
9505 "$Rdd32 = memd($Rs32)",
9506 tc_17e0d2cd, TypeMAPPING> {
9507 let isPseudo = 1;
9508 let isCodeGenOnly = 1;
9509 }
9510 def L2_loadrdgp : HInst<
9511 (outs DoubleRegs:$Rdd32),
9512 (ins u29_3Imm:$Ii),
9513 "$Rdd32 = memd(gp+#$Ii)",
9514 tc_c4db48cb, TypeV2LDST>, Enc_509701, AddrModeRel {
9515 let Inst{24-21} = 0b1110;
9516 let Inst{31-27} = 0b01001;
9517 let accessSize = DoubleWordAccess;
9518 let mayLoad = 1;
9519 let Uses = [GP];
9520 let BaseOpcode = "L4_loadrd_abs";
9521 let isPredicable = 1;
9522 let opExtendable = 1;
9523 let isExtentSigned = 0;
9524 let opExtentBits = 19;
9525 let opExtentAlign = 3;
9526 }
9527 def L2_loadrh_io : HInst<
9528 (outs IntRegs:$Rd32),
9529 (ins IntRegs:$Rs32, s31_1Imm:$Ii),
9530 "$Rd32 = memh($Rs32+#$Ii)",
9531 tc_17e0d2cd, TypeLD>, Enc_de0214, AddrModeRel, PostInc_BaseImm {
9532 let Inst{24-21} = 0b1010;
9533 let Inst{31-27} = 0b10010;
9534 let hasNewValue = 1;
9535 let opNewValue = 0;
9536 let addrMode = BaseImmOffset;
9537 let accessSize = HalfWordAccess;
9538 let mayLoad = 1;
9539 let CextOpcode = "L2_loadrh";
9540 let BaseOpcode = "L2_loadrh_io";
9541 let isPredicable = 1;
9542 let isExtendable = 1;
9543 let opExtendable = 2;
9544 let isExtentSigned = 1;
9545 let opExtentBits = 12;
9546 let opExtentAlign = 1;
9547 }
9548 def L2_loadrh_pbr : HInst<
9549 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9550 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9551 "$Rd32 = memh($Rx32++$Mu2:brev)",
9552 tc_44d3da28, TypeLD>, Enc_74d4e5 {
9553 let Inst{12-5} = 0b00000000;
9554 let Inst{31-21} = 0b10011111010;
9555 let hasNewValue = 1;
9556 let opNewValue = 0;
9557 let addrMode = PostInc;
9558 let accessSize = HalfWordAccess;
9559 let mayLoad = 1;
9560 let Constraints = "$Rx32 = $Rx32in";
9561 }
9562 def L2_loadrh_pci : HInst<
9563 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9564 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, ModRegs:$Mu2),
9565 "$Rd32 = memh($Rx32++#$Ii:circ($Mu2))",
9566 tc_e93a3d71, TypeLD>, Enc_e83554 {
9567 let Inst{12-9} = 0b0000;
9568 let Inst{31-21} = 0b10011001010;
9569 let hasNewValue = 1;
9570 let opNewValue = 0;
9571 let addrMode = PostInc;
9572 let accessSize = HalfWordAccess;
9573 let mayLoad = 1;
9574 let Uses = [CS];
9575 let Constraints = "$Rx32 = $Rx32in";
9576 }
9577 def L2_loadrh_pcr : HInst<
9578 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9579 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9580 "$Rd32 = memh($Rx32++I:circ($Mu2))",
9581 tc_44d3da28, TypeLD>, Enc_74d4e5 {
9582 let Inst{12-5} = 0b00010000;
9583 let Inst{31-21} = 0b10011001010;
9584 let hasNewValue = 1;
9585 let opNewValue = 0;
9586 let addrMode = PostInc;
9587 let accessSize = HalfWordAccess;
9588 let mayLoad = 1;
9589 let Uses = [CS];
9590 let Constraints = "$Rx32 = $Rx32in";
9591 }
9592 def L2_loadrh_pi : HInst<
9593 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9594 (ins IntRegs:$Rx32in, s4_1Imm:$Ii),
9595 "$Rd32 = memh($Rx32++#$Ii)",
9596 tc_44d3da28, TypeLD>, Enc_152467, PredNewRel, PostInc_BaseImm {
9597 let Inst{13-9} = 0b00000;
9598 let Inst{31-21} = 0b10011011010;
9599 let hasNewValue = 1;
9600 let opNewValue = 0;
9601 let addrMode = PostInc;
9602 let accessSize = HalfWordAccess;
9603 let mayLoad = 1;
9604 let CextOpcode = "L2_loadrh";
9605 let BaseOpcode = "L2_loadrh_pi";
9606 let isPredicable = 1;
9607 let Constraints = "$Rx32 = $Rx32in";
9608 }
9609 def L2_loadrh_pr : HInst<
9610 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9611 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9612 "$Rd32 = memh($Rx32++$Mu2)",
9613 tc_44d3da28, TypeLD>, Enc_74d4e5 {
9614 let Inst{12-5} = 0b00000000;
9615 let Inst{31-21} = 0b10011101010;
9616 let hasNewValue = 1;
9617 let opNewValue = 0;
9618 let addrMode = PostInc;
9619 let accessSize = HalfWordAccess;
9620 let mayLoad = 1;
9621 let Constraints = "$Rx32 = $Rx32in";
9622 }
9623 def L2_loadrh_zomap : HInst<
9624 (outs IntRegs:$Rd32),
9625 (ins IntRegs:$Rs32),
9626 "$Rd32 = memh($Rs32)",
9627 tc_17e0d2cd, TypeMAPPING> {
9628 let hasNewValue = 1;
9629 let opNewValue = 0;
9630 let isPseudo = 1;
9631 let isCodeGenOnly = 1;
9632 }
9633 def L2_loadrhgp : HInst<
9634 (outs IntRegs:$Rd32),
9635 (ins u31_1Imm:$Ii),
9636 "$Rd32 = memh(gp+#$Ii)",
9637 tc_c4db48cb, TypeV2LDST>, Enc_8df4be, AddrModeRel {
9638 let Inst{24-21} = 0b1010;
9639 let Inst{31-27} = 0b01001;
9640 let hasNewValue = 1;
9641 let opNewValue = 0;
9642 let accessSize = HalfWordAccess;
9643 let mayLoad = 1;
9644 let Uses = [GP];
9645 let BaseOpcode = "L4_loadrh_abs";
9646 let isPredicable = 1;
9647 let opExtendable = 1;
9648 let isExtentSigned = 0;
9649 let opExtentBits = 17;
9650 let opExtentAlign = 1;
9651 }
9652 def L2_loadri_io : HInst<
9653 (outs IntRegs:$Rd32),
9654 (ins IntRegs:$Rs32, s30_2Imm:$Ii),
9655 "$Rd32 = memw($Rs32+#$Ii)",
9656 tc_17e0d2cd, TypeLD>, Enc_2a3787, AddrModeRel, PostInc_BaseImm {
9657 let Inst{24-21} = 0b1100;
9658 let Inst{31-27} = 0b10010;
9659 let hasNewValue = 1;
9660 let opNewValue = 0;
9661 let addrMode = BaseImmOffset;
9662 let accessSize = WordAccess;
9663 let mayLoad = 1;
9664 let CextOpcode = "L2_loadri";
9665 let BaseOpcode = "L2_loadri_io";
9666 let isPredicable = 1;
9667 let isExtendable = 1;
9668 let opExtendable = 2;
9669 let isExtentSigned = 1;
9670 let opExtentBits = 13;
9671 let opExtentAlign = 2;
9672 }
9673 def L2_loadri_pbr : HInst<
9674 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9675 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9676 "$Rd32 = memw($Rx32++$Mu2:brev)",
9677 tc_44d3da28, TypeLD>, Enc_74d4e5 {
9678 let Inst{12-5} = 0b00000000;
9679 let Inst{31-21} = 0b10011111100;
9680 let hasNewValue = 1;
9681 let opNewValue = 0;
9682 let addrMode = PostInc;
9683 let accessSize = WordAccess;
9684 let mayLoad = 1;
9685 let Constraints = "$Rx32 = $Rx32in";
9686 }
9687 def L2_loadri_pci : HInst<
9688 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9689 (ins IntRegs:$Rx32in, s4_2Imm:$Ii, ModRegs:$Mu2),
9690 "$Rd32 = memw($Rx32++#$Ii:circ($Mu2))",
9691 tc_e93a3d71, TypeLD>, Enc_27fd0e {
9692 let Inst{12-9} = 0b0000;
9693 let Inst{31-21} = 0b10011001100;
9694 let hasNewValue = 1;
9695 let opNewValue = 0;
9696 let addrMode = PostInc;
9697 let accessSize = WordAccess;
9698 let mayLoad = 1;
9699 let Uses = [CS];
9700 let Constraints = "$Rx32 = $Rx32in";
9701 }
9702 def L2_loadri_pcr : HInst<
9703 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9704 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9705 "$Rd32 = memw($Rx32++I:circ($Mu2))",
9706 tc_44d3da28, TypeLD>, Enc_74d4e5 {
9707 let Inst{12-5} = 0b00010000;
9708 let Inst{31-21} = 0b10011001100;
9709 let hasNewValue = 1;
9710 let opNewValue = 0;
9711 let addrMode = PostInc;
9712 let accessSize = WordAccess;
9713 let mayLoad = 1;
9714 let Uses = [CS];
9715 let Constraints = "$Rx32 = $Rx32in";
9716 }
9717 def L2_loadri_pi : HInst<
9718 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9719 (ins IntRegs:$Rx32in, s4_2Imm:$Ii),
9720 "$Rd32 = memw($Rx32++#$Ii)",
9721 tc_44d3da28, TypeLD>, Enc_3d920a, PredNewRel, PostInc_BaseImm {
9722 let Inst{13-9} = 0b00000;
9723 let Inst{31-21} = 0b10011011100;
9724 let hasNewValue = 1;
9725 let opNewValue = 0;
9726 let addrMode = PostInc;
9727 let accessSize = WordAccess;
9728 let mayLoad = 1;
9729 let CextOpcode = "L2_loadri";
9730 let BaseOpcode = "L2_loadri_pi";
9731 let isPredicable = 1;
9732 let Constraints = "$Rx32 = $Rx32in";
9733 }
9734 def L2_loadri_pr : HInst<
9735 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9736 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9737 "$Rd32 = memw($Rx32++$Mu2)",
9738 tc_44d3da28, TypeLD>, Enc_74d4e5 {
9739 let Inst{12-5} = 0b00000000;
9740 let Inst{31-21} = 0b10011101100;
9741 let hasNewValue = 1;
9742 let opNewValue = 0;
9743 let addrMode = PostInc;
9744 let accessSize = WordAccess;
9745 let mayLoad = 1;
9746 let Constraints = "$Rx32 = $Rx32in";
9747 }
9748 def L2_loadri_zomap : HInst<
9749 (outs IntRegs:$Rd32),
9750 (ins IntRegs:$Rs32),
9751 "$Rd32 = memw($Rs32)",
9752 tc_17e0d2cd, TypeMAPPING> {
9753 let hasNewValue = 1;
9754 let opNewValue = 0;
9755 let isPseudo = 1;
9756 let isCodeGenOnly = 1;
9757 }
9758 def L2_loadrigp : HInst<
9759 (outs IntRegs:$Rd32),
9760 (ins u30_2Imm:$Ii),
9761 "$Rd32 = memw(gp+#$Ii)",
9762 tc_c4db48cb, TypeV2LDST>, Enc_4f4ed7, AddrModeRel {
9763 let Inst{24-21} = 0b1100;
9764 let Inst{31-27} = 0b01001;
9765 let hasNewValue = 1;
9766 let opNewValue = 0;
9767 let accessSize = WordAccess;
9768 let mayLoad = 1;
9769 let Uses = [GP];
9770 let BaseOpcode = "L4_loadri_abs";
9771 let isPredicable = 1;
9772 let opExtendable = 1;
9773 let isExtentSigned = 0;
9774 let opExtentBits = 18;
9775 let opExtentAlign = 2;
9776 }
9777 def L2_loadrub_io : HInst<
9778 (outs IntRegs:$Rd32),
9779 (ins IntRegs:$Rs32, s32_0Imm:$Ii),
9780 "$Rd32 = memub($Rs32+#$Ii)",
9781 tc_17e0d2cd, TypeLD>, Enc_211aaa, AddrModeRel, PostInc_BaseImm {
9782 let Inst{24-21} = 0b1001;
9783 let Inst{31-27} = 0b10010;
9784 let hasNewValue = 1;
9785 let opNewValue = 0;
9786 let addrMode = BaseImmOffset;
9787 let accessSize = ByteAccess;
9788 let mayLoad = 1;
9789 let CextOpcode = "L2_loadrub";
9790 let BaseOpcode = "L2_loadrub_io";
9791 let isPredicable = 1;
9792 let isExtendable = 1;
9793 let opExtendable = 2;
9794 let isExtentSigned = 1;
9795 let opExtentBits = 11;
9796 let opExtentAlign = 0;
9797 }
9798 def L2_loadrub_pbr : HInst<
9799 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9800 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9801 "$Rd32 = memub($Rx32++$Mu2:brev)",
9802 tc_44d3da28, TypeLD>, Enc_74d4e5 {
9803 let Inst{12-5} = 0b00000000;
9804 let Inst{31-21} = 0b10011111001;
9805 let hasNewValue = 1;
9806 let opNewValue = 0;
9807 let addrMode = PostInc;
9808 let accessSize = ByteAccess;
9809 let mayLoad = 1;
9810 let Constraints = "$Rx32 = $Rx32in";
9811 }
9812 def L2_loadrub_pci : HInst<
9813 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9814 (ins IntRegs:$Rx32in, s4_0Imm:$Ii, ModRegs:$Mu2),
9815 "$Rd32 = memub($Rx32++#$Ii:circ($Mu2))",
9816 tc_e93a3d71, TypeLD>, Enc_e0a47a {
9817 let Inst{12-9} = 0b0000;
9818 let Inst{31-21} = 0b10011001001;
9819 let hasNewValue = 1;
9820 let opNewValue = 0;
9821 let addrMode = PostInc;
9822 let accessSize = ByteAccess;
9823 let mayLoad = 1;
9824 let Uses = [CS];
9825 let Constraints = "$Rx32 = $Rx32in";
9826 }
9827 def L2_loadrub_pcr : HInst<
9828 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9829 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9830 "$Rd32 = memub($Rx32++I:circ($Mu2))",
9831 tc_44d3da28, TypeLD>, Enc_74d4e5 {
9832 let Inst{12-5} = 0b00010000;
9833 let Inst{31-21} = 0b10011001001;
9834 let hasNewValue = 1;
9835 let opNewValue = 0;
9836 let addrMode = PostInc;
9837 let accessSize = ByteAccess;
9838 let mayLoad = 1;
9839 let Uses = [CS];
9840 let Constraints = "$Rx32 = $Rx32in";
9841 }
9842 def L2_loadrub_pi : HInst<
9843 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9844 (ins IntRegs:$Rx32in, s4_0Imm:$Ii),
9845 "$Rd32 = memub($Rx32++#$Ii)",
9846 tc_44d3da28, TypeLD>, Enc_222336, PredNewRel, PostInc_BaseImm {
9847 let Inst{13-9} = 0b00000;
9848 let Inst{31-21} = 0b10011011001;
9849 let hasNewValue = 1;
9850 let opNewValue = 0;
9851 let addrMode = PostInc;
9852 let accessSize = ByteAccess;
9853 let mayLoad = 1;
9854 let CextOpcode = "L2_loadrub";
9855 let BaseOpcode = "L2_loadrub_pi";
9856 let isPredicable = 1;
9857 let Constraints = "$Rx32 = $Rx32in";
9858 }
9859 def L2_loadrub_pr : HInst<
9860 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9861 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9862 "$Rd32 = memub($Rx32++$Mu2)",
9863 tc_44d3da28, TypeLD>, Enc_74d4e5 {
9864 let Inst{12-5} = 0b00000000;
9865 let Inst{31-21} = 0b10011101001;
9866 let hasNewValue = 1;
9867 let opNewValue = 0;
9868 let addrMode = PostInc;
9869 let accessSize = ByteAccess;
9870 let mayLoad = 1;
9871 let Constraints = "$Rx32 = $Rx32in";
9872 }
9873 def L2_loadrub_zomap : HInst<
9874 (outs IntRegs:$Rd32),
9875 (ins IntRegs:$Rs32),
9876 "$Rd32 = memub($Rs32)",
9877 tc_17e0d2cd, TypeMAPPING> {
9878 let hasNewValue = 1;
9879 let opNewValue = 0;
9880 let isPseudo = 1;
9881 let isCodeGenOnly = 1;
9882 }
9883 def L2_loadrubgp : HInst<
9884 (outs IntRegs:$Rd32),
9885 (ins u32_0Imm:$Ii),
9886 "$Rd32 = memub(gp+#$Ii)",
9887 tc_c4db48cb, TypeV2LDST>, Enc_25bef0, AddrModeRel {
9888 let Inst{24-21} = 0b1001;
9889 let Inst{31-27} = 0b01001;
9890 let hasNewValue = 1;
9891 let opNewValue = 0;
9892 let accessSize = ByteAccess;
9893 let mayLoad = 1;
9894 let Uses = [GP];
9895 let BaseOpcode = "L4_loadrub_abs";
9896 let isPredicable = 1;
9897 let opExtendable = 1;
9898 let isExtentSigned = 0;
9899 let opExtentBits = 16;
9900 let opExtentAlign = 0;
9901 }
9902 def L2_loadruh_io : HInst<
9903 (outs IntRegs:$Rd32),
9904 (ins IntRegs:$Rs32, s31_1Imm:$Ii),
9905 "$Rd32 = memuh($Rs32+#$Ii)",
9906 tc_17e0d2cd, TypeLD>, Enc_de0214, AddrModeRel, PostInc_BaseImm {
9907 let Inst{24-21} = 0b1011;
9908 let Inst{31-27} = 0b10010;
9909 let hasNewValue = 1;
9910 let opNewValue = 0;
9911 let addrMode = BaseImmOffset;
9912 let accessSize = HalfWordAccess;
9913 let mayLoad = 1;
9914 let CextOpcode = "L2_loadruh";
9915 let BaseOpcode = "L2_loadruh_io";
9916 let isPredicable = 1;
9917 let isExtendable = 1;
9918 let opExtendable = 2;
9919 let isExtentSigned = 1;
9920 let opExtentBits = 12;
9921 let opExtentAlign = 1;
9922 }
9923 def L2_loadruh_pbr : HInst<
9924 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9925 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9926 "$Rd32 = memuh($Rx32++$Mu2:brev)",
9927 tc_44d3da28, TypeLD>, Enc_74d4e5 {
9928 let Inst{12-5} = 0b00000000;
9929 let Inst{31-21} = 0b10011111011;
9930 let hasNewValue = 1;
9931 let opNewValue = 0;
9932 let addrMode = PostInc;
9933 let accessSize = HalfWordAccess;
9934 let mayLoad = 1;
9935 let Constraints = "$Rx32 = $Rx32in";
9936 }
9937 def L2_loadruh_pci : HInst<
9938 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9939 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, ModRegs:$Mu2),
9940 "$Rd32 = memuh($Rx32++#$Ii:circ($Mu2))",
9941 tc_e93a3d71, TypeLD>, Enc_e83554 {
9942 let Inst{12-9} = 0b0000;
9943 let Inst{31-21} = 0b10011001011;
9944 let hasNewValue = 1;
9945 let opNewValue = 0;
9946 let addrMode = PostInc;
9947 let accessSize = HalfWordAccess;
9948 let mayLoad = 1;
9949 let Uses = [CS];
9950 let Constraints = "$Rx32 = $Rx32in";
9951 }
9952 def L2_loadruh_pcr : HInst<
9953 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9954 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9955 "$Rd32 = memuh($Rx32++I:circ($Mu2))",
9956 tc_44d3da28, TypeLD>, Enc_74d4e5 {
9957 let Inst{12-5} = 0b00010000;
9958 let Inst{31-21} = 0b10011001011;
9959 let hasNewValue = 1;
9960 let opNewValue = 0;
9961 let addrMode = PostInc;
9962 let accessSize = HalfWordAccess;
9963 let mayLoad = 1;
9964 let Uses = [CS];
9965 let Constraints = "$Rx32 = $Rx32in";
9966 }
9967 def L2_loadruh_pi : HInst<
9968 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9969 (ins IntRegs:$Rx32in, s4_1Imm:$Ii),
9970 "$Rd32 = memuh($Rx32++#$Ii)",
9971 tc_44d3da28, TypeLD>, Enc_152467, PredNewRel, PostInc_BaseImm {
9972 let Inst{13-9} = 0b00000;
9973 let Inst{31-21} = 0b10011011011;
9974 let hasNewValue = 1;
9975 let opNewValue = 0;
9976 let addrMode = PostInc;
9977 let accessSize = HalfWordAccess;
9978 let mayLoad = 1;
9979 let CextOpcode = "L2_loadruh";
9980 let BaseOpcode = "L2_loadruh_pi";
9981 let isPredicable = 1;
9982 let Constraints = "$Rx32 = $Rx32in";
9983 }
9984 def L2_loadruh_pr : HInst<
9985 (outs IntRegs:$Rd32, IntRegs:$Rx32),
9986 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
9987 "$Rd32 = memuh($Rx32++$Mu2)",
9988 tc_44d3da28, TypeLD>, Enc_74d4e5 {
9989 let Inst{12-5} = 0b00000000;
9990 let Inst{31-21} = 0b10011101011;
9991 let hasNewValue = 1;
9992 let opNewValue = 0;
9993 let addrMode = PostInc;
9994 let accessSize = HalfWordAccess;
9995 let mayLoad = 1;
9996 let Constraints = "$Rx32 = $Rx32in";
9997 }
9998 def L2_loadruh_zomap : HInst<
9999 (outs IntRegs:$Rd32),
10000 (ins IntRegs:$Rs32),
10001 "$Rd32 = memuh($Rs32)",
10002 tc_17e0d2cd, TypeMAPPING> {
10003 let hasNewValue = 1;
10004 let opNewValue = 0;
10005 let isPseudo = 1;
10006 let isCodeGenOnly = 1;
10007 }
10008 def L2_loadruhgp : HInst<
10009 (outs IntRegs:$Rd32),
10010 (ins u31_1Imm:$Ii),
10011 "$Rd32 = memuh(gp+#$Ii)",
10012 tc_c4db48cb, TypeV2LDST>, Enc_8df4be, AddrModeRel {
10013 let Inst{24-21} = 0b1011;
10014 let Inst{31-27} = 0b01001;
10015 let hasNewValue = 1;
10016 let opNewValue = 0;
10017 let accessSize = HalfWordAccess;
10018 let mayLoad = 1;
10019 let Uses = [GP];
10020 let BaseOpcode = "L4_loadruh_abs";
10021 let isPredicable = 1;
10022 let opExtendable = 1;
10023 let isExtentSigned = 0;
10024 let opExtentBits = 17;
10025 let opExtentAlign = 1;
10026 }
10027 def L2_loadw_locked : HInst<
10028 (outs IntRegs:$Rd32),
10029 (ins IntRegs:$Rs32),
10030 "$Rd32 = memw_locked($Rs32)",
10031 tc_b43e7930, TypeLD>, Enc_5e2823 {
10032 let Inst{13-5} = 0b000000000;
10033 let Inst{31-21} = 0b10010010000;
10034 let hasNewValue = 1;
10035 let opNewValue = 0;
10036 let accessSize = WordAccess;
10037 let mayLoad = 1;
10038 let isSoloAX = 1;
10039 }
10040 def L2_ploadrbf_io : HInst<
10041 (outs IntRegs:$Rd32),
10042 (ins PredRegs:$Pt4, IntRegs:$Rs32, u32_0Imm:$Ii),
10043 "if (!$Pt4) $Rd32 = memb($Rs32+#$Ii)",
10044 tc_5ef37dc4, TypeV2LDST>, Enc_a21d47, AddrModeRel {
10045 let Inst{13-13} = 0b0;
10046 let Inst{31-21} = 0b01000101000;
10047 let isPredicated = 1;
10048 let isPredicatedFalse = 1;
10049 let hasNewValue = 1;
10050 let opNewValue = 0;
10051 let addrMode = BaseImmOffset;
10052 let accessSize = ByteAccess;
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_ploadrbf_pi : HInst<
10063 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10064 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_0Imm:$Ii),
10065 "if (!$Pt4) $Rd32 = memb($Rx32++#$Ii)",
10066 tc_3c76b0ff, TypeLD>, Enc_f4413a, PredNewRel {
10067 let Inst{13-11} = 0b101;
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 mayLoad = 1;
10076 let BaseOpcode = "L2_loadrb_pi";
10077 let Constraints = "$Rx32 = $Rx32in";
10078 }
10079 def L2_ploadrbf_zomap : HInst<
10080 (outs IntRegs:$Rd32),
10081 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10082 "if (!$Pt4) $Rd32 = memb($Rs32)",
10083 tc_5ef37dc4, TypeMAPPING> {
10084 let hasNewValue = 1;
10085 let opNewValue = 0;
10086 let isPseudo = 1;
10087 let isCodeGenOnly = 1;
10088 }
10089 def L2_ploadrbfnew_io : HInst<
10090 (outs IntRegs:$Rd32),
10091 (ins PredRegs:$Pt4, IntRegs:$Rs32, u32_0Imm:$Ii),
10092 "if (!$Pt4.new) $Rd32 = memb($Rs32+#$Ii)",
10093 tc_44d3da28, TypeV2LDST>, Enc_a21d47, AddrModeRel {
10094 let Inst{13-13} = 0b0;
10095 let Inst{31-21} = 0b01000111000;
10096 let isPredicated = 1;
10097 let isPredicatedFalse = 1;
10098 let hasNewValue = 1;
10099 let opNewValue = 0;
10100 let addrMode = BaseImmOffset;
10101 let accessSize = ByteAccess;
10102 let isPredicatedNew = 1;
10103 let mayLoad = 1;
10104 let CextOpcode = "L2_loadrb";
10105 let BaseOpcode = "L2_loadrb_io";
10106 let isExtendable = 1;
10107 let opExtendable = 3;
10108 let isExtentSigned = 0;
10109 let opExtentBits = 6;
10110 let opExtentAlign = 0;
10111 }
10112 def L2_ploadrbfnew_pi : HInst<
10113 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10114 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_0Imm:$Ii),
10115 "if (!$Pt4.new) $Rd32 = memb($Rx32++#$Ii)",
10116 tc_e9f3243f, TypeLD>, Enc_f4413a, PredNewRel {
10117 let Inst{13-11} = 0b111;
10118 let Inst{31-21} = 0b10011011000;
10119 let isPredicated = 1;
10120 let isPredicatedFalse = 1;
10121 let hasNewValue = 1;
10122 let opNewValue = 0;
10123 let addrMode = PostInc;
10124 let accessSize = ByteAccess;
10125 let isPredicatedNew = 1;
10126 let mayLoad = 1;
10127 let BaseOpcode = "L2_loadrb_pi";
10128 let Constraints = "$Rx32 = $Rx32in";
10129 }
10130 def L2_ploadrbfnew_zomap : HInst<
10131 (outs IntRegs:$Rd32),
10132 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10133 "if (!$Pt4.new) $Rd32 = memb($Rs32)",
10134 tc_44d3da28, TypeMAPPING> {
10135 let hasNewValue = 1;
10136 let opNewValue = 0;
10137 let isPseudo = 1;
10138 let isCodeGenOnly = 1;
10139 }
10140 def L2_ploadrbt_io : HInst<
10141 (outs IntRegs:$Rd32),
10142 (ins PredRegs:$Pt4, IntRegs:$Rs32, u32_0Imm:$Ii),
10143 "if ($Pt4) $Rd32 = memb($Rs32+#$Ii)",
10144 tc_5ef37dc4, TypeV2LDST>, Enc_a21d47, AddrModeRel {
10145 let Inst{13-13} = 0b0;
10146 let Inst{31-21} = 0b01000001000;
10147 let isPredicated = 1;
10148 let hasNewValue = 1;
10149 let opNewValue = 0;
10150 let addrMode = BaseImmOffset;
10151 let accessSize = ByteAccess;
10152 let mayLoad = 1;
10153 let CextOpcode = "L2_loadrb";
10154 let BaseOpcode = "L2_loadrb_io";
10155 let isExtendable = 1;
10156 let opExtendable = 3;
10157 let isExtentSigned = 0;
10158 let opExtentBits = 6;
10159 let opExtentAlign = 0;
10160 }
10161 def L2_ploadrbt_pi : HInst<
10162 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10163 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_0Imm:$Ii),
10164 "if ($Pt4) $Rd32 = memb($Rx32++#$Ii)",
10165 tc_3c76b0ff, TypeLD>, Enc_f4413a, PredNewRel {
10166 let Inst{13-11} = 0b100;
10167 let Inst{31-21} = 0b10011011000;
10168 let isPredicated = 1;
10169 let hasNewValue = 1;
10170 let opNewValue = 0;
10171 let addrMode = PostInc;
10172 let accessSize = ByteAccess;
10173 let mayLoad = 1;
10174 let BaseOpcode = "L2_loadrb_pi";
10175 let Constraints = "$Rx32 = $Rx32in";
10176 }
10177 def L2_ploadrbt_zomap : HInst<
10178 (outs IntRegs:$Rd32),
10179 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10180 "if ($Pt4) $Rd32 = memb($Rs32)",
10181 tc_5ef37dc4, TypeMAPPING> {
10182 let hasNewValue = 1;
10183 let opNewValue = 0;
10184 let isPseudo = 1;
10185 let isCodeGenOnly = 1;
10186 }
10187 def L2_ploadrbtnew_io : HInst<
10188 (outs IntRegs:$Rd32),
10189 (ins PredRegs:$Pt4, IntRegs:$Rs32, u32_0Imm:$Ii),
10190 "if ($Pt4.new) $Rd32 = memb($Rs32+#$Ii)",
10191 tc_44d3da28, TypeV2LDST>, Enc_a21d47, AddrModeRel {
10192 let Inst{13-13} = 0b0;
10193 let Inst{31-21} = 0b01000011000;
10194 let isPredicated = 1;
10195 let hasNewValue = 1;
10196 let opNewValue = 0;
10197 let addrMode = BaseImmOffset;
10198 let accessSize = ByteAccess;
10199 let isPredicatedNew = 1;
10200 let mayLoad = 1;
10201 let CextOpcode = "L2_loadrb";
10202 let BaseOpcode = "L2_loadrb_io";
10203 let isExtendable = 1;
10204 let opExtendable = 3;
10205 let isExtentSigned = 0;
10206 let opExtentBits = 6;
10207 let opExtentAlign = 0;
10208 }
10209 def L2_ploadrbtnew_pi : HInst<
10210 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10211 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_0Imm:$Ii),
10212 "if ($Pt4.new) $Rd32 = memb($Rx32++#$Ii)",
10213 tc_e9f3243f, TypeLD>, Enc_f4413a, PredNewRel {
10214 let Inst{13-11} = 0b110;
10215 let Inst{31-21} = 0b10011011000;
10216 let isPredicated = 1;
10217 let hasNewValue = 1;
10218 let opNewValue = 0;
10219 let addrMode = PostInc;
10220 let accessSize = ByteAccess;
10221 let isPredicatedNew = 1;
10222 let mayLoad = 1;
10223 let BaseOpcode = "L2_loadrb_pi";
10224 let Constraints = "$Rx32 = $Rx32in";
10225 }
10226 def L2_ploadrbtnew_zomap : HInst<
10227 (outs IntRegs:$Rd32),
10228 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10229 "if ($Pt4.new) $Rd32 = memb($Rs32)",
10230 tc_44d3da28, TypeMAPPING> {
10231 let hasNewValue = 1;
10232 let opNewValue = 0;
10233 let isPseudo = 1;
10234 let isCodeGenOnly = 1;
10235 }
10236 def L2_ploadrdf_io : HInst<
10237 (outs DoubleRegs:$Rdd32),
10238 (ins PredRegs:$Pt4, IntRegs:$Rs32, u29_3Imm:$Ii),
10239 "if (!$Pt4) $Rdd32 = memd($Rs32+#$Ii)",
10240 tc_5ef37dc4, TypeV2LDST>, Enc_acd6ed, AddrModeRel {
10241 let Inst{13-13} = 0b0;
10242 let Inst{31-21} = 0b01000101110;
10243 let isPredicated = 1;
10244 let isPredicatedFalse = 1;
10245 let addrMode = BaseImmOffset;
10246 let accessSize = DoubleWordAccess;
10247 let mayLoad = 1;
10248 let CextOpcode = "L2_loadrd";
10249 let BaseOpcode = "L2_loadrd_io";
10250 let isExtendable = 1;
10251 let opExtendable = 3;
10252 let isExtentSigned = 0;
10253 let opExtentBits = 9;
10254 let opExtentAlign = 3;
10255 }
10256 def L2_ploadrdf_pi : HInst<
10257 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
10258 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_3Imm:$Ii),
10259 "if (!$Pt4) $Rdd32 = memd($Rx32++#$Ii)",
10260 tc_3c76b0ff, TypeLD>, Enc_9d1247, PredNewRel {
10261 let Inst{13-11} = 0b101;
10262 let Inst{31-21} = 0b10011011110;
10263 let isPredicated = 1;
10264 let isPredicatedFalse = 1;
10265 let addrMode = PostInc;
10266 let accessSize = DoubleWordAccess;
10267 let mayLoad = 1;
10268 let BaseOpcode = "L2_loadrd_pi";
10269 let Constraints = "$Rx32 = $Rx32in";
10270 }
10271 def L2_ploadrdf_zomap : HInst<
10272 (outs DoubleRegs:$Rdd32),
10273 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10274 "if (!$Pt4) $Rdd32 = memd($Rs32)",
10275 tc_5ef37dc4, TypeMAPPING> {
10276 let isPseudo = 1;
10277 let isCodeGenOnly = 1;
10278 }
10279 def L2_ploadrdfnew_io : HInst<
10280 (outs DoubleRegs:$Rdd32),
10281 (ins PredRegs:$Pt4, IntRegs:$Rs32, u29_3Imm:$Ii),
10282 "if (!$Pt4.new) $Rdd32 = memd($Rs32+#$Ii)",
10283 tc_44d3da28, TypeV2LDST>, Enc_acd6ed, AddrModeRel {
10284 let Inst{13-13} = 0b0;
10285 let Inst{31-21} = 0b01000111110;
10286 let isPredicated = 1;
10287 let isPredicatedFalse = 1;
10288 let addrMode = BaseImmOffset;
10289 let accessSize = DoubleWordAccess;
10290 let isPredicatedNew = 1;
10291 let mayLoad = 1;
10292 let CextOpcode = "L2_loadrd";
10293 let BaseOpcode = "L2_loadrd_io";
10294 let isExtendable = 1;
10295 let opExtendable = 3;
10296 let isExtentSigned = 0;
10297 let opExtentBits = 9;
10298 let opExtentAlign = 3;
10299 }
10300 def L2_ploadrdfnew_pi : HInst<
10301 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
10302 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_3Imm:$Ii),
10303 "if (!$Pt4.new) $Rdd32 = memd($Rx32++#$Ii)",
10304 tc_e9f3243f, TypeLD>, Enc_9d1247, PredNewRel {
10305 let Inst{13-11} = 0b111;
10306 let Inst{31-21} = 0b10011011110;
10307 let isPredicated = 1;
10308 let isPredicatedFalse = 1;
10309 let addrMode = PostInc;
10310 let accessSize = DoubleWordAccess;
10311 let isPredicatedNew = 1;
10312 let mayLoad = 1;
10313 let BaseOpcode = "L2_loadrd_pi";
10314 let Constraints = "$Rx32 = $Rx32in";
10315 }
10316 def L2_ploadrdfnew_zomap : HInst<
10317 (outs DoubleRegs:$Rdd32),
10318 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10319 "if (!$Pt4.new) $Rdd32 = memd($Rs32)",
10320 tc_44d3da28, TypeMAPPING> {
10321 let isPseudo = 1;
10322 let isCodeGenOnly = 1;
10323 }
10324 def L2_ploadrdt_io : HInst<
10325 (outs DoubleRegs:$Rdd32),
10326 (ins PredRegs:$Pt4, IntRegs:$Rs32, u29_3Imm:$Ii),
10327 "if ($Pt4) $Rdd32 = memd($Rs32+#$Ii)",
10328 tc_5ef37dc4, TypeV2LDST>, Enc_acd6ed, AddrModeRel {
10329 let Inst{13-13} = 0b0;
10330 let Inst{31-21} = 0b01000001110;
10331 let isPredicated = 1;
10332 let addrMode = BaseImmOffset;
10333 let accessSize = DoubleWordAccess;
10334 let mayLoad = 1;
10335 let CextOpcode = "L2_loadrd";
10336 let BaseOpcode = "L2_loadrd_io";
10337 let isExtendable = 1;
10338 let opExtendable = 3;
10339 let isExtentSigned = 0;
10340 let opExtentBits = 9;
10341 let opExtentAlign = 3;
10342 }
10343 def L2_ploadrdt_pi : HInst<
10344 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
10345 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_3Imm:$Ii),
10346 "if ($Pt4) $Rdd32 = memd($Rx32++#$Ii)",
10347 tc_3c76b0ff, TypeLD>, Enc_9d1247, PredNewRel {
10348 let Inst{13-11} = 0b100;
10349 let Inst{31-21} = 0b10011011110;
10350 let isPredicated = 1;
10351 let addrMode = PostInc;
10352 let accessSize = DoubleWordAccess;
10353 let mayLoad = 1;
10354 let BaseOpcode = "L2_loadrd_pi";
10355 let Constraints = "$Rx32 = $Rx32in";
10356 }
10357 def L2_ploadrdt_zomap : HInst<
10358 (outs DoubleRegs:$Rdd32),
10359 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10360 "if ($Pt4) $Rdd32 = memd($Rs32)",
10361 tc_5ef37dc4, TypeMAPPING> {
10362 let isPseudo = 1;
10363 let isCodeGenOnly = 1;
10364 }
10365 def L2_ploadrdtnew_io : HInst<
10366 (outs DoubleRegs:$Rdd32),
10367 (ins PredRegs:$Pt4, IntRegs:$Rs32, u29_3Imm:$Ii),
10368 "if ($Pt4.new) $Rdd32 = memd($Rs32+#$Ii)",
10369 tc_44d3da28, TypeV2LDST>, Enc_acd6ed, AddrModeRel {
10370 let Inst{13-13} = 0b0;
10371 let Inst{31-21} = 0b01000011110;
10372 let isPredicated = 1;
10373 let addrMode = BaseImmOffset;
10374 let accessSize = DoubleWordAccess;
10375 let isPredicatedNew = 1;
10376 let mayLoad = 1;
10377 let CextOpcode = "L2_loadrd";
10378 let BaseOpcode = "L2_loadrd_io";
10379 let isExtendable = 1;
10380 let opExtendable = 3;
10381 let isExtentSigned = 0;
10382 let opExtentBits = 9;
10383 let opExtentAlign = 3;
10384 }
10385 def L2_ploadrdtnew_pi : HInst<
10386 (outs DoubleRegs:$Rdd32, IntRegs:$Rx32),
10387 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_3Imm:$Ii),
10388 "if ($Pt4.new) $Rdd32 = memd($Rx32++#$Ii)",
10389 tc_e9f3243f, TypeLD>, Enc_9d1247, PredNewRel {
10390 let Inst{13-11} = 0b110;
10391 let Inst{31-21} = 0b10011011110;
10392 let isPredicated = 1;
10393 let addrMode = PostInc;
10394 let accessSize = DoubleWordAccess;
10395 let isPredicatedNew = 1;
10396 let mayLoad = 1;
10397 let BaseOpcode = "L2_loadrd_pi";
10398 let Constraints = "$Rx32 = $Rx32in";
10399 }
10400 def L2_ploadrdtnew_zomap : HInst<
10401 (outs DoubleRegs:$Rdd32),
10402 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10403 "if ($Pt4.new) $Rdd32 = memd($Rs32)",
10404 tc_44d3da28, TypeMAPPING> {
10405 let isPseudo = 1;
10406 let isCodeGenOnly = 1;
10407 }
10408 def L2_ploadrhf_io : HInst<
10409 (outs IntRegs:$Rd32),
10410 (ins PredRegs:$Pt4, IntRegs:$Rs32, u31_1Imm:$Ii),
10411 "if (!$Pt4) $Rd32 = memh($Rs32+#$Ii)",
10412 tc_5ef37dc4, TypeV2LDST>, Enc_a198f6, AddrModeRel {
10413 let Inst{13-13} = 0b0;
10414 let Inst{31-21} = 0b01000101010;
10415 let isPredicated = 1;
10416 let isPredicatedFalse = 1;
10417 let hasNewValue = 1;
10418 let opNewValue = 0;
10419 let addrMode = BaseImmOffset;
10420 let accessSize = HalfWordAccess;
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_ploadrhf_pi : HInst<
10431 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10432 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_1Imm:$Ii),
10433 "if (!$Pt4) $Rd32 = memh($Rx32++#$Ii)",
10434 tc_3c76b0ff, TypeLD>, Enc_733b27, PredNewRel {
10435 let Inst{13-11} = 0b101;
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 mayLoad = 1;
10444 let BaseOpcode = "L2_loadrh_pi";
10445 let Constraints = "$Rx32 = $Rx32in";
10446 }
10447 def L2_ploadrhf_zomap : HInst<
10448 (outs IntRegs:$Rd32),
10449 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10450 "if (!$Pt4) $Rd32 = memh($Rs32)",
10451 tc_5ef37dc4, TypeMAPPING> {
10452 let hasNewValue = 1;
10453 let opNewValue = 0;
10454 let isPseudo = 1;
10455 let isCodeGenOnly = 1;
10456 }
10457 def L2_ploadrhfnew_io : HInst<
10458 (outs IntRegs:$Rd32),
10459 (ins PredRegs:$Pt4, IntRegs:$Rs32, u31_1Imm:$Ii),
10460 "if (!$Pt4.new) $Rd32 = memh($Rs32+#$Ii)",
10461 tc_44d3da28, TypeV2LDST>, Enc_a198f6, AddrModeRel {
10462 let Inst{13-13} = 0b0;
10463 let Inst{31-21} = 0b01000111010;
10464 let isPredicated = 1;
10465 let isPredicatedFalse = 1;
10466 let hasNewValue = 1;
10467 let opNewValue = 0;
10468 let addrMode = BaseImmOffset;
10469 let accessSize = HalfWordAccess;
10470 let isPredicatedNew = 1;
10471 let mayLoad = 1;
10472 let CextOpcode = "L2_loadrh";
10473 let BaseOpcode = "L2_loadrh_io";
10474 let isExtendable = 1;
10475 let opExtendable = 3;
10476 let isExtentSigned = 0;
10477 let opExtentBits = 7;
10478 let opExtentAlign = 1;
10479 }
10480 def L2_ploadrhfnew_pi : HInst<
10481 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10482 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_1Imm:$Ii),
10483 "if (!$Pt4.new) $Rd32 = memh($Rx32++#$Ii)",
10484 tc_e9f3243f, TypeLD>, Enc_733b27, PredNewRel {
10485 let Inst{13-11} = 0b111;
10486 let Inst{31-21} = 0b10011011010;
10487 let isPredicated = 1;
10488 let isPredicatedFalse = 1;
10489 let hasNewValue = 1;
10490 let opNewValue = 0;
10491 let addrMode = PostInc;
10492 let accessSize = HalfWordAccess;
10493 let isPredicatedNew = 1;
10494 let mayLoad = 1;
10495 let BaseOpcode = "L2_loadrh_pi";
10496 let Constraints = "$Rx32 = $Rx32in";
10497 }
10498 def L2_ploadrhfnew_zomap : HInst<
10499 (outs IntRegs:$Rd32),
10500 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10501 "if (!$Pt4.new) $Rd32 = memh($Rs32)",
10502 tc_44d3da28, TypeMAPPING> {
10503 let hasNewValue = 1;
10504 let opNewValue = 0;
10505 let isPseudo = 1;
10506 let isCodeGenOnly = 1;
10507 }
10508 def L2_ploadrht_io : HInst<
10509 (outs IntRegs:$Rd32),
10510 (ins PredRegs:$Pt4, IntRegs:$Rs32, u31_1Imm:$Ii),
10511 "if ($Pt4) $Rd32 = memh($Rs32+#$Ii)",
10512 tc_5ef37dc4, TypeV2LDST>, Enc_a198f6, AddrModeRel {
10513 let Inst{13-13} = 0b0;
10514 let Inst{31-21} = 0b01000001010;
10515 let isPredicated = 1;
10516 let hasNewValue = 1;
10517 let opNewValue = 0;
10518 let addrMode = BaseImmOffset;
10519 let accessSize = HalfWordAccess;
10520 let mayLoad = 1;
10521 let CextOpcode = "L2_loadrh";
10522 let BaseOpcode = "L2_loadrh_io";
10523 let isExtendable = 1;
10524 let opExtendable = 3;
10525 let isExtentSigned = 0;
10526 let opExtentBits = 7;
10527 let opExtentAlign = 1;
10528 }
10529 def L2_ploadrht_pi : HInst<
10530 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10531 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_1Imm:$Ii),
10532 "if ($Pt4) $Rd32 = memh($Rx32++#$Ii)",
10533 tc_3c76b0ff, TypeLD>, Enc_733b27, PredNewRel {
10534 let Inst{13-11} = 0b100;
10535 let Inst{31-21} = 0b10011011010;
10536 let isPredicated = 1;
10537 let hasNewValue = 1;
10538 let opNewValue = 0;
10539 let addrMode = PostInc;
10540 let accessSize = HalfWordAccess;
10541 let mayLoad = 1;
10542 let BaseOpcode = "L2_loadrh_pi";
10543 let Constraints = "$Rx32 = $Rx32in";
10544 }
10545 def L2_ploadrht_zomap : HInst<
10546 (outs IntRegs:$Rd32),
10547 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10548 "if ($Pt4) $Rd32 = memh($Rs32)",
10549 tc_5ef37dc4, TypeMAPPING> {
10550 let hasNewValue = 1;
10551 let opNewValue = 0;
10552 let isPseudo = 1;
10553 let isCodeGenOnly = 1;
10554 }
10555 def L2_ploadrhtnew_io : HInst<
10556 (outs IntRegs:$Rd32),
10557 (ins PredRegs:$Pt4, IntRegs:$Rs32, u31_1Imm:$Ii),
10558 "if ($Pt4.new) $Rd32 = memh($Rs32+#$Ii)",
10559 tc_44d3da28, TypeV2LDST>, Enc_a198f6, AddrModeRel {
10560 let Inst{13-13} = 0b0;
10561 let Inst{31-21} = 0b01000011010;
10562 let isPredicated = 1;
10563 let hasNewValue = 1;
10564 let opNewValue = 0;
10565 let addrMode = BaseImmOffset;
10566 let accessSize = HalfWordAccess;
10567 let isPredicatedNew = 1;
10568 let mayLoad = 1;
10569 let CextOpcode = "L2_loadrh";
10570 let BaseOpcode = "L2_loadrh_io";
10571 let isExtendable = 1;
10572 let opExtendable = 3;
10573 let isExtentSigned = 0;
10574 let opExtentBits = 7;
10575 let opExtentAlign = 1;
10576 }
10577 def L2_ploadrhtnew_pi : HInst<
10578 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10579 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_1Imm:$Ii),
10580 "if ($Pt4.new) $Rd32 = memh($Rx32++#$Ii)",
10581 tc_e9f3243f, TypeLD>, Enc_733b27, PredNewRel {
10582 let Inst{13-11} = 0b110;
10583 let Inst{31-21} = 0b10011011010;
10584 let isPredicated = 1;
10585 let hasNewValue = 1;
10586 let opNewValue = 0;
10587 let addrMode = PostInc;
10588 let accessSize = HalfWordAccess;
10589 let isPredicatedNew = 1;
10590 let mayLoad = 1;
10591 let BaseOpcode = "L2_loadrh_pi";
10592 let Constraints = "$Rx32 = $Rx32in";
10593 }
10594 def L2_ploadrhtnew_zomap : HInst<
10595 (outs IntRegs:$Rd32),
10596 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10597 "if ($Pt4.new) $Rd32 = memh($Rs32)",
10598 tc_44d3da28, TypeMAPPING> {
10599 let hasNewValue = 1;
10600 let opNewValue = 0;
10601 let isPseudo = 1;
10602 let isCodeGenOnly = 1;
10603 }
10604 def L2_ploadrif_io : HInst<
10605 (outs IntRegs:$Rd32),
10606 (ins PredRegs:$Pt4, IntRegs:$Rs32, u30_2Imm:$Ii),
10607 "if (!$Pt4) $Rd32 = memw($Rs32+#$Ii)",
10608 tc_5ef37dc4, TypeV2LDST>, Enc_f82eaf, AddrModeRel {
10609 let Inst{13-13} = 0b0;
10610 let Inst{31-21} = 0b01000101100;
10611 let isPredicated = 1;
10612 let isPredicatedFalse = 1;
10613 let hasNewValue = 1;
10614 let opNewValue = 0;
10615 let addrMode = BaseImmOffset;
10616 let accessSize = WordAccess;
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_ploadrif_pi : HInst<
10627 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10628 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_2Imm:$Ii),
10629 "if (!$Pt4) $Rd32 = memw($Rx32++#$Ii)",
10630 tc_3c76b0ff, TypeLD>, Enc_b97f71, PredNewRel {
10631 let Inst{13-11} = 0b101;
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 mayLoad = 1;
10640 let BaseOpcode = "L2_loadri_pi";
10641 let Constraints = "$Rx32 = $Rx32in";
10642 }
10643 def L2_ploadrif_zomap : HInst<
10644 (outs IntRegs:$Rd32),
10645 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10646 "if (!$Pt4) $Rd32 = memw($Rs32)",
10647 tc_5ef37dc4, TypeMAPPING> {
10648 let hasNewValue = 1;
10649 let opNewValue = 0;
10650 let isPseudo = 1;
10651 let isCodeGenOnly = 1;
10652 }
10653 def L2_ploadrifnew_io : HInst<
10654 (outs IntRegs:$Rd32),
10655 (ins PredRegs:$Pt4, IntRegs:$Rs32, u30_2Imm:$Ii),
10656 "if (!$Pt4.new) $Rd32 = memw($Rs32+#$Ii)",
10657 tc_44d3da28, TypeV2LDST>, Enc_f82eaf, AddrModeRel {
10658 let Inst{13-13} = 0b0;
10659 let Inst{31-21} = 0b01000111100;
10660 let isPredicated = 1;
10661 let isPredicatedFalse = 1;
10662 let hasNewValue = 1;
10663 let opNewValue = 0;
10664 let addrMode = BaseImmOffset;
10665 let accessSize = WordAccess;
10666 let isPredicatedNew = 1;
10667 let mayLoad = 1;
10668 let CextOpcode = "L2_loadri";
10669 let BaseOpcode = "L2_loadri_io";
10670 let isExtendable = 1;
10671 let opExtendable = 3;
10672 let isExtentSigned = 0;
10673 let opExtentBits = 8;
10674 let opExtentAlign = 2;
10675 }
10676 def L2_ploadrifnew_pi : HInst<
10677 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10678 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_2Imm:$Ii),
10679 "if (!$Pt4.new) $Rd32 = memw($Rx32++#$Ii)",
10680 tc_e9f3243f, TypeLD>, Enc_b97f71, PredNewRel {
10681 let Inst{13-11} = 0b111;
10682 let Inst{31-21} = 0b10011011100;
10683 let isPredicated = 1;
10684 let isPredicatedFalse = 1;
10685 let hasNewValue = 1;
10686 let opNewValue = 0;
10687 let addrMode = PostInc;
10688 let accessSize = WordAccess;
10689 let isPredicatedNew = 1;
10690 let mayLoad = 1;
10691 let BaseOpcode = "L2_loadri_pi";
10692 let Constraints = "$Rx32 = $Rx32in";
10693 }
10694 def L2_ploadrifnew_zomap : HInst<
10695 (outs IntRegs:$Rd32),
10696 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10697 "if (!$Pt4.new) $Rd32 = memw($Rs32)",
10698 tc_44d3da28, TypeMAPPING> {
10699 let hasNewValue = 1;
10700 let opNewValue = 0;
10701 let isPseudo = 1;
10702 let isCodeGenOnly = 1;
10703 }
10704 def L2_ploadrit_io : HInst<
10705 (outs IntRegs:$Rd32),
10706 (ins PredRegs:$Pt4, IntRegs:$Rs32, u30_2Imm:$Ii),
10707 "if ($Pt4) $Rd32 = memw($Rs32+#$Ii)",
10708 tc_5ef37dc4, TypeV2LDST>, Enc_f82eaf, AddrModeRel {
10709 let Inst{13-13} = 0b0;
10710 let Inst{31-21} = 0b01000001100;
10711 let isPredicated = 1;
10712 let hasNewValue = 1;
10713 let opNewValue = 0;
10714 let addrMode = BaseImmOffset;
10715 let accessSize = WordAccess;
10716 let mayLoad = 1;
10717 let CextOpcode = "L2_loadri";
10718 let BaseOpcode = "L2_loadri_io";
10719 let isExtendable = 1;
10720 let opExtendable = 3;
10721 let isExtentSigned = 0;
10722 let opExtentBits = 8;
10723 let opExtentAlign = 2;
10724 }
10725 def L2_ploadrit_pi : HInst<
10726 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10727 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_2Imm:$Ii),
10728 "if ($Pt4) $Rd32 = memw($Rx32++#$Ii)",
10729 tc_3c76b0ff, TypeLD>, Enc_b97f71, PredNewRel {
10730 let Inst{13-11} = 0b100;
10731 let Inst{31-21} = 0b10011011100;
10732 let isPredicated = 1;
10733 let hasNewValue = 1;
10734 let opNewValue = 0;
10735 let addrMode = PostInc;
10736 let accessSize = WordAccess;
10737 let mayLoad = 1;
10738 let BaseOpcode = "L2_loadri_pi";
10739 let Constraints = "$Rx32 = $Rx32in";
10740 }
10741 def L2_ploadrit_zomap : HInst<
10742 (outs IntRegs:$Rd32),
10743 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10744 "if ($Pt4) $Rd32 = memw($Rs32)",
10745 tc_5ef37dc4, TypeMAPPING> {
10746 let hasNewValue = 1;
10747 let opNewValue = 0;
10748 let isPseudo = 1;
10749 let isCodeGenOnly = 1;
10750 }
10751 def L2_ploadritnew_io : HInst<
10752 (outs IntRegs:$Rd32),
10753 (ins PredRegs:$Pt4, IntRegs:$Rs32, u30_2Imm:$Ii),
10754 "if ($Pt4.new) $Rd32 = memw($Rs32+#$Ii)",
10755 tc_44d3da28, TypeV2LDST>, Enc_f82eaf, AddrModeRel {
10756 let Inst{13-13} = 0b0;
10757 let Inst{31-21} = 0b01000011100;
10758 let isPredicated = 1;
10759 let hasNewValue = 1;
10760 let opNewValue = 0;
10761 let addrMode = BaseImmOffset;
10762 let accessSize = WordAccess;
10763 let isPredicatedNew = 1;
10764 let mayLoad = 1;
10765 let CextOpcode = "L2_loadri";
10766 let BaseOpcode = "L2_loadri_io";
10767 let isExtendable = 1;
10768 let opExtendable = 3;
10769 let isExtentSigned = 0;
10770 let opExtentBits = 8;
10771 let opExtentAlign = 2;
10772 }
10773 def L2_ploadritnew_pi : HInst<
10774 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10775 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_2Imm:$Ii),
10776 "if ($Pt4.new) $Rd32 = memw($Rx32++#$Ii)",
10777 tc_e9f3243f, TypeLD>, Enc_b97f71, PredNewRel {
10778 let Inst{13-11} = 0b110;
10779 let Inst{31-21} = 0b10011011100;
10780 let isPredicated = 1;
10781 let hasNewValue = 1;
10782 let opNewValue = 0;
10783 let addrMode = PostInc;
10784 let accessSize = WordAccess;
10785 let isPredicatedNew = 1;
10786 let mayLoad = 1;
10787 let BaseOpcode = "L2_loadri_pi";
10788 let Constraints = "$Rx32 = $Rx32in";
10789 }
10790 def L2_ploadritnew_zomap : HInst<
10791 (outs IntRegs:$Rd32),
10792 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10793 "if ($Pt4.new) $Rd32 = memw($Rs32)",
10794 tc_44d3da28, TypeMAPPING> {
10795 let hasNewValue = 1;
10796 let opNewValue = 0;
10797 let isPseudo = 1;
10798 let isCodeGenOnly = 1;
10799 }
10800 def L2_ploadrubf_io : HInst<
10801 (outs IntRegs:$Rd32),
10802 (ins PredRegs:$Pt4, IntRegs:$Rs32, u32_0Imm:$Ii),
10803 "if (!$Pt4) $Rd32 = memub($Rs32+#$Ii)",
10804 tc_5ef37dc4, TypeV2LDST>, Enc_a21d47, AddrModeRel {
10805 let Inst{13-13} = 0b0;
10806 let Inst{31-21} = 0b01000101001;
10807 let isPredicated = 1;
10808 let isPredicatedFalse = 1;
10809 let hasNewValue = 1;
10810 let opNewValue = 0;
10811 let addrMode = BaseImmOffset;
10812 let accessSize = ByteAccess;
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_ploadrubf_pi : HInst<
10823 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10824 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_0Imm:$Ii),
10825 "if (!$Pt4) $Rd32 = memub($Rx32++#$Ii)",
10826 tc_3c76b0ff, TypeLD>, Enc_f4413a, PredNewRel {
10827 let Inst{13-11} = 0b101;
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 mayLoad = 1;
10836 let BaseOpcode = "L2_loadrub_pi";
10837 let Constraints = "$Rx32 = $Rx32in";
10838 }
10839 def L2_ploadrubf_zomap : HInst<
10840 (outs IntRegs:$Rd32),
10841 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10842 "if (!$Pt4) $Rd32 = memub($Rs32)",
10843 tc_5ef37dc4, TypeMAPPING> {
10844 let hasNewValue = 1;
10845 let opNewValue = 0;
10846 let isPseudo = 1;
10847 let isCodeGenOnly = 1;
10848 }
10849 def L2_ploadrubfnew_io : HInst<
10850 (outs IntRegs:$Rd32),
10851 (ins PredRegs:$Pt4, IntRegs:$Rs32, u32_0Imm:$Ii),
10852 "if (!$Pt4.new) $Rd32 = memub($Rs32+#$Ii)",
10853 tc_44d3da28, TypeV2LDST>, Enc_a21d47, AddrModeRel {
10854 let Inst{13-13} = 0b0;
10855 let Inst{31-21} = 0b01000111001;
10856 let isPredicated = 1;
10857 let isPredicatedFalse = 1;
10858 let hasNewValue = 1;
10859 let opNewValue = 0;
10860 let addrMode = BaseImmOffset;
10861 let accessSize = ByteAccess;
10862 let isPredicatedNew = 1;
10863 let mayLoad = 1;
10864 let CextOpcode = "L2_loadrub";
10865 let BaseOpcode = "L2_loadrub_io";
10866 let isExtendable = 1;
10867 let opExtendable = 3;
10868 let isExtentSigned = 0;
10869 let opExtentBits = 6;
10870 let opExtentAlign = 0;
10871 }
10872 def L2_ploadrubfnew_pi : HInst<
10873 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10874 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_0Imm:$Ii),
10875 "if (!$Pt4.new) $Rd32 = memub($Rx32++#$Ii)",
10876 tc_e9f3243f, TypeLD>, Enc_f4413a, PredNewRel {
10877 let Inst{13-11} = 0b111;
10878 let Inst{31-21} = 0b10011011001;
10879 let isPredicated = 1;
10880 let isPredicatedFalse = 1;
10881 let hasNewValue = 1;
10882 let opNewValue = 0;
10883 let addrMode = PostInc;
10884 let accessSize = ByteAccess;
10885 let isPredicatedNew = 1;
10886 let mayLoad = 1;
10887 let BaseOpcode = "L2_loadrub_pi";
10888 let Constraints = "$Rx32 = $Rx32in";
10889 }
10890 def L2_ploadrubfnew_zomap : HInst<
10891 (outs IntRegs:$Rd32),
10892 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10893 "if (!$Pt4.new) $Rd32 = memub($Rs32)",
10894 tc_44d3da28, TypeMAPPING> {
10895 let hasNewValue = 1;
10896 let opNewValue = 0;
10897 let isPseudo = 1;
10898 let isCodeGenOnly = 1;
10899 }
10900 def L2_ploadrubt_io : HInst<
10901 (outs IntRegs:$Rd32),
10902 (ins PredRegs:$Pt4, IntRegs:$Rs32, u32_0Imm:$Ii),
10903 "if ($Pt4) $Rd32 = memub($Rs32+#$Ii)",
10904 tc_5ef37dc4, TypeV2LDST>, Enc_a21d47, AddrModeRel {
10905 let Inst{13-13} = 0b0;
10906 let Inst{31-21} = 0b01000001001;
10907 let isPredicated = 1;
10908 let hasNewValue = 1;
10909 let opNewValue = 0;
10910 let addrMode = BaseImmOffset;
10911 let accessSize = ByteAccess;
10912 let mayLoad = 1;
10913 let CextOpcode = "L2_loadrub";
10914 let BaseOpcode = "L2_loadrub_io";
10915 let isExtendable = 1;
10916 let opExtendable = 3;
10917 let isExtentSigned = 0;
10918 let opExtentBits = 6;
10919 let opExtentAlign = 0;
10920 }
10921 def L2_ploadrubt_pi : HInst<
10922 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10923 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_0Imm:$Ii),
10924 "if ($Pt4) $Rd32 = memub($Rx32++#$Ii)",
10925 tc_3c76b0ff, TypeLD>, Enc_f4413a, PredNewRel {
10926 let Inst{13-11} = 0b100;
10927 let Inst{31-21} = 0b10011011001;
10928 let isPredicated = 1;
10929 let hasNewValue = 1;
10930 let opNewValue = 0;
10931 let addrMode = PostInc;
10932 let accessSize = ByteAccess;
10933 let mayLoad = 1;
10934 let BaseOpcode = "L2_loadrub_pi";
10935 let Constraints = "$Rx32 = $Rx32in";
10936 }
10937 def L2_ploadrubt_zomap : HInst<
10938 (outs IntRegs:$Rd32),
10939 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10940 "if ($Pt4) $Rd32 = memub($Rs32)",
10941 tc_5ef37dc4, TypeMAPPING> {
10942 let hasNewValue = 1;
10943 let opNewValue = 0;
10944 let isPseudo = 1;
10945 let isCodeGenOnly = 1;
10946 }
10947 def L2_ploadrubtnew_io : HInst<
10948 (outs IntRegs:$Rd32),
10949 (ins PredRegs:$Pt4, IntRegs:$Rs32, u32_0Imm:$Ii),
10950 "if ($Pt4.new) $Rd32 = memub($Rs32+#$Ii)",
10951 tc_44d3da28, TypeV2LDST>, Enc_a21d47, AddrModeRel {
10952 let Inst{13-13} = 0b0;
10953 let Inst{31-21} = 0b01000011001;
10954 let isPredicated = 1;
10955 let hasNewValue = 1;
10956 let opNewValue = 0;
10957 let addrMode = BaseImmOffset;
10958 let accessSize = ByteAccess;
10959 let isPredicatedNew = 1;
10960 let mayLoad = 1;
10961 let CextOpcode = "L2_loadrub";
10962 let BaseOpcode = "L2_loadrub_io";
10963 let isExtendable = 1;
10964 let opExtendable = 3;
10965 let isExtentSigned = 0;
10966 let opExtentBits = 6;
10967 let opExtentAlign = 0;
10968 }
10969 def L2_ploadrubtnew_pi : HInst<
10970 (outs IntRegs:$Rd32, IntRegs:$Rx32),
10971 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_0Imm:$Ii),
10972 "if ($Pt4.new) $Rd32 = memub($Rx32++#$Ii)",
10973 tc_e9f3243f, TypeLD>, Enc_f4413a, PredNewRel {
10974 let Inst{13-11} = 0b110;
10975 let Inst{31-21} = 0b10011011001;
10976 let isPredicated = 1;
10977 let hasNewValue = 1;
10978 let opNewValue = 0;
10979 let addrMode = PostInc;
10980 let accessSize = ByteAccess;
10981 let isPredicatedNew = 1;
10982 let mayLoad = 1;
10983 let BaseOpcode = "L2_loadrub_pi";
10984 let Constraints = "$Rx32 = $Rx32in";
10985 }
10986 def L2_ploadrubtnew_zomap : HInst<
10987 (outs IntRegs:$Rd32),
10988 (ins PredRegs:$Pt4, IntRegs:$Rs32),
10989 "if ($Pt4.new) $Rd32 = memub($Rs32)",
10990 tc_44d3da28, TypeMAPPING> {
10991 let hasNewValue = 1;
10992 let opNewValue = 0;
10993 let isPseudo = 1;
10994 let isCodeGenOnly = 1;
10995 }
10996 def L2_ploadruhf_io : HInst<
10997 (outs IntRegs:$Rd32),
10998 (ins PredRegs:$Pt4, IntRegs:$Rs32, u31_1Imm:$Ii),
10999 "if (!$Pt4) $Rd32 = memuh($Rs32+#$Ii)",
11000 tc_5ef37dc4, TypeV2LDST>, Enc_a198f6, AddrModeRel {
11001 let Inst{13-13} = 0b0;
11002 let Inst{31-21} = 0b01000101011;
11003 let isPredicated = 1;
11004 let isPredicatedFalse = 1;
11005 let hasNewValue = 1;
11006 let opNewValue = 0;
11007 let addrMode = BaseImmOffset;
11008 let accessSize = HalfWordAccess;
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_ploadruhf_pi : HInst<
11019 (outs IntRegs:$Rd32, IntRegs:$Rx32),
11020 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_1Imm:$Ii),
11021 "if (!$Pt4) $Rd32 = memuh($Rx32++#$Ii)",
11022 tc_3c76b0ff, TypeLD>, Enc_733b27, PredNewRel {
11023 let Inst{13-11} = 0b101;
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 mayLoad = 1;
11032 let BaseOpcode = "L2_loadruh_pi";
11033 let Constraints = "$Rx32 = $Rx32in";
11034 }
11035 def L2_ploadruhf_zomap : HInst<
11036 (outs IntRegs:$Rd32),
11037 (ins PredRegs:$Pt4, IntRegs:$Rs32),
11038 "if (!$Pt4) $Rd32 = memuh($Rs32)",
11039 tc_5ef37dc4, TypeMAPPING> {
11040 let hasNewValue = 1;
11041 let opNewValue = 0;
11042 let isPseudo = 1;
11043 let isCodeGenOnly = 1;
11044 }
11045 def L2_ploadruhfnew_io : HInst<
11046 (outs IntRegs:$Rd32),
11047 (ins PredRegs:$Pt4, IntRegs:$Rs32, u31_1Imm:$Ii),
11048 "if (!$Pt4.new) $Rd32 = memuh($Rs32+#$Ii)",
11049 tc_44d3da28, TypeV2LDST>, Enc_a198f6, AddrModeRel {
11050 let Inst{13-13} = 0b0;
11051 let Inst{31-21} = 0b01000111011;
11052 let isPredicated = 1;
11053 let isPredicatedFalse = 1;
11054 let hasNewValue = 1;
11055 let opNewValue = 0;
11056 let addrMode = BaseImmOffset;
11057 let accessSize = HalfWordAccess;
11058 let isPredicatedNew = 1;
11059 let mayLoad = 1;
11060 let CextOpcode = "L2_loadruh";
11061 let BaseOpcode = "L2_loadruh_io";
11062 let isExtendable = 1;
11063 let opExtendable = 3;
11064 let isExtentSigned = 0;
11065 let opExtentBits = 7;
11066 let opExtentAlign = 1;
11067 }
11068 def L2_ploadruhfnew_pi : HInst<
11069 (outs IntRegs:$Rd32, IntRegs:$Rx32),
11070 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_1Imm:$Ii),
11071 "if (!$Pt4.new) $Rd32 = memuh($Rx32++#$Ii)",
11072 tc_e9f3243f, TypeLD>, Enc_733b27, PredNewRel {
11073 let Inst{13-11} = 0b111;
11074 let Inst{31-21} = 0b10011011011;
11075 let isPredicated = 1;
11076 let isPredicatedFalse = 1;
11077 let hasNewValue = 1;
11078 let opNewValue = 0;
11079 let addrMode = PostInc;
11080 let accessSize = HalfWordAccess;
11081 let isPredicatedNew = 1;
11082 let mayLoad = 1;
11083 let BaseOpcode = "L2_loadruh_pi";
11084 let Constraints = "$Rx32 = $Rx32in";
11085 }
11086 def L2_ploadruhfnew_zomap : HInst<
11087 (outs IntRegs:$Rd32),
11088 (ins PredRegs:$Pt4, IntRegs:$Rs32),
11089 "if (!$Pt4.new) $Rd32 = memuh($Rs32)",
11090 tc_44d3da28, TypeMAPPING> {
11091 let hasNewValue = 1;
11092 let opNewValue = 0;
11093 let isPseudo = 1;
11094 let isCodeGenOnly = 1;
11095 }
11096 def L2_ploadruht_io : HInst<
11097 (outs IntRegs:$Rd32),
11098 (ins PredRegs:$Pt4, IntRegs:$Rs32, u31_1Imm:$Ii),
11099 "if ($Pt4) $Rd32 = memuh($Rs32+#$Ii)",
11100 tc_5ef37dc4, TypeV2LDST>, Enc_a198f6, AddrModeRel {
11101 let Inst{13-13} = 0b0;
11102 let Inst{31-21} = 0b01000001011;
11103 let isPredicated = 1;
11104 let hasNewValue = 1;
11105 let opNewValue = 0;
11106 let addrMode = BaseImmOffset;
11107 let accessSize = HalfWordAccess;
11108 let mayLoad = 1;
11109 let CextOpcode = "L2_loadruh";
11110 let BaseOpcode = "L2_loadruh_io";
11111 let isExtendable = 1;
11112 let opExtendable = 3;
11113 let isExtentSigned = 0;
11114 let opExtentBits = 7;
11115 let opExtentAlign = 1;
11116 }
11117 def L2_ploadruht_pi : HInst<
11118 (outs IntRegs:$Rd32, IntRegs:$Rx32),
11119 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_1Imm:$Ii),
11120 "if ($Pt4) $Rd32 = memuh($Rx32++#$Ii)",
11121 tc_3c76b0ff, TypeLD>, Enc_733b27, PredNewRel {
11122 let Inst{13-11} = 0b100;
11123 let Inst{31-21} = 0b10011011011;
11124 let isPredicated = 1;
11125 let hasNewValue = 1;
11126 let opNewValue = 0;
11127 let addrMode = PostInc;
11128 let accessSize = HalfWordAccess;
11129 let mayLoad = 1;
11130 let BaseOpcode = "L2_loadruh_pi";
11131 let Constraints = "$Rx32 = $Rx32in";
11132 }
11133 def L2_ploadruht_zomap : HInst<
11134 (outs IntRegs:$Rd32),
11135 (ins PredRegs:$Pt4, IntRegs:$Rs32),
11136 "if ($Pt4) $Rd32 = memuh($Rs32)",
11137 tc_5ef37dc4, TypeMAPPING> {
11138 let hasNewValue = 1;
11139 let opNewValue = 0;
11140 let isPseudo = 1;
11141 let isCodeGenOnly = 1;
11142 }
11143 def L2_ploadruhtnew_io : HInst<
11144 (outs IntRegs:$Rd32),
11145 (ins PredRegs:$Pt4, IntRegs:$Rs32, u31_1Imm:$Ii),
11146 "if ($Pt4.new) $Rd32 = memuh($Rs32+#$Ii)",
11147 tc_44d3da28, TypeV2LDST>, Enc_a198f6, AddrModeRel {
11148 let Inst{13-13} = 0b0;
11149 let Inst{31-21} = 0b01000011011;
11150 let isPredicated = 1;
11151 let hasNewValue = 1;
11152 let opNewValue = 0;
11153 let addrMode = BaseImmOffset;
11154 let accessSize = HalfWordAccess;
11155 let isPredicatedNew = 1;
11156 let mayLoad = 1;
11157 let CextOpcode = "L2_loadruh";
11158 let BaseOpcode = "L2_loadruh_io";
11159 let isExtendable = 1;
11160 let opExtendable = 3;
11161 let isExtentSigned = 0;
11162 let opExtentBits = 7;
11163 let opExtentAlign = 1;
11164 }
11165 def L2_ploadruhtnew_pi : HInst<
11166 (outs IntRegs:$Rd32, IntRegs:$Rx32),
11167 (ins PredRegs:$Pt4, IntRegs:$Rx32in, s4_1Imm:$Ii),
11168 "if ($Pt4.new) $Rd32 = memuh($Rx32++#$Ii)",
11169 tc_e9f3243f, TypeLD>, Enc_733b27, PredNewRel {
11170 let Inst{13-11} = 0b110;
11171 let Inst{31-21} = 0b10011011011;
11172 let isPredicated = 1;
11173 let hasNewValue = 1;
11174 let opNewValue = 0;
11175 let addrMode = PostInc;
11176 let accessSize = HalfWordAccess;
11177 let isPredicatedNew = 1;
11178 let mayLoad = 1;
11179 let BaseOpcode = "L2_loadruh_pi";
11180 let Constraints = "$Rx32 = $Rx32in";
11181 }
11182 def L2_ploadruhtnew_zomap : HInst<
11183 (outs IntRegs:$Rd32),
11184 (ins PredRegs:$Pt4, IntRegs:$Rs32),
11185 "if ($Pt4.new) $Rd32 = memuh($Rs32)",
11186 tc_44d3da28, TypeMAPPING> {
11187 let hasNewValue = 1;
11188 let opNewValue = 0;
11189 let isPseudo = 1;
11190 let isCodeGenOnly = 1;
11191 }
11192 def L4_add_memopb_io : HInst<
11193 (outs),
11194 (ins IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
11195 "memb($Rs32+#$Ii) += $Rt32",
11196 tc_7186d325, TypeV4LDST>, Enc_d44e31 {
11197 let Inst{6-5} = 0b00;
11198 let Inst{13-13} = 0b0;
11199 let Inst{31-21} = 0b00111110000;
11200 let addrMode = BaseImmOffset;
11201 let accessSize = ByteAccess;
11202 let mayLoad = 1;
11203 let isRestrictNoSlot1Store = 1;
11204 let mayStore = 1;
11205 let isExtendable = 1;
11206 let opExtendable = 1;
11207 let isExtentSigned = 0;
11208 let opExtentBits = 6;
11209 let opExtentAlign = 0;
11210 }
11211 def L4_add_memopb_zomap : HInst<
11212 (outs),
11213 (ins IntRegs:$Rs32, IntRegs:$Rt32),
11214 "memb($Rs32) += $Rt32",
11215 tc_7186d325, TypeMAPPING> {
11216 let isPseudo = 1;
11217 let isCodeGenOnly = 1;
11218 }
11219 def L4_add_memoph_io : HInst<
11220 (outs),
11221 (ins IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
11222 "memh($Rs32+#$Ii) += $Rt32",
11223 tc_7186d325, TypeV4LDST>, Enc_163a3c {
11224 let Inst{6-5} = 0b00;
11225 let Inst{13-13} = 0b0;
11226 let Inst{31-21} = 0b00111110001;
11227 let addrMode = BaseImmOffset;
11228 let accessSize = HalfWordAccess;
11229 let mayLoad = 1;
11230 let isRestrictNoSlot1Store = 1;
11231 let mayStore = 1;
11232 let isExtendable = 1;
11233 let opExtendable = 1;
11234 let isExtentSigned = 0;
11235 let opExtentBits = 7;
11236 let opExtentAlign = 1;
11237 }
11238 def L4_add_memoph_zomap : HInst<
11239 (outs),
11240 (ins IntRegs:$Rs32, IntRegs:$Rt32),
11241 "memh($Rs32) += $Rt32",
11242 tc_7186d325, TypeMAPPING> {
11243 let isPseudo = 1;
11244 let isCodeGenOnly = 1;
11245 }
11246 def L4_add_memopw_io : HInst<
11247 (outs),
11248 (ins IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Rt32),
11249 "memw($Rs32+#$Ii) += $Rt32",
11250 tc_7186d325, TypeV4LDST>, Enc_226535 {
11251 let Inst{6-5} = 0b00;
11252 let Inst{13-13} = 0b0;
11253 let Inst{31-21} = 0b00111110010;
11254 let addrMode = BaseImmOffset;
11255 let accessSize = WordAccess;
11256 let mayLoad = 1;
11257 let isRestrictNoSlot1Store = 1;
11258 let mayStore = 1;
11259 let isExtendable = 1;
11260 let opExtendable = 1;
11261 let isExtentSigned = 0;
11262 let opExtentBits = 8;
11263 let opExtentAlign = 2;
11264 }
11265 def L4_add_memopw_zomap : HInst<
11266 (outs),
11267 (ins IntRegs:$Rs32, IntRegs:$Rt32),
11268 "memw($Rs32) += $Rt32",
11269 tc_7186d325, TypeMAPPING> {
11270 let isPseudo = 1;
11271 let isCodeGenOnly = 1;
11272 }
11273 def L4_and_memopb_io : HInst<
11274 (outs),
11275 (ins IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
11276 "memb($Rs32+#$Ii) &= $Rt32",
11277 tc_7186d325, TypeV4LDST>, Enc_d44e31 {
11278 let Inst{6-5} = 0b10;
11279 let Inst{13-13} = 0b0;
11280 let Inst{31-21} = 0b00111110000;
11281 let addrMode = BaseImmOffset;
11282 let accessSize = ByteAccess;
11283 let mayLoad = 1;
11284 let isRestrictNoSlot1Store = 1;
11285 let mayStore = 1;
11286 let isExtendable = 1;
11287 let opExtendable = 1;
11288 let isExtentSigned = 0;
11289 let opExtentBits = 6;
11290 let opExtentAlign = 0;
11291 }
11292 def L4_and_memopb_zomap : HInst<
11293 (outs),
11294 (ins IntRegs:$Rs32, IntRegs:$Rt32),
11295 "memb($Rs32) &= $Rt32",
11296 tc_7186d325, TypeMAPPING> {
11297 let isPseudo = 1;
11298 let isCodeGenOnly = 1;
11299 }
11300 def L4_and_memoph_io : HInst<
11301 (outs),
11302 (ins IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
11303 "memh($Rs32+#$Ii) &= $Rt32",
11304 tc_7186d325, TypeV4LDST>, Enc_163a3c {
11305 let Inst{6-5} = 0b10;
11306 let Inst{13-13} = 0b0;
11307 let Inst{31-21} = 0b00111110001;
11308 let addrMode = BaseImmOffset;
11309 let accessSize = HalfWordAccess;
11310 let mayLoad = 1;
11311 let isRestrictNoSlot1Store = 1;
11312 let mayStore = 1;
11313 let isExtendable = 1;
11314 let opExtendable = 1;
11315 let isExtentSigned = 0;
11316 let opExtentBits = 7;
11317 let opExtentAlign = 1;
11318 }
11319 def L4_and_memoph_zomap : HInst<
11320 (outs),
11321 (ins IntRegs:$Rs32, IntRegs:$Rt32),
11322 "memh($Rs32) &= $Rt32",
11323 tc_7186d325, TypeMAPPING> {
11324 let isPseudo = 1;
11325 let isCodeGenOnly = 1;
11326 }
11327 def L4_and_memopw_io : HInst<
11328 (outs),
11329 (ins IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Rt32),
11330 "memw($Rs32+#$Ii) &= $Rt32",
11331 tc_7186d325, TypeV4LDST>, Enc_226535 {
11332 let Inst{6-5} = 0b10;
11333 let Inst{13-13} = 0b0;
11334 let Inst{31-21} = 0b00111110010;
11335 let addrMode = BaseImmOffset;
11336 let accessSize = WordAccess;
11337 let mayLoad = 1;
11338 let isRestrictNoSlot1Store = 1;
11339 let mayStore = 1;
11340 let isExtendable = 1;
11341 let opExtendable = 1;
11342 let isExtentSigned = 0;
11343 let opExtentBits = 8;
11344 let opExtentAlign = 2;
11345 }
11346 def L4_and_memopw_zomap : HInst<
11347 (outs),
11348 (ins IntRegs:$Rs32, IntRegs:$Rt32),
11349 "memw($Rs32) &= $Rt32",
11350 tc_7186d325, TypeMAPPING> {
11351 let isPseudo = 1;
11352 let isCodeGenOnly = 1;
11353 }
11354 def L4_iadd_memopb_io : HInst<
11355 (outs),
11356 (ins IntRegs:$Rs32, u32_0Imm:$Ii, u5_0Imm:$II),
11357 "memb($Rs32+#$Ii) += #$II",
11358 tc_096199d3, TypeV4LDST>, Enc_46c951 {
11359 let Inst{6-5} = 0b00;
11360 let Inst{13-13} = 0b0;
11361 let Inst{31-21} = 0b00111111000;
11362 let addrMode = BaseImmOffset;
11363 let accessSize = ByteAccess;
11364 let mayLoad = 1;
11365 let isRestrictNoSlot1Store = 1;
11366 let mayStore = 1;
11367 let isExtendable = 1;
11368 let opExtendable = 1;
11369 let isExtentSigned = 0;
11370 let opExtentBits = 6;
11371 let opExtentAlign = 0;
11372 }
11373 def L4_iadd_memopb_zomap : HInst<
11374 (outs),
11375 (ins IntRegs:$Rs32, u5_0Imm:$II),
11376 "memb($Rs32) += #$II",
11377 tc_096199d3, TypeMAPPING> {
11378 let isPseudo = 1;
11379 let isCodeGenOnly = 1;
11380 }
11381 def L4_iadd_memoph_io : HInst<
11382 (outs),
11383 (ins IntRegs:$Rs32, u31_1Imm:$Ii, u5_0Imm:$II),
11384 "memh($Rs32+#$Ii) += #$II",
11385 tc_096199d3, TypeV4LDST>, Enc_e66a97 {
11386 let Inst{6-5} = 0b00;
11387 let Inst{13-13} = 0b0;
11388 let Inst{31-21} = 0b00111111001;
11389 let addrMode = BaseImmOffset;
11390 let accessSize = HalfWordAccess;
11391 let mayLoad = 1;
11392 let isRestrictNoSlot1Store = 1;
11393 let mayStore = 1;
11394 let isExtendable = 1;
11395 let opExtendable = 1;
11396 let isExtentSigned = 0;
11397 let opExtentBits = 7;
11398 let opExtentAlign = 1;
11399 }
11400 def L4_iadd_memoph_zomap : HInst<
11401 (outs),
11402 (ins IntRegs:$Rs32, u5_0Imm:$II),
11403 "memh($Rs32) += #$II",
11404 tc_096199d3, TypeMAPPING> {
11405 let isPseudo = 1;
11406 let isCodeGenOnly = 1;
11407 }
11408 def L4_iadd_memopw_io : HInst<
11409 (outs),
11410 (ins IntRegs:$Rs32, u30_2Imm:$Ii, u5_0Imm:$II),
11411 "memw($Rs32+#$Ii) += #$II",
11412 tc_096199d3, TypeV4LDST>, Enc_84b2cd {
11413 let Inst{6-5} = 0b00;
11414 let Inst{13-13} = 0b0;
11415 let Inst{31-21} = 0b00111111010;
11416 let addrMode = BaseImmOffset;
11417 let accessSize = WordAccess;
11418 let mayLoad = 1;
11419 let isRestrictNoSlot1Store = 1;
11420 let mayStore = 1;
11421 let isExtendable = 1;
11422 let opExtendable = 1;
11423 let isExtentSigned = 0;
11424 let opExtentBits = 8;
11425 let opExtentAlign = 2;
11426 }
11427 def L4_iadd_memopw_zomap : HInst<
11428 (outs),
11429 (ins IntRegs:$Rs32, u5_0Imm:$II),
11430 "memw($Rs32) += #$II",
11431 tc_096199d3, TypeMAPPING> {
11432 let isPseudo = 1;
11433 let isCodeGenOnly = 1;
11434 }
11435 def L4_iand_memopb_io : HInst<
11436 (outs),
11437 (ins IntRegs:$Rs32, u32_0Imm:$Ii, u5_0Imm:$II),
11438 "memb($Rs32+#$Ii) = clrbit(#$II)",
11439 tc_096199d3, TypeV4LDST>, Enc_46c951 {
11440 let Inst{6-5} = 0b10;
11441 let Inst{13-13} = 0b0;
11442 let Inst{31-21} = 0b00111111000;
11443 let addrMode = BaseImmOffset;
11444 let accessSize = ByteAccess;
11445 let mayLoad = 1;
11446 let isRestrictNoSlot1Store = 1;
11447 let mayStore = 1;
11448 let isExtendable = 1;
11449 let opExtendable = 1;
11450 let isExtentSigned = 0;
11451 let opExtentBits = 6;
11452 let opExtentAlign = 0;
11453 }
11454 def L4_iand_memopb_zomap : HInst<
11455 (outs),
11456 (ins IntRegs:$Rs32, u5_0Imm:$II),
11457 "memb($Rs32) = clrbit(#$II)",
11458 tc_096199d3, TypeMAPPING> {
11459 let isPseudo = 1;
11460 let isCodeGenOnly = 1;
11461 }
11462 def L4_iand_memoph_io : HInst<
11463 (outs),
11464 (ins IntRegs:$Rs32, u31_1Imm:$Ii, u5_0Imm:$II),
11465 "memh($Rs32+#$Ii) = clrbit(#$II)",
11466 tc_096199d3, TypeV4LDST>, Enc_e66a97 {
11467 let Inst{6-5} = 0b10;
11468 let Inst{13-13} = 0b0;
11469 let Inst{31-21} = 0b00111111001;
11470 let addrMode = BaseImmOffset;
11471 let accessSize = HalfWordAccess;
11472 let mayLoad = 1;
11473 let isRestrictNoSlot1Store = 1;
11474 let mayStore = 1;
11475 let isExtendable = 1;
11476 let opExtendable = 1;
11477 let isExtentSigned = 0;
11478 let opExtentBits = 7;
11479 let opExtentAlign = 1;
11480 }
11481 def L4_iand_memoph_zomap : HInst<
11482 (outs),
11483 (ins IntRegs:$Rs32, u5_0Imm:$II),
11484 "memh($Rs32) = clrbit(#$II)",
11485 tc_096199d3, TypeMAPPING> {
11486 let isPseudo = 1;
11487 let isCodeGenOnly = 1;
11488 }
11489 def L4_iand_memopw_io : HInst<
11490 (outs),
11491 (ins IntRegs:$Rs32, u30_2Imm:$Ii, u5_0Imm:$II),
11492 "memw($Rs32+#$Ii) = clrbit(#$II)",
11493 tc_096199d3, TypeV4LDST>, Enc_84b2cd {
11494 let Inst{6-5} = 0b10;
11495 let Inst{13-13} = 0b0;
11496 let Inst{31-21} = 0b00111111010;
11497 let addrMode = BaseImmOffset;
11498 let accessSize = WordAccess;
11499 let mayLoad = 1;
11500 let isRestrictNoSlot1Store = 1;
11501 let mayStore = 1;
11502 let isExtendable = 1;
11503 let opExtendable = 1;
11504 let isExtentSigned = 0;
11505 let opExtentBits = 8;
11506 let opExtentAlign = 2;
11507 }
11508 def L4_iand_memopw_zomap : HInst<
11509 (outs),
11510 (ins IntRegs:$Rs32, u5_0Imm:$II),
11511 "memw($Rs32) = clrbit(#$II)",
11512 tc_096199d3, TypeMAPPING> {
11513 let isPseudo = 1;
11514 let isCodeGenOnly = 1;
11515 }
11516 def L4_ior_memopb_io : HInst<
11517 (outs),
11518 (ins IntRegs:$Rs32, u32_0Imm:$Ii, u5_0Imm:$II),
11519 "memb($Rs32+#$Ii) = setbit(#$II)",
11520 tc_096199d3, TypeV4LDST>, Enc_46c951 {
11521 let Inst{6-5} = 0b11;
11522 let Inst{13-13} = 0b0;
11523 let Inst{31-21} = 0b00111111000;
11524 let addrMode = BaseImmOffset;
11525 let accessSize = ByteAccess;
11526 let mayLoad = 1;
11527 let isRestrictNoSlot1Store = 1;
11528 let mayStore = 1;
11529 let isExtendable = 1;
11530 let opExtendable = 1;
11531 let isExtentSigned = 0;
11532 let opExtentBits = 6;
11533 let opExtentAlign = 0;
11534 }
11535 def L4_ior_memopb_zomap : HInst<
11536 (outs),
11537 (ins IntRegs:$Rs32, u5_0Imm:$II),
11538 "memb($Rs32) = setbit(#$II)",
11539 tc_096199d3, TypeMAPPING> {
11540 let isPseudo = 1;
11541 let isCodeGenOnly = 1;
11542 }
11543 def L4_ior_memoph_io : HInst<
11544 (outs),
11545 (ins IntRegs:$Rs32, u31_1Imm:$Ii, u5_0Imm:$II),
11546 "memh($Rs32+#$Ii) = setbit(#$II)",
11547 tc_096199d3, TypeV4LDST>, Enc_e66a97 {
11548 let Inst{6-5} = 0b11;
11549 let Inst{13-13} = 0b0;
11550 let Inst{31-21} = 0b00111111001;
11551 let addrMode = BaseImmOffset;
11552 let accessSize = HalfWordAccess;
11553 let mayLoad = 1;
11554 let isRestrictNoSlot1Store = 1;
11555 let mayStore = 1;
11556 let isExtendable = 1;
11557 let opExtendable = 1;
11558 let isExtentSigned = 0;
11559 let opExtentBits = 7;
11560 let opExtentAlign = 1;
11561 }
11562 def L4_ior_memoph_zomap : HInst<
11563 (outs),
11564 (ins IntRegs:$Rs32, u5_0Imm:$II),
11565 "memh($Rs32) = setbit(#$II)",
11566 tc_096199d3, TypeMAPPING> {
11567 let isPseudo = 1;
11568 let isCodeGenOnly = 1;
11569 }
11570 def L4_ior_memopw_io : HInst<
11571 (outs),
11572 (ins IntRegs:$Rs32, u30_2Imm:$Ii, u5_0Imm:$II),
11573 "memw($Rs32+#$Ii) = setbit(#$II)",
11574 tc_096199d3, TypeV4LDST>, Enc_84b2cd {
11575 let Inst{6-5} = 0b11;
11576 let Inst{13-13} = 0b0;
11577 let Inst{31-21} = 0b00111111010;
11578 let addrMode = BaseImmOffset;
11579 let accessSize = WordAccess;
11580 let mayLoad = 1;
11581 let isRestrictNoSlot1Store = 1;
11582 let mayStore = 1;
11583 let isExtendable = 1;
11584 let opExtendable = 1;
11585 let isExtentSigned = 0;
11586 let opExtentBits = 8;
11587 let opExtentAlign = 2;
11588 }
11589 def L4_ior_memopw_zomap : HInst<
11590 (outs),
11591 (ins IntRegs:$Rs32, u5_0Imm:$II),
11592 "memw($Rs32) = setbit(#$II)",
11593 tc_096199d3, TypeMAPPING> {
11594 let isPseudo = 1;
11595 let isCodeGenOnly = 1;
11596 }
11597 def L4_isub_memopb_io : HInst<
11598 (outs),
11599 (ins IntRegs:$Rs32, u32_0Imm:$Ii, u5_0Imm:$II),
11600 "memb($Rs32+#$Ii) -= #$II",
11601 tc_096199d3, TypeV4LDST>, Enc_46c951 {
11602 let Inst{6-5} = 0b01;
11603 let Inst{13-13} = 0b0;
11604 let Inst{31-21} = 0b00111111000;
11605 let addrMode = BaseImmOffset;
11606 let accessSize = ByteAccess;
11607 let mayLoad = 1;
11608 let isRestrictNoSlot1Store = 1;
11609 let mayStore = 1;
11610 let isExtendable = 1;
11611 let opExtendable = 1;
11612 let isExtentSigned = 0;
11613 let opExtentBits = 6;
11614 let opExtentAlign = 0;
11615 }
11616 def L4_isub_memopb_zomap : HInst<
11617 (outs),
11618 (ins IntRegs:$Rs32, u5_0Imm:$II),
11619 "memb($Rs32) -= #$II",
11620 tc_096199d3, TypeMAPPING> {
11621 let isPseudo = 1;
11622 let isCodeGenOnly = 1;
11623 }
11624 def L4_isub_memoph_io : HInst<
11625 (outs),
11626 (ins IntRegs:$Rs32, u31_1Imm:$Ii, u5_0Imm:$II),
11627 "memh($Rs32+#$Ii) -= #$II",
11628 tc_096199d3, TypeV4LDST>, Enc_e66a97 {
11629 let Inst{6-5} = 0b01;
11630 let Inst{13-13} = 0b0;
11631 let Inst{31-21} = 0b00111111001;
11632 let addrMode = BaseImmOffset;
11633 let accessSize = HalfWordAccess;
11634 let mayLoad = 1;
11635 let isRestrictNoSlot1Store = 1;
11636 let mayStore = 1;
11637 let isExtendable = 1;
11638 let opExtendable = 1;
11639 let isExtentSigned = 0;
11640 let opExtentBits = 7;
11641 let opExtentAlign = 1;
11642 }
11643 def L4_isub_memoph_zomap : HInst<
11644 (outs),
11645 (ins IntRegs:$Rs32, u5_0Imm:$II),
11646 "memh($Rs32) -= #$II",
11647 tc_096199d3, TypeMAPPING> {
11648 let isPseudo = 1;
11649 let isCodeGenOnly = 1;
11650 }
11651 def L4_isub_memopw_io : HInst<
11652 (outs),
11653 (ins IntRegs:$Rs32, u30_2Imm:$Ii, u5_0Imm:$II),
11654 "memw($Rs32+#$Ii) -= #$II",
11655 tc_096199d3, TypeV4LDST>, Enc_84b2cd {
11656 let Inst{6-5} = 0b01;
11657 let Inst{13-13} = 0b0;
11658 let Inst{31-21} = 0b00111111010;
11659 let addrMode = BaseImmOffset;
11660 let accessSize = WordAccess;
11661 let mayLoad = 1;
11662 let isRestrictNoSlot1Store = 1;
11663 let mayStore = 1;
11664 let isExtendable = 1;
11665 let opExtendable = 1;
11666 let isExtentSigned = 0;
11667 let opExtentBits = 8;
11668 let opExtentAlign = 2;
11669 }
11670 def L4_isub_memopw_zomap : HInst<
11671 (outs),
11672 (ins IntRegs:$Rs32, u5_0Imm:$II),
11673 "memw($Rs32) -= #$II",
11674 tc_096199d3, TypeMAPPING> {
11675 let isPseudo = 1;
11676 let isCodeGenOnly = 1;
11677 }
11678 def L4_loadalignb_ap : HInst<
11679 (outs DoubleRegs:$Ryy32, IntRegs:$Re32),
11680 (ins DoubleRegs:$Ryy32in, u32_0Imm:$II),
11681 "$Ryy32 = memb_fifo($Re32=#$II)",
11682 tc_7a91e76a, TypeLD>, Enc_f394d3 {
11683 let Inst{7-7} = 0b0;
11684 let Inst{13-12} = 0b01;
11685 let Inst{31-21} = 0b10011010100;
11686 let addrMode = AbsoluteSet;
11687 let accessSize = ByteAccess;
11688 let mayLoad = 1;
11689 let isExtended = 1;
11690 let DecoderNamespace = "MustExtend";
11691 let isExtendable = 1;
11692 let opExtendable = 3;
11693 let isExtentSigned = 0;
11694 let opExtentBits = 6;
11695 let opExtentAlign = 0;
11696 let Constraints = "$Ryy32 = $Ryy32in";
11697 }
11698 def L4_loadalignb_ur : HInst<
11699 (outs DoubleRegs:$Ryy32),
11700 (ins DoubleRegs:$Ryy32in, IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
11701 "$Ryy32 = memb_fifo($Rt32<<#$Ii+#$II)",
11702 tc_a5d4aeec, TypeLD>, Enc_04c959 {
11703 let Inst{12-12} = 0b1;
11704 let Inst{31-21} = 0b10011100100;
11705 let addrMode = BaseLongOffset;
11706 let accessSize = ByteAccess;
11707 let mayLoad = 1;
11708 let isExtended = 1;
11709 let InputType = "imm";
11710 let DecoderNamespace = "MustExtend";
11711 let isExtendable = 1;
11712 let opExtendable = 4;
11713 let isExtentSigned = 0;
11714 let opExtentBits = 6;
11715 let opExtentAlign = 0;
11716 let Constraints = "$Ryy32 = $Ryy32in";
11717 }
11718 def L4_loadalignh_ap : HInst<
11719 (outs DoubleRegs:$Ryy32, IntRegs:$Re32),
11720 (ins DoubleRegs:$Ryy32in, u32_0Imm:$II),
11721 "$Ryy32 = memh_fifo($Re32=#$II)",
11722 tc_7a91e76a, TypeLD>, Enc_f394d3 {
11723 let Inst{7-7} = 0b0;
11724 let Inst{13-12} = 0b01;
11725 let Inst{31-21} = 0b10011010010;
11726 let addrMode = AbsoluteSet;
11727 let accessSize = HalfWordAccess;
11728 let mayLoad = 1;
11729 let isExtended = 1;
11730 let DecoderNamespace = "MustExtend";
11731 let isExtendable = 1;
11732 let opExtendable = 3;
11733 let isExtentSigned = 0;
11734 let opExtentBits = 6;
11735 let opExtentAlign = 0;
11736 let Constraints = "$Ryy32 = $Ryy32in";
11737 }
11738 def L4_loadalignh_ur : HInst<
11739 (outs DoubleRegs:$Ryy32),
11740 (ins DoubleRegs:$Ryy32in, IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
11741 "$Ryy32 = memh_fifo($Rt32<<#$Ii+#$II)",
11742 tc_a5d4aeec, TypeLD>, Enc_04c959 {
11743 let Inst{12-12} = 0b1;
11744 let Inst{31-21} = 0b10011100010;
11745 let addrMode = BaseLongOffset;
11746 let accessSize = HalfWordAccess;
11747 let mayLoad = 1;
11748 let isExtended = 1;
11749 let InputType = "imm";
11750 let DecoderNamespace = "MustExtend";
11751 let isExtendable = 1;
11752 let opExtendable = 4;
11753 let isExtentSigned = 0;
11754 let opExtentBits = 6;
11755 let opExtentAlign = 0;
11756 let Constraints = "$Ryy32 = $Ryy32in";
11757 }
11758 def L4_loadbsw2_ap : HInst<
11759 (outs IntRegs:$Rd32, IntRegs:$Re32),
11760 (ins u32_0Imm:$II),
11761 "$Rd32 = membh($Re32=#$II)",
11762 tc_3b5b7ef9, TypeLD>, Enc_323f2d {
11763 let Inst{7-7} = 0b0;
11764 let Inst{13-12} = 0b01;
11765 let Inst{31-21} = 0b10011010001;
11766 let hasNewValue = 1;
11767 let opNewValue = 0;
11768 let addrMode = AbsoluteSet;
11769 let accessSize = HalfWordAccess;
11770 let mayLoad = 1;
11771 let isExtended = 1;
11772 let DecoderNamespace = "MustExtend";
11773 let isExtendable = 1;
11774 let opExtendable = 2;
11775 let isExtentSigned = 0;
11776 let opExtentBits = 6;
11777 let opExtentAlign = 0;
11778 }
11779 def L4_loadbsw2_ur : HInst<
11780 (outs IntRegs:$Rd32),
11781 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
11782 "$Rd32 = membh($Rt32<<#$Ii+#$II)",
11783 tc_bab0eed9, TypeLD>, Enc_4f677b {
11784 let Inst{12-12} = 0b1;
11785 let Inst{31-21} = 0b10011100001;
11786 let hasNewValue = 1;
11787 let opNewValue = 0;
11788 let addrMode = BaseLongOffset;
11789 let accessSize = HalfWordAccess;
11790 let mayLoad = 1;
11791 let isExtended = 1;
11792 let InputType = "imm";
11793 let DecoderNamespace = "MustExtend";
11794 let isExtendable = 1;
11795 let opExtendable = 3;
11796 let isExtentSigned = 0;
11797 let opExtentBits = 6;
11798 let opExtentAlign = 0;
11799 }
11800 def L4_loadbsw4_ap : HInst<
11801 (outs DoubleRegs:$Rdd32, IntRegs:$Re32),
11802 (ins u32_0Imm:$II),
11803 "$Rdd32 = membh($Re32=#$II)",
11804 tc_3b5b7ef9, TypeLD>, Enc_7fa7f6 {
11805 let Inst{7-7} = 0b0;
11806 let Inst{13-12} = 0b01;
11807 let Inst{31-21} = 0b10011010111;
11808 let addrMode = AbsoluteSet;
11809 let accessSize = WordAccess;
11810 let mayLoad = 1;
11811 let isExtended = 1;
11812 let DecoderNamespace = "MustExtend";
11813 let isExtendable = 1;
11814 let opExtendable = 2;
11815 let isExtentSigned = 0;
11816 let opExtentBits = 6;
11817 let opExtentAlign = 0;
11818 }
11819 def L4_loadbsw4_ur : HInst<
11820 (outs DoubleRegs:$Rdd32),
11821 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
11822 "$Rdd32 = membh($Rt32<<#$Ii+#$II)",
11823 tc_bab0eed9, TypeLD>, Enc_6185fe {
11824 let Inst{12-12} = 0b1;
11825 let Inst{31-21} = 0b10011100111;
11826 let addrMode = BaseLongOffset;
11827 let accessSize = WordAccess;
11828 let mayLoad = 1;
11829 let isExtended = 1;
11830 let InputType = "imm";
11831 let DecoderNamespace = "MustExtend";
11832 let isExtendable = 1;
11833 let opExtendable = 3;
11834 let isExtentSigned = 0;
11835 let opExtentBits = 6;
11836 let opExtentAlign = 0;
11837 }
11838 def L4_loadbzw2_ap : HInst<
11839 (outs IntRegs:$Rd32, IntRegs:$Re32),
11840 (ins u32_0Imm:$II),
11841 "$Rd32 = memubh($Re32=#$II)",
11842 tc_3b5b7ef9, TypeLD>, Enc_323f2d {
11843 let Inst{7-7} = 0b0;
11844 let Inst{13-12} = 0b01;
11845 let Inst{31-21} = 0b10011010011;
11846 let hasNewValue = 1;
11847 let opNewValue = 0;
11848 let addrMode = AbsoluteSet;
11849 let accessSize = HalfWordAccess;
11850 let mayLoad = 1;
11851 let isExtended = 1;
11852 let DecoderNamespace = "MustExtend";
11853 let isExtendable = 1;
11854 let opExtendable = 2;
11855 let isExtentSigned = 0;
11856 let opExtentBits = 6;
11857 let opExtentAlign = 0;
11858 }
11859 def L4_loadbzw2_ur : HInst<
11860 (outs IntRegs:$Rd32),
11861 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
11862 "$Rd32 = memubh($Rt32<<#$Ii+#$II)",
11863 tc_bab0eed9, TypeLD>, Enc_4f677b {
11864 let Inst{12-12} = 0b1;
11865 let Inst{31-21} = 0b10011100011;
11866 let hasNewValue = 1;
11867 let opNewValue = 0;
11868 let addrMode = BaseLongOffset;
11869 let accessSize = HalfWordAccess;
11870 let mayLoad = 1;
11871 let isExtended = 1;
11872 let InputType = "imm";
11873 let DecoderNamespace = "MustExtend";
11874 let isExtendable = 1;
11875 let opExtendable = 3;
11876 let isExtentSigned = 0;
11877 let opExtentBits = 6;
11878 let opExtentAlign = 0;
11879 }
11880 def L4_loadbzw4_ap : HInst<
11881 (outs DoubleRegs:$Rdd32, IntRegs:$Re32),
11882 (ins u32_0Imm:$II),
11883 "$Rdd32 = memubh($Re32=#$II)",
11884 tc_3b5b7ef9, TypeLD>, Enc_7fa7f6 {
11885 let Inst{7-7} = 0b0;
11886 let Inst{13-12} = 0b01;
11887 let Inst{31-21} = 0b10011010101;
11888 let addrMode = AbsoluteSet;
11889 let accessSize = WordAccess;
11890 let mayLoad = 1;
11891 let isExtended = 1;
11892 let DecoderNamespace = "MustExtend";
11893 let isExtendable = 1;
11894 let opExtendable = 2;
11895 let isExtentSigned = 0;
11896 let opExtentBits = 6;
11897 let opExtentAlign = 0;
11898 }
11899 def L4_loadbzw4_ur : HInst<
11900 (outs DoubleRegs:$Rdd32),
11901 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
11902 "$Rdd32 = memubh($Rt32<<#$Ii+#$II)",
11903 tc_bab0eed9, TypeLD>, Enc_6185fe {
11904 let Inst{12-12} = 0b1;
11905 let Inst{31-21} = 0b10011100101;
11906 let addrMode = BaseLongOffset;
11907 let accessSize = WordAccess;
11908 let mayLoad = 1;
11909 let isExtended = 1;
11910 let InputType = "imm";
11911 let DecoderNamespace = "MustExtend";
11912 let isExtendable = 1;
11913 let opExtendable = 3;
11914 let isExtentSigned = 0;
11915 let opExtentBits = 6;
11916 let opExtentAlign = 0;
11917 }
11918 def L4_loadd_locked : HInst<
11919 (outs DoubleRegs:$Rdd32),
11920 (ins IntRegs:$Rs32),
11921 "$Rdd32 = memd_locked($Rs32)",
11922 tc_b43e7930, TypeLD>, Enc_3a3d62 {
11923 let Inst{13-5} = 0b010000000;
11924 let Inst{31-21} = 0b10010010000;
11925 let accessSize = DoubleWordAccess;
11926 let mayLoad = 1;
11927 let isSoloAX = 1;
11928 }
11929 def L4_loadrb_ap : HInst<
11930 (outs IntRegs:$Rd32, IntRegs:$Re32),
11931 (ins u32_0Imm:$II),
11932 "$Rd32 = memb($Re32=#$II)",
11933 tc_3b5b7ef9, TypeLD>, Enc_323f2d {
11934 let Inst{7-7} = 0b0;
11935 let Inst{13-12} = 0b01;
11936 let Inst{31-21} = 0b10011011000;
11937 let hasNewValue = 1;
11938 let opNewValue = 0;
11939 let addrMode = AbsoluteSet;
11940 let accessSize = ByteAccess;
11941 let mayLoad = 1;
11942 let isExtended = 1;
11943 let DecoderNamespace = "MustExtend";
11944 let isExtendable = 1;
11945 let opExtendable = 2;
11946 let isExtentSigned = 0;
11947 let opExtentBits = 6;
11948 let opExtentAlign = 0;
11949 }
11950 def L4_loadrb_rr : HInst<
11951 (outs IntRegs:$Rd32),
11952 (ins IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
11953 "$Rd32 = memb($Rs32+$Rt32<<#$Ii)",
11954 tc_bf061958, TypeLD>, Enc_da664b, AddrModeRel, ImmRegShl {
11955 let Inst{6-5} = 0b00;
11956 let Inst{31-21} = 0b00111010000;
11957 let hasNewValue = 1;
11958 let opNewValue = 0;
11959 let addrMode = BaseRegOffset;
11960 let accessSize = ByteAccess;
11961 let mayLoad = 1;
11962 let CextOpcode = "L2_loadrb";
11963 let InputType = "reg";
11964 let BaseOpcode = "L4_loadrb_rr";
11965 let isPredicable = 1;
11966 }
11967 def L4_loadrb_ur : HInst<
11968 (outs IntRegs:$Rd32),
11969 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
11970 "$Rd32 = memb($Rt32<<#$Ii+#$II)",
11971 tc_bab0eed9, TypeLD>, Enc_4f677b, AddrModeRel, ImmRegShl {
11972 let Inst{12-12} = 0b1;
11973 let Inst{31-21} = 0b10011101000;
11974 let hasNewValue = 1;
11975 let opNewValue = 0;
11976 let addrMode = BaseLongOffset;
11977 let accessSize = ByteAccess;
11978 let mayLoad = 1;
11979 let isExtended = 1;
11980 let CextOpcode = "L2_loadrb";
11981 let InputType = "imm";
11982 let DecoderNamespace = "MustExtend";
11983 let isExtendable = 1;
11984 let opExtendable = 3;
11985 let isExtentSigned = 0;
11986 let opExtentBits = 6;
11987 let opExtentAlign = 0;
11988 }
11989 def L4_loadrd_ap : HInst<
11990 (outs DoubleRegs:$Rdd32, IntRegs:$Re32),
11991 (ins u32_0Imm:$II),
11992 "$Rdd32 = memd($Re32=#$II)",
11993 tc_3b5b7ef9, TypeLD>, Enc_7fa7f6 {
11994 let Inst{7-7} = 0b0;
11995 let Inst{13-12} = 0b01;
11996 let Inst{31-21} = 0b10011011110;
11997 let addrMode = AbsoluteSet;
11998 let accessSize = DoubleWordAccess;
11999 let mayLoad = 1;
12000 let isExtended = 1;
12001 let DecoderNamespace = "MustExtend";
12002 let isExtendable = 1;
12003 let opExtendable = 2;
12004 let isExtentSigned = 0;
12005 let opExtentBits = 6;
12006 let opExtentAlign = 0;
12007 }
12008 def L4_loadrd_rr : HInst<
12009 (outs DoubleRegs:$Rdd32),
12010 (ins IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12011 "$Rdd32 = memd($Rs32+$Rt32<<#$Ii)",
12012 tc_bf061958, TypeLD>, Enc_84bff1, AddrModeRel, ImmRegShl {
12013 let Inst{6-5} = 0b00;
12014 let Inst{31-21} = 0b00111010110;
12015 let addrMode = BaseRegOffset;
12016 let accessSize = DoubleWordAccess;
12017 let mayLoad = 1;
12018 let CextOpcode = "L2_loadrd";
12019 let InputType = "reg";
12020 let BaseOpcode = "L4_loadrd_rr";
12021 let isPredicable = 1;
12022 }
12023 def L4_loadrd_ur : HInst<
12024 (outs DoubleRegs:$Rdd32),
12025 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
12026 "$Rdd32 = memd($Rt32<<#$Ii+#$II)",
12027 tc_bab0eed9, TypeLD>, Enc_6185fe, AddrModeRel, ImmRegShl {
12028 let Inst{12-12} = 0b1;
12029 let Inst{31-21} = 0b10011101110;
12030 let addrMode = BaseLongOffset;
12031 let accessSize = DoubleWordAccess;
12032 let mayLoad = 1;
12033 let isExtended = 1;
12034 let CextOpcode = "L2_loadrd";
12035 let InputType = "imm";
12036 let DecoderNamespace = "MustExtend";
12037 let isExtendable = 1;
12038 let opExtendable = 3;
12039 let isExtentSigned = 0;
12040 let opExtentBits = 6;
12041 let opExtentAlign = 0;
12042 }
12043 def L4_loadrh_ap : HInst<
12044 (outs IntRegs:$Rd32, IntRegs:$Re32),
12045 (ins u32_0Imm:$II),
12046 "$Rd32 = memh($Re32=#$II)",
12047 tc_3b5b7ef9, TypeLD>, Enc_323f2d {
12048 let Inst{7-7} = 0b0;
12049 let Inst{13-12} = 0b01;
12050 let Inst{31-21} = 0b10011011010;
12051 let hasNewValue = 1;
12052 let opNewValue = 0;
12053 let addrMode = AbsoluteSet;
12054 let accessSize = HalfWordAccess;
12055 let mayLoad = 1;
12056 let isExtended = 1;
12057 let DecoderNamespace = "MustExtend";
12058 let isExtendable = 1;
12059 let opExtendable = 2;
12060 let isExtentSigned = 0;
12061 let opExtentBits = 6;
12062 let opExtentAlign = 0;
12063 }
12064 def L4_loadrh_rr : HInst<
12065 (outs IntRegs:$Rd32),
12066 (ins IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12067 "$Rd32 = memh($Rs32+$Rt32<<#$Ii)",
12068 tc_bf061958, TypeLD>, Enc_da664b, AddrModeRel, ImmRegShl {
12069 let Inst{6-5} = 0b00;
12070 let Inst{31-21} = 0b00111010010;
12071 let hasNewValue = 1;
12072 let opNewValue = 0;
12073 let addrMode = BaseRegOffset;
12074 let accessSize = HalfWordAccess;
12075 let mayLoad = 1;
12076 let CextOpcode = "L2_loadrh";
12077 let InputType = "reg";
12078 let BaseOpcode = "L4_loadrh_rr";
12079 let isPredicable = 1;
12080 }
12081 def L4_loadrh_ur : HInst<
12082 (outs IntRegs:$Rd32),
12083 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
12084 "$Rd32 = memh($Rt32<<#$Ii+#$II)",
12085 tc_bab0eed9, TypeLD>, Enc_4f677b, AddrModeRel, ImmRegShl {
12086 let Inst{12-12} = 0b1;
12087 let Inst{31-21} = 0b10011101010;
12088 let hasNewValue = 1;
12089 let opNewValue = 0;
12090 let addrMode = BaseLongOffset;
12091 let accessSize = HalfWordAccess;
12092 let mayLoad = 1;
12093 let isExtended = 1;
12094 let CextOpcode = "L2_loadrh";
12095 let InputType = "imm";
12096 let DecoderNamespace = "MustExtend";
12097 let isExtendable = 1;
12098 let opExtendable = 3;
12099 let isExtentSigned = 0;
12100 let opExtentBits = 6;
12101 let opExtentAlign = 0;
12102 }
12103 def L4_loadri_ap : HInst<
12104 (outs IntRegs:$Rd32, IntRegs:$Re32),
12105 (ins u32_0Imm:$II),
12106 "$Rd32 = memw($Re32=#$II)",
12107 tc_3b5b7ef9, TypeLD>, Enc_323f2d {
12108 let Inst{7-7} = 0b0;
12109 let Inst{13-12} = 0b01;
12110 let Inst{31-21} = 0b10011011100;
12111 let hasNewValue = 1;
12112 let opNewValue = 0;
12113 let addrMode = AbsoluteSet;
12114 let accessSize = WordAccess;
12115 let mayLoad = 1;
12116 let isExtended = 1;
12117 let DecoderNamespace = "MustExtend";
12118 let isExtendable = 1;
12119 let opExtendable = 2;
12120 let isExtentSigned = 0;
12121 let opExtentBits = 6;
12122 let opExtentAlign = 0;
12123 }
12124 def L4_loadri_rr : HInst<
12125 (outs IntRegs:$Rd32),
12126 (ins IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12127 "$Rd32 = memw($Rs32+$Rt32<<#$Ii)",
12128 tc_bf061958, TypeLD>, Enc_da664b, AddrModeRel, ImmRegShl {
12129 let Inst{6-5} = 0b00;
12130 let Inst{31-21} = 0b00111010100;
12131 let hasNewValue = 1;
12132 let opNewValue = 0;
12133 let addrMode = BaseRegOffset;
12134 let accessSize = WordAccess;
12135 let mayLoad = 1;
12136 let CextOpcode = "L2_loadri";
12137 let InputType = "reg";
12138 let BaseOpcode = "L4_loadri_rr";
12139 let isPredicable = 1;
12140 }
12141 def L4_loadri_ur : HInst<
12142 (outs IntRegs:$Rd32),
12143 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
12144 "$Rd32 = memw($Rt32<<#$Ii+#$II)",
12145 tc_bab0eed9, TypeLD>, Enc_4f677b, AddrModeRel, ImmRegShl {
12146 let Inst{12-12} = 0b1;
12147 let Inst{31-21} = 0b10011101100;
12148 let hasNewValue = 1;
12149 let opNewValue = 0;
12150 let addrMode = BaseLongOffset;
12151 let accessSize = WordAccess;
12152 let mayLoad = 1;
12153 let isExtended = 1;
12154 let CextOpcode = "L2_loadri";
12155 let InputType = "imm";
12156 let DecoderNamespace = "MustExtend";
12157 let isExtendable = 1;
12158 let opExtendable = 3;
12159 let isExtentSigned = 0;
12160 let opExtentBits = 6;
12161 let opExtentAlign = 0;
12162 }
12163 def L4_loadrub_ap : HInst<
12164 (outs IntRegs:$Rd32, IntRegs:$Re32),
12165 (ins u32_0Imm:$II),
12166 "$Rd32 = memub($Re32=#$II)",
12167 tc_3b5b7ef9, TypeLD>, Enc_323f2d {
12168 let Inst{7-7} = 0b0;
12169 let Inst{13-12} = 0b01;
12170 let Inst{31-21} = 0b10011011001;
12171 let hasNewValue = 1;
12172 let opNewValue = 0;
12173 let addrMode = AbsoluteSet;
12174 let accessSize = ByteAccess;
12175 let mayLoad = 1;
12176 let isExtended = 1;
12177 let DecoderNamespace = "MustExtend";
12178 let isExtendable = 1;
12179 let opExtendable = 2;
12180 let isExtentSigned = 0;
12181 let opExtentBits = 6;
12182 let opExtentAlign = 0;
12183 }
12184 def L4_loadrub_rr : HInst<
12185 (outs IntRegs:$Rd32),
12186 (ins IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12187 "$Rd32 = memub($Rs32+$Rt32<<#$Ii)",
12188 tc_bf061958, TypeLD>, Enc_da664b, AddrModeRel, ImmRegShl {
12189 let Inst{6-5} = 0b00;
12190 let Inst{31-21} = 0b00111010001;
12191 let hasNewValue = 1;
12192 let opNewValue = 0;
12193 let addrMode = BaseRegOffset;
12194 let accessSize = ByteAccess;
12195 let mayLoad = 1;
12196 let CextOpcode = "L2_loadrub";
12197 let InputType = "reg";
12198 let BaseOpcode = "L4_loadrub_rr";
12199 let isPredicable = 1;
12200 }
12201 def L4_loadrub_ur : HInst<
12202 (outs IntRegs:$Rd32),
12203 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
12204 "$Rd32 = memub($Rt32<<#$Ii+#$II)",
12205 tc_bab0eed9, TypeLD>, Enc_4f677b, AddrModeRel, ImmRegShl {
12206 let Inst{12-12} = 0b1;
12207 let Inst{31-21} = 0b10011101001;
12208 let hasNewValue = 1;
12209 let opNewValue = 0;
12210 let addrMode = BaseLongOffset;
12211 let accessSize = ByteAccess;
12212 let mayLoad = 1;
12213 let isExtended = 1;
12214 let CextOpcode = "L2_loadrub";
12215 let InputType = "imm";
12216 let DecoderNamespace = "MustExtend";
12217 let isExtendable = 1;
12218 let opExtendable = 3;
12219 let isExtentSigned = 0;
12220 let opExtentBits = 6;
12221 let opExtentAlign = 0;
12222 }
12223 def L4_loadruh_ap : HInst<
12224 (outs IntRegs:$Rd32, IntRegs:$Re32),
12225 (ins u32_0Imm:$II),
12226 "$Rd32 = memuh($Re32=#$II)",
12227 tc_3b5b7ef9, TypeLD>, Enc_323f2d {
12228 let Inst{7-7} = 0b0;
12229 let Inst{13-12} = 0b01;
12230 let Inst{31-21} = 0b10011011011;
12231 let hasNewValue = 1;
12232 let opNewValue = 0;
12233 let addrMode = AbsoluteSet;
12234 let accessSize = HalfWordAccess;
12235 let mayLoad = 1;
12236 let isExtended = 1;
12237 let DecoderNamespace = "MustExtend";
12238 let isExtendable = 1;
12239 let opExtendable = 2;
12240 let isExtentSigned = 0;
12241 let opExtentBits = 6;
12242 let opExtentAlign = 0;
12243 }
12244 def L4_loadruh_rr : HInst<
12245 (outs IntRegs:$Rd32),
12246 (ins IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12247 "$Rd32 = memuh($Rs32+$Rt32<<#$Ii)",
12248 tc_bf061958, TypeLD>, Enc_da664b, AddrModeRel, ImmRegShl {
12249 let Inst{6-5} = 0b00;
12250 let Inst{31-21} = 0b00111010011;
12251 let hasNewValue = 1;
12252 let opNewValue = 0;
12253 let addrMode = BaseRegOffset;
12254 let accessSize = HalfWordAccess;
12255 let mayLoad = 1;
12256 let CextOpcode = "L2_loadruh";
12257 let InputType = "reg";
12258 let BaseOpcode = "L4_loadruh_rr";
12259 let isPredicable = 1;
12260 }
12261 def L4_loadruh_ur : HInst<
12262 (outs IntRegs:$Rd32),
12263 (ins IntRegs:$Rt32, u2_0Imm:$Ii, u32_0Imm:$II),
12264 "$Rd32 = memuh($Rt32<<#$Ii+#$II)",
12265 tc_bab0eed9, TypeLD>, Enc_4f677b, AddrModeRel, ImmRegShl {
12266 let Inst{12-12} = 0b1;
12267 let Inst{31-21} = 0b10011101011;
12268 let hasNewValue = 1;
12269 let opNewValue = 0;
12270 let addrMode = BaseLongOffset;
12271 let accessSize = HalfWordAccess;
12272 let mayLoad = 1;
12273 let isExtended = 1;
12274 let CextOpcode = "L2_loadruh";
12275 let InputType = "imm";
12276 let DecoderNamespace = "MustExtend";
12277 let isExtendable = 1;
12278 let opExtendable = 3;
12279 let isExtentSigned = 0;
12280 let opExtentBits = 6;
12281 let opExtentAlign = 0;
12282 }
12283 def L4_or_memopb_io : HInst<
12284 (outs),
12285 (ins IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
12286 "memb($Rs32+#$Ii) |= $Rt32",
12287 tc_7186d325, TypeV4LDST>, Enc_d44e31 {
12288 let Inst{6-5} = 0b11;
12289 let Inst{13-13} = 0b0;
12290 let Inst{31-21} = 0b00111110000;
12291 let addrMode = BaseImmOffset;
12292 let accessSize = ByteAccess;
12293 let mayLoad = 1;
12294 let isRestrictNoSlot1Store = 1;
12295 let mayStore = 1;
12296 let isExtendable = 1;
12297 let opExtendable = 1;
12298 let isExtentSigned = 0;
12299 let opExtentBits = 6;
12300 let opExtentAlign = 0;
12301 }
12302 def L4_or_memopb_zomap : HInst<
12303 (outs),
12304 (ins IntRegs:$Rs32, IntRegs:$Rt32),
12305 "memb($Rs32) |= $Rt32",
12306 tc_7186d325, TypeMAPPING> {
12307 let isPseudo = 1;
12308 let isCodeGenOnly = 1;
12309 }
12310 def L4_or_memoph_io : HInst<
12311 (outs),
12312 (ins IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
12313 "memh($Rs32+#$Ii) |= $Rt32",
12314 tc_7186d325, TypeV4LDST>, Enc_163a3c {
12315 let Inst{6-5} = 0b11;
12316 let Inst{13-13} = 0b0;
12317 let Inst{31-21} = 0b00111110001;
12318 let addrMode = BaseImmOffset;
12319 let accessSize = HalfWordAccess;
12320 let mayLoad = 1;
12321 let isRestrictNoSlot1Store = 1;
12322 let mayStore = 1;
12323 let isExtendable = 1;
12324 let opExtendable = 1;
12325 let isExtentSigned = 0;
12326 let opExtentBits = 7;
12327 let opExtentAlign = 1;
12328 }
12329 def L4_or_memoph_zomap : HInst<
12330 (outs),
12331 (ins IntRegs:$Rs32, IntRegs:$Rt32),
12332 "memh($Rs32) |= $Rt32",
12333 tc_7186d325, TypeMAPPING> {
12334 let isPseudo = 1;
12335 let isCodeGenOnly = 1;
12336 }
12337 def L4_or_memopw_io : HInst<
12338 (outs),
12339 (ins IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Rt32),
12340 "memw($Rs32+#$Ii) |= $Rt32",
12341 tc_7186d325, TypeV4LDST>, Enc_226535 {
12342 let Inst{6-5} = 0b11;
12343 let Inst{13-13} = 0b0;
12344 let Inst{31-21} = 0b00111110010;
12345 let addrMode = BaseImmOffset;
12346 let accessSize = WordAccess;
12347 let mayLoad = 1;
12348 let isRestrictNoSlot1Store = 1;
12349 let mayStore = 1;
12350 let isExtendable = 1;
12351 let opExtendable = 1;
12352 let isExtentSigned = 0;
12353 let opExtentBits = 8;
12354 let opExtentAlign = 2;
12355 }
12356 def L4_or_memopw_zomap : HInst<
12357 (outs),
12358 (ins IntRegs:$Rs32, IntRegs:$Rt32),
12359 "memw($Rs32) |= $Rt32",
12360 tc_7186d325, TypeMAPPING> {
12361 let isPseudo = 1;
12362 let isCodeGenOnly = 1;
12363 }
12364 def L4_ploadrbf_abs : HInst<
12365 (outs IntRegs:$Rd32),
12366 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12367 "if (!$Pt4) $Rd32 = memb(#$Ii)",
12368 tc_7646c131, TypeLD>, Enc_2301d6, AddrModeRel {
12369 let Inst{7-5} = 0b100;
12370 let Inst{13-11} = 0b101;
12371 let Inst{31-21} = 0b10011111000;
12372 let isPredicated = 1;
12373 let isPredicatedFalse = 1;
12374 let hasNewValue = 1;
12375 let opNewValue = 0;
12376 let addrMode = Absolute;
12377 let accessSize = ByteAccess;
12378 let mayLoad = 1;
12379 let isExtended = 1;
12380 let CextOpcode = "L2_loadrb";
12381 let BaseOpcode = "L4_loadrb_abs";
12382 let DecoderNamespace = "MustExtend";
12383 let isExtendable = 1;
12384 let opExtendable = 2;
12385 let isExtentSigned = 0;
12386 let opExtentBits = 6;
12387 let opExtentAlign = 0;
12388 }
12389 def L4_ploadrbf_rr : HInst<
12390 (outs IntRegs:$Rd32),
12391 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12392 "if (!$Pv4) $Rd32 = memb($Rs32+$Rt32<<#$Ii)",
12393 tc_e4b3cb20, TypeLD>, Enc_2e1979, AddrModeRel {
12394 let Inst{31-21} = 0b00110001000;
12395 let isPredicated = 1;
12396 let isPredicatedFalse = 1;
12397 let hasNewValue = 1;
12398 let opNewValue = 0;
12399 let addrMode = BaseRegOffset;
12400 let accessSize = ByteAccess;
12401 let mayLoad = 1;
12402 let CextOpcode = "L2_loadrb";
12403 let InputType = "reg";
12404 let BaseOpcode = "L4_loadrb_rr";
12405 }
12406 def L4_ploadrbfnew_abs : HInst<
12407 (outs IntRegs:$Rd32),
12408 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12409 "if (!$Pt4.new) $Rd32 = memb(#$Ii)",
12410 tc_3b5b7ef9, TypeLD>, Enc_2301d6, AddrModeRel {
12411 let Inst{7-5} = 0b100;
12412 let Inst{13-11} = 0b111;
12413 let Inst{31-21} = 0b10011111000;
12414 let isPredicated = 1;
12415 let isPredicatedFalse = 1;
12416 let hasNewValue = 1;
12417 let opNewValue = 0;
12418 let addrMode = Absolute;
12419 let accessSize = ByteAccess;
12420 let isPredicatedNew = 1;
12421 let mayLoad = 1;
12422 let isExtended = 1;
12423 let CextOpcode = "L2_loadrb";
12424 let BaseOpcode = "L4_loadrb_abs";
12425 let DecoderNamespace = "MustExtend";
12426 let isExtendable = 1;
12427 let opExtendable = 2;
12428 let isExtentSigned = 0;
12429 let opExtentBits = 6;
12430 let opExtentAlign = 0;
12431 }
12432 def L4_ploadrbfnew_rr : HInst<
12433 (outs IntRegs:$Rd32),
12434 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12435 "if (!$Pv4.new) $Rd32 = memb($Rs32+$Rt32<<#$Ii)",
12436 tc_25a78932, TypeLD>, Enc_2e1979, AddrModeRel {
12437 let Inst{31-21} = 0b00110011000;
12438 let isPredicated = 1;
12439 let isPredicatedFalse = 1;
12440 let hasNewValue = 1;
12441 let opNewValue = 0;
12442 let addrMode = BaseRegOffset;
12443 let accessSize = ByteAccess;
12444 let isPredicatedNew = 1;
12445 let mayLoad = 1;
12446 let CextOpcode = "L2_loadrb";
12447 let InputType = "reg";
12448 let BaseOpcode = "L4_loadrb_rr";
12449 }
12450 def L4_ploadrbt_abs : HInst<
12451 (outs IntRegs:$Rd32),
12452 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12453 "if ($Pt4) $Rd32 = memb(#$Ii)",
12454 tc_7646c131, TypeLD>, Enc_2301d6, AddrModeRel {
12455 let Inst{7-5} = 0b100;
12456 let Inst{13-11} = 0b100;
12457 let Inst{31-21} = 0b10011111000;
12458 let isPredicated = 1;
12459 let hasNewValue = 1;
12460 let opNewValue = 0;
12461 let addrMode = Absolute;
12462 let accessSize = ByteAccess;
12463 let mayLoad = 1;
12464 let isExtended = 1;
12465 let CextOpcode = "L2_loadrb";
12466 let BaseOpcode = "L4_loadrb_abs";
12467 let DecoderNamespace = "MustExtend";
12468 let isExtendable = 1;
12469 let opExtendable = 2;
12470 let isExtentSigned = 0;
12471 let opExtentBits = 6;
12472 let opExtentAlign = 0;
12473 }
12474 def L4_ploadrbt_rr : HInst<
12475 (outs IntRegs:$Rd32),
12476 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12477 "if ($Pv4) $Rd32 = memb($Rs32+$Rt32<<#$Ii)",
12478 tc_e4b3cb20, TypeLD>, Enc_2e1979, AddrModeRel {
12479 let Inst{31-21} = 0b00110000000;
12480 let isPredicated = 1;
12481 let hasNewValue = 1;
12482 let opNewValue = 0;
12483 let addrMode = BaseRegOffset;
12484 let accessSize = ByteAccess;
12485 let mayLoad = 1;
12486 let CextOpcode = "L2_loadrb";
12487 let InputType = "reg";
12488 let BaseOpcode = "L4_loadrb_rr";
12489 }
12490 def L4_ploadrbtnew_abs : HInst<
12491 (outs IntRegs:$Rd32),
12492 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12493 "if ($Pt4.new) $Rd32 = memb(#$Ii)",
12494 tc_3b5b7ef9, TypeLD>, Enc_2301d6, AddrModeRel {
12495 let Inst{7-5} = 0b100;
12496 let Inst{13-11} = 0b110;
12497 let Inst{31-21} = 0b10011111000;
12498 let isPredicated = 1;
12499 let hasNewValue = 1;
12500 let opNewValue = 0;
12501 let addrMode = Absolute;
12502 let accessSize = ByteAccess;
12503 let isPredicatedNew = 1;
12504 let mayLoad = 1;
12505 let isExtended = 1;
12506 let CextOpcode = "L2_loadrb";
12507 let BaseOpcode = "L4_loadrb_abs";
12508 let DecoderNamespace = "MustExtend";
12509 let isExtendable = 1;
12510 let opExtendable = 2;
12511 let isExtentSigned = 0;
12512 let opExtentBits = 6;
12513 let opExtentAlign = 0;
12514 }
12515 def L4_ploadrbtnew_rr : HInst<
12516 (outs IntRegs:$Rd32),
12517 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12518 "if ($Pv4.new) $Rd32 = memb($Rs32+$Rt32<<#$Ii)",
12519 tc_25a78932, TypeLD>, Enc_2e1979, AddrModeRel {
12520 let Inst{31-21} = 0b00110010000;
12521 let isPredicated = 1;
12522 let hasNewValue = 1;
12523 let opNewValue = 0;
12524 let addrMode = BaseRegOffset;
12525 let accessSize = ByteAccess;
12526 let isPredicatedNew = 1;
12527 let mayLoad = 1;
12528 let CextOpcode = "L2_loadrb";
12529 let InputType = "reg";
12530 let BaseOpcode = "L4_loadrb_rr";
12531 }
12532 def L4_ploadrdf_abs : HInst<
12533 (outs DoubleRegs:$Rdd32),
12534 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12535 "if (!$Pt4) $Rdd32 = memd(#$Ii)",
12536 tc_7646c131, TypeLD>, Enc_2a7b91, AddrModeRel {
12537 let Inst{7-5} = 0b100;
12538 let Inst{13-11} = 0b101;
12539 let Inst{31-21} = 0b10011111110;
12540 let isPredicated = 1;
12541 let isPredicatedFalse = 1;
12542 let addrMode = Absolute;
12543 let accessSize = DoubleWordAccess;
12544 let mayLoad = 1;
12545 let isExtended = 1;
12546 let CextOpcode = "L2_loadrd";
12547 let BaseOpcode = "L4_loadrd_abs";
12548 let DecoderNamespace = "MustExtend";
12549 let isExtendable = 1;
12550 let opExtendable = 2;
12551 let isExtentSigned = 0;
12552 let opExtentBits = 6;
12553 let opExtentAlign = 0;
12554 }
12555 def L4_ploadrdf_rr : HInst<
12556 (outs DoubleRegs:$Rdd32),
12557 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12558 "if (!$Pv4) $Rdd32 = memd($Rs32+$Rt32<<#$Ii)",
12559 tc_e4b3cb20, TypeLD>, Enc_98c0b8, AddrModeRel {
12560 let Inst{31-21} = 0b00110001110;
12561 let isPredicated = 1;
12562 let isPredicatedFalse = 1;
12563 let addrMode = BaseRegOffset;
12564 let accessSize = DoubleWordAccess;
12565 let mayLoad = 1;
12566 let CextOpcode = "L2_loadrd";
12567 let InputType = "reg";
12568 let BaseOpcode = "L4_loadrd_rr";
12569 }
12570 def L4_ploadrdfnew_abs : HInst<
12571 (outs DoubleRegs:$Rdd32),
12572 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12573 "if (!$Pt4.new) $Rdd32 = memd(#$Ii)",
12574 tc_3b5b7ef9, TypeLD>, Enc_2a7b91, AddrModeRel {
12575 let Inst{7-5} = 0b100;
12576 let Inst{13-11} = 0b111;
12577 let Inst{31-21} = 0b10011111110;
12578 let isPredicated = 1;
12579 let isPredicatedFalse = 1;
12580 let addrMode = Absolute;
12581 let accessSize = DoubleWordAccess;
12582 let isPredicatedNew = 1;
12583 let mayLoad = 1;
12584 let isExtended = 1;
12585 let CextOpcode = "L2_loadrd";
12586 let BaseOpcode = "L4_loadrd_abs";
12587 let DecoderNamespace = "MustExtend";
12588 let isExtendable = 1;
12589 let opExtendable = 2;
12590 let isExtentSigned = 0;
12591 let opExtentBits = 6;
12592 let opExtentAlign = 0;
12593 }
12594 def L4_ploadrdfnew_rr : HInst<
12595 (outs DoubleRegs:$Rdd32),
12596 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12597 "if (!$Pv4.new) $Rdd32 = memd($Rs32+$Rt32<<#$Ii)",
12598 tc_25a78932, TypeLD>, Enc_98c0b8, AddrModeRel {
12599 let Inst{31-21} = 0b00110011110;
12600 let isPredicated = 1;
12601 let isPredicatedFalse = 1;
12602 let addrMode = BaseRegOffset;
12603 let accessSize = DoubleWordAccess;
12604 let isPredicatedNew = 1;
12605 let mayLoad = 1;
12606 let CextOpcode = "L2_loadrd";
12607 let InputType = "reg";
12608 let BaseOpcode = "L4_loadrd_rr";
12609 }
12610 def L4_ploadrdt_abs : HInst<
12611 (outs DoubleRegs:$Rdd32),
12612 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12613 "if ($Pt4) $Rdd32 = memd(#$Ii)",
12614 tc_7646c131, TypeLD>, Enc_2a7b91, AddrModeRel {
12615 let Inst{7-5} = 0b100;
12616 let Inst{13-11} = 0b100;
12617 let Inst{31-21} = 0b10011111110;
12618 let isPredicated = 1;
12619 let addrMode = Absolute;
12620 let accessSize = DoubleWordAccess;
12621 let mayLoad = 1;
12622 let isExtended = 1;
12623 let CextOpcode = "L2_loadrd";
12624 let BaseOpcode = "L4_loadrd_abs";
12625 let DecoderNamespace = "MustExtend";
12626 let isExtendable = 1;
12627 let opExtendable = 2;
12628 let isExtentSigned = 0;
12629 let opExtentBits = 6;
12630 let opExtentAlign = 0;
12631 }
12632 def L4_ploadrdt_rr : HInst<
12633 (outs DoubleRegs:$Rdd32),
12634 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12635 "if ($Pv4) $Rdd32 = memd($Rs32+$Rt32<<#$Ii)",
12636 tc_e4b3cb20, TypeLD>, Enc_98c0b8, AddrModeRel {
12637 let Inst{31-21} = 0b00110000110;
12638 let isPredicated = 1;
12639 let addrMode = BaseRegOffset;
12640 let accessSize = DoubleWordAccess;
12641 let mayLoad = 1;
12642 let CextOpcode = "L2_loadrd";
12643 let InputType = "reg";
12644 let BaseOpcode = "L4_loadrd_rr";
12645 }
12646 def L4_ploadrdtnew_abs : HInst<
12647 (outs DoubleRegs:$Rdd32),
12648 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12649 "if ($Pt4.new) $Rdd32 = memd(#$Ii)",
12650 tc_3b5b7ef9, TypeLD>, Enc_2a7b91, AddrModeRel {
12651 let Inst{7-5} = 0b100;
12652 let Inst{13-11} = 0b110;
12653 let Inst{31-21} = 0b10011111110;
12654 let isPredicated = 1;
12655 let addrMode = Absolute;
12656 let accessSize = DoubleWordAccess;
12657 let isPredicatedNew = 1;
12658 let mayLoad = 1;
12659 let isExtended = 1;
12660 let CextOpcode = "L2_loadrd";
12661 let BaseOpcode = "L4_loadrd_abs";
12662 let DecoderNamespace = "MustExtend";
12663 let isExtendable = 1;
12664 let opExtendable = 2;
12665 let isExtentSigned = 0;
12666 let opExtentBits = 6;
12667 let opExtentAlign = 0;
12668 }
12669 def L4_ploadrdtnew_rr : HInst<
12670 (outs DoubleRegs:$Rdd32),
12671 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12672 "if ($Pv4.new) $Rdd32 = memd($Rs32+$Rt32<<#$Ii)",
12673 tc_25a78932, TypeLD>, Enc_98c0b8, AddrModeRel {
12674 let Inst{31-21} = 0b00110010110;
12675 let isPredicated = 1;
12676 let addrMode = BaseRegOffset;
12677 let accessSize = DoubleWordAccess;
12678 let isPredicatedNew = 1;
12679 let mayLoad = 1;
12680 let CextOpcode = "L2_loadrd";
12681 let InputType = "reg";
12682 let BaseOpcode = "L4_loadrd_rr";
12683 }
12684 def L4_ploadrhf_abs : HInst<
12685 (outs IntRegs:$Rd32),
12686 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12687 "if (!$Pt4) $Rd32 = memh(#$Ii)",
12688 tc_7646c131, TypeLD>, Enc_2301d6, AddrModeRel {
12689 let Inst{7-5} = 0b100;
12690 let Inst{13-11} = 0b101;
12691 let Inst{31-21} = 0b10011111010;
12692 let isPredicated = 1;
12693 let isPredicatedFalse = 1;
12694 let hasNewValue = 1;
12695 let opNewValue = 0;
12696 let addrMode = Absolute;
12697 let accessSize = HalfWordAccess;
12698 let mayLoad = 1;
12699 let isExtended = 1;
12700 let CextOpcode = "L2_loadrh";
12701 let BaseOpcode = "L4_loadrh_abs";
12702 let DecoderNamespace = "MustExtend";
12703 let isExtendable = 1;
12704 let opExtendable = 2;
12705 let isExtentSigned = 0;
12706 let opExtentBits = 6;
12707 let opExtentAlign = 0;
12708 }
12709 def L4_ploadrhf_rr : HInst<
12710 (outs IntRegs:$Rd32),
12711 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12712 "if (!$Pv4) $Rd32 = memh($Rs32+$Rt32<<#$Ii)",
12713 tc_e4b3cb20, TypeLD>, Enc_2e1979, AddrModeRel {
12714 let Inst{31-21} = 0b00110001010;
12715 let isPredicated = 1;
12716 let isPredicatedFalse = 1;
12717 let hasNewValue = 1;
12718 let opNewValue = 0;
12719 let addrMode = BaseRegOffset;
12720 let accessSize = HalfWordAccess;
12721 let mayLoad = 1;
12722 let CextOpcode = "L2_loadrh";
12723 let InputType = "reg";
12724 let BaseOpcode = "L4_loadrh_rr";
12725 }
12726 def L4_ploadrhfnew_abs : HInst<
12727 (outs IntRegs:$Rd32),
12728 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12729 "if (!$Pt4.new) $Rd32 = memh(#$Ii)",
12730 tc_3b5b7ef9, TypeLD>, Enc_2301d6, AddrModeRel {
12731 let Inst{7-5} = 0b100;
12732 let Inst{13-11} = 0b111;
12733 let Inst{31-21} = 0b10011111010;
12734 let isPredicated = 1;
12735 let isPredicatedFalse = 1;
12736 let hasNewValue = 1;
12737 let opNewValue = 0;
12738 let addrMode = Absolute;
12739 let accessSize = HalfWordAccess;
12740 let isPredicatedNew = 1;
12741 let mayLoad = 1;
12742 let isExtended = 1;
12743 let CextOpcode = "L2_loadrh";
12744 let BaseOpcode = "L4_loadrh_abs";
12745 let DecoderNamespace = "MustExtend";
12746 let isExtendable = 1;
12747 let opExtendable = 2;
12748 let isExtentSigned = 0;
12749 let opExtentBits = 6;
12750 let opExtentAlign = 0;
12751 }
12752 def L4_ploadrhfnew_rr : HInst<
12753 (outs IntRegs:$Rd32),
12754 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12755 "if (!$Pv4.new) $Rd32 = memh($Rs32+$Rt32<<#$Ii)",
12756 tc_25a78932, TypeLD>, Enc_2e1979, AddrModeRel {
12757 let Inst{31-21} = 0b00110011010;
12758 let isPredicated = 1;
12759 let isPredicatedFalse = 1;
12760 let hasNewValue = 1;
12761 let opNewValue = 0;
12762 let addrMode = BaseRegOffset;
12763 let accessSize = HalfWordAccess;
12764 let isPredicatedNew = 1;
12765 let mayLoad = 1;
12766 let CextOpcode = "L2_loadrh";
12767 let InputType = "reg";
12768 let BaseOpcode = "L4_loadrh_rr";
12769 }
12770 def L4_ploadrht_abs : HInst<
12771 (outs IntRegs:$Rd32),
12772 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12773 "if ($Pt4) $Rd32 = memh(#$Ii)",
12774 tc_7646c131, TypeLD>, Enc_2301d6, AddrModeRel {
12775 let Inst{7-5} = 0b100;
12776 let Inst{13-11} = 0b100;
12777 let Inst{31-21} = 0b10011111010;
12778 let isPredicated = 1;
12779 let hasNewValue = 1;
12780 let opNewValue = 0;
12781 let addrMode = Absolute;
12782 let accessSize = HalfWordAccess;
12783 let mayLoad = 1;
12784 let isExtended = 1;
12785 let CextOpcode = "L2_loadrh";
12786 let BaseOpcode = "L4_loadrh_abs";
12787 let DecoderNamespace = "MustExtend";
12788 let isExtendable = 1;
12789 let opExtendable = 2;
12790 let isExtentSigned = 0;
12791 let opExtentBits = 6;
12792 let opExtentAlign = 0;
12793 }
12794 def L4_ploadrht_rr : HInst<
12795 (outs IntRegs:$Rd32),
12796 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12797 "if ($Pv4) $Rd32 = memh($Rs32+$Rt32<<#$Ii)",
12798 tc_e4b3cb20, TypeLD>, Enc_2e1979, AddrModeRel {
12799 let Inst{31-21} = 0b00110000010;
12800 let isPredicated = 1;
12801 let hasNewValue = 1;
12802 let opNewValue = 0;
12803 let addrMode = BaseRegOffset;
12804 let accessSize = HalfWordAccess;
12805 let mayLoad = 1;
12806 let CextOpcode = "L2_loadrh";
12807 let InputType = "reg";
12808 let BaseOpcode = "L4_loadrh_rr";
12809 }
12810 def L4_ploadrhtnew_abs : HInst<
12811 (outs IntRegs:$Rd32),
12812 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12813 "if ($Pt4.new) $Rd32 = memh(#$Ii)",
12814 tc_3b5b7ef9, TypeLD>, Enc_2301d6, AddrModeRel {
12815 let Inst{7-5} = 0b100;
12816 let Inst{13-11} = 0b110;
12817 let Inst{31-21} = 0b10011111010;
12818 let isPredicated = 1;
12819 let hasNewValue = 1;
12820 let opNewValue = 0;
12821 let addrMode = Absolute;
12822 let accessSize = HalfWordAccess;
12823 let isPredicatedNew = 1;
12824 let mayLoad = 1;
12825 let isExtended = 1;
12826 let CextOpcode = "L2_loadrh";
12827 let BaseOpcode = "L4_loadrh_abs";
12828 let DecoderNamespace = "MustExtend";
12829 let isExtendable = 1;
12830 let opExtendable = 2;
12831 let isExtentSigned = 0;
12832 let opExtentBits = 6;
12833 let opExtentAlign = 0;
12834 }
12835 def L4_ploadrhtnew_rr : HInst<
12836 (outs IntRegs:$Rd32),
12837 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12838 "if ($Pv4.new) $Rd32 = memh($Rs32+$Rt32<<#$Ii)",
12839 tc_25a78932, TypeLD>, Enc_2e1979, AddrModeRel {
12840 let Inst{31-21} = 0b00110010010;
12841 let isPredicated = 1;
12842 let hasNewValue = 1;
12843 let opNewValue = 0;
12844 let addrMode = BaseRegOffset;
12845 let accessSize = HalfWordAccess;
12846 let isPredicatedNew = 1;
12847 let mayLoad = 1;
12848 let CextOpcode = "L2_loadrh";
12849 let InputType = "reg";
12850 let BaseOpcode = "L4_loadrh_rr";
12851 }
12852 def L4_ploadrif_abs : HInst<
12853 (outs IntRegs:$Rd32),
12854 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12855 "if (!$Pt4) $Rd32 = memw(#$Ii)",
12856 tc_7646c131, TypeLD>, Enc_2301d6, AddrModeRel {
12857 let Inst{7-5} = 0b100;
12858 let Inst{13-11} = 0b101;
12859 let Inst{31-21} = 0b10011111100;
12860 let isPredicated = 1;
12861 let isPredicatedFalse = 1;
12862 let hasNewValue = 1;
12863 let opNewValue = 0;
12864 let addrMode = Absolute;
12865 let accessSize = WordAccess;
12866 let mayLoad = 1;
12867 let isExtended = 1;
12868 let CextOpcode = "L2_loadri";
12869 let BaseOpcode = "L4_loadri_abs";
12870 let DecoderNamespace = "MustExtend";
12871 let isExtendable = 1;
12872 let opExtendable = 2;
12873 let isExtentSigned = 0;
12874 let opExtentBits = 6;
12875 let opExtentAlign = 0;
12876 }
12877 def L4_ploadrif_rr : HInst<
12878 (outs IntRegs:$Rd32),
12879 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12880 "if (!$Pv4) $Rd32 = memw($Rs32+$Rt32<<#$Ii)",
12881 tc_e4b3cb20, TypeLD>, Enc_2e1979, AddrModeRel {
12882 let Inst{31-21} = 0b00110001100;
12883 let isPredicated = 1;
12884 let isPredicatedFalse = 1;
12885 let hasNewValue = 1;
12886 let opNewValue = 0;
12887 let addrMode = BaseRegOffset;
12888 let accessSize = WordAccess;
12889 let mayLoad = 1;
12890 let CextOpcode = "L2_loadri";
12891 let InputType = "reg";
12892 let BaseOpcode = "L4_loadri_rr";
12893 }
12894 def L4_ploadrifnew_abs : HInst<
12895 (outs IntRegs:$Rd32),
12896 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12897 "if (!$Pt4.new) $Rd32 = memw(#$Ii)",
12898 tc_3b5b7ef9, TypeLD>, Enc_2301d6, AddrModeRel {
12899 let Inst{7-5} = 0b100;
12900 let Inst{13-11} = 0b111;
12901 let Inst{31-21} = 0b10011111100;
12902 let isPredicated = 1;
12903 let isPredicatedFalse = 1;
12904 let hasNewValue = 1;
12905 let opNewValue = 0;
12906 let addrMode = Absolute;
12907 let accessSize = WordAccess;
12908 let isPredicatedNew = 1;
12909 let mayLoad = 1;
12910 let isExtended = 1;
12911 let CextOpcode = "L2_loadri";
12912 let BaseOpcode = "L4_loadri_abs";
12913 let DecoderNamespace = "MustExtend";
12914 let isExtendable = 1;
12915 let opExtendable = 2;
12916 let isExtentSigned = 0;
12917 let opExtentBits = 6;
12918 let opExtentAlign = 0;
12919 }
12920 def L4_ploadrifnew_rr : HInst<
12921 (outs IntRegs:$Rd32),
12922 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12923 "if (!$Pv4.new) $Rd32 = memw($Rs32+$Rt32<<#$Ii)",
12924 tc_25a78932, TypeLD>, Enc_2e1979, AddrModeRel {
12925 let Inst{31-21} = 0b00110011100;
12926 let isPredicated = 1;
12927 let isPredicatedFalse = 1;
12928 let hasNewValue = 1;
12929 let opNewValue = 0;
12930 let addrMode = BaseRegOffset;
12931 let accessSize = WordAccess;
12932 let isPredicatedNew = 1;
12933 let mayLoad = 1;
12934 let CextOpcode = "L2_loadri";
12935 let InputType = "reg";
12936 let BaseOpcode = "L4_loadri_rr";
12937 }
12938 def L4_ploadrit_abs : HInst<
12939 (outs IntRegs:$Rd32),
12940 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12941 "if ($Pt4) $Rd32 = memw(#$Ii)",
12942 tc_7646c131, TypeLD>, Enc_2301d6, AddrModeRel {
12943 let Inst{7-5} = 0b100;
12944 let Inst{13-11} = 0b100;
12945 let Inst{31-21} = 0b10011111100;
12946 let isPredicated = 1;
12947 let hasNewValue = 1;
12948 let opNewValue = 0;
12949 let addrMode = Absolute;
12950 let accessSize = WordAccess;
12951 let mayLoad = 1;
12952 let isExtended = 1;
12953 let CextOpcode = "L2_loadri";
12954 let BaseOpcode = "L4_loadri_abs";
12955 let DecoderNamespace = "MustExtend";
12956 let isExtendable = 1;
12957 let opExtendable = 2;
12958 let isExtentSigned = 0;
12959 let opExtentBits = 6;
12960 let opExtentAlign = 0;
12961 }
12962 def L4_ploadrit_rr : HInst<
12963 (outs IntRegs:$Rd32),
12964 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
12965 "if ($Pv4) $Rd32 = memw($Rs32+$Rt32<<#$Ii)",
12966 tc_e4b3cb20, TypeLD>, Enc_2e1979, AddrModeRel {
12967 let Inst{31-21} = 0b00110000100;
12968 let isPredicated = 1;
12969 let hasNewValue = 1;
12970 let opNewValue = 0;
12971 let addrMode = BaseRegOffset;
12972 let accessSize = WordAccess;
12973 let mayLoad = 1;
12974 let CextOpcode = "L2_loadri";
12975 let InputType = "reg";
12976 let BaseOpcode = "L4_loadri_rr";
12977 }
12978 def L4_ploadritnew_abs : HInst<
12979 (outs IntRegs:$Rd32),
12980 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
12981 "if ($Pt4.new) $Rd32 = memw(#$Ii)",
12982 tc_3b5b7ef9, TypeLD>, Enc_2301d6, AddrModeRel {
12983 let Inst{7-5} = 0b100;
12984 let Inst{13-11} = 0b110;
12985 let Inst{31-21} = 0b10011111100;
12986 let isPredicated = 1;
12987 let hasNewValue = 1;
12988 let opNewValue = 0;
12989 let addrMode = Absolute;
12990 let accessSize = WordAccess;
12991 let isPredicatedNew = 1;
12992 let mayLoad = 1;
12993 let isExtended = 1;
12994 let CextOpcode = "L2_loadri";
12995 let BaseOpcode = "L4_loadri_abs";
12996 let DecoderNamespace = "MustExtend";
12997 let isExtendable = 1;
12998 let opExtendable = 2;
12999 let isExtentSigned = 0;
13000 let opExtentBits = 6;
13001 let opExtentAlign = 0;
13002 }
13003 def L4_ploadritnew_rr : HInst<
13004 (outs IntRegs:$Rd32),
13005 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13006 "if ($Pv4.new) $Rd32 = memw($Rs32+$Rt32<<#$Ii)",
13007 tc_25a78932, TypeLD>, Enc_2e1979, AddrModeRel {
13008 let Inst{31-21} = 0b00110010100;
13009 let isPredicated = 1;
13010 let hasNewValue = 1;
13011 let opNewValue = 0;
13012 let addrMode = BaseRegOffset;
13013 let accessSize = WordAccess;
13014 let isPredicatedNew = 1;
13015 let mayLoad = 1;
13016 let CextOpcode = "L2_loadri";
13017 let InputType = "reg";
13018 let BaseOpcode = "L4_loadri_rr";
13019 }
13020 def L4_ploadrubf_abs : HInst<
13021 (outs IntRegs:$Rd32),
13022 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13023 "if (!$Pt4) $Rd32 = memub(#$Ii)",
13024 tc_7646c131, TypeLD>, Enc_2301d6, AddrModeRel {
13025 let Inst{7-5} = 0b100;
13026 let Inst{13-11} = 0b101;
13027 let Inst{31-21} = 0b10011111001;
13028 let isPredicated = 1;
13029 let isPredicatedFalse = 1;
13030 let hasNewValue = 1;
13031 let opNewValue = 0;
13032 let addrMode = Absolute;
13033 let accessSize = ByteAccess;
13034 let mayLoad = 1;
13035 let isExtended = 1;
13036 let CextOpcode = "L2_loadrub";
13037 let BaseOpcode = "L4_loadrub_abs";
13038 let DecoderNamespace = "MustExtend";
13039 let isExtendable = 1;
13040 let opExtendable = 2;
13041 let isExtentSigned = 0;
13042 let opExtentBits = 6;
13043 let opExtentAlign = 0;
13044 }
13045 def L4_ploadrubf_rr : HInst<
13046 (outs IntRegs:$Rd32),
13047 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13048 "if (!$Pv4) $Rd32 = memub($Rs32+$Rt32<<#$Ii)",
13049 tc_e4b3cb20, TypeLD>, Enc_2e1979, AddrModeRel {
13050 let Inst{31-21} = 0b00110001001;
13051 let isPredicated = 1;
13052 let isPredicatedFalse = 1;
13053 let hasNewValue = 1;
13054 let opNewValue = 0;
13055 let addrMode = BaseRegOffset;
13056 let accessSize = ByteAccess;
13057 let mayLoad = 1;
13058 let CextOpcode = "L2_loadrub";
13059 let InputType = "reg";
13060 let BaseOpcode = "L4_loadrub_rr";
13061 }
13062 def L4_ploadrubfnew_abs : HInst<
13063 (outs IntRegs:$Rd32),
13064 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13065 "if (!$Pt4.new) $Rd32 = memub(#$Ii)",
13066 tc_3b5b7ef9, TypeLD>, Enc_2301d6, AddrModeRel {
13067 let Inst{7-5} = 0b100;
13068 let Inst{13-11} = 0b111;
13069 let Inst{31-21} = 0b10011111001;
13070 let isPredicated = 1;
13071 let isPredicatedFalse = 1;
13072 let hasNewValue = 1;
13073 let opNewValue = 0;
13074 let addrMode = Absolute;
13075 let accessSize = ByteAccess;
13076 let isPredicatedNew = 1;
13077 let mayLoad = 1;
13078 let isExtended = 1;
13079 let CextOpcode = "L2_loadrub";
13080 let BaseOpcode = "L4_loadrub_abs";
13081 let DecoderNamespace = "MustExtend";
13082 let isExtendable = 1;
13083 let opExtendable = 2;
13084 let isExtentSigned = 0;
13085 let opExtentBits = 6;
13086 let opExtentAlign = 0;
13087 }
13088 def L4_ploadrubfnew_rr : HInst<
13089 (outs IntRegs:$Rd32),
13090 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13091 "if (!$Pv4.new) $Rd32 = memub($Rs32+$Rt32<<#$Ii)",
13092 tc_25a78932, TypeLD>, Enc_2e1979, AddrModeRel {
13093 let Inst{31-21} = 0b00110011001;
13094 let isPredicated = 1;
13095 let isPredicatedFalse = 1;
13096 let hasNewValue = 1;
13097 let opNewValue = 0;
13098 let addrMode = BaseRegOffset;
13099 let accessSize = ByteAccess;
13100 let isPredicatedNew = 1;
13101 let mayLoad = 1;
13102 let CextOpcode = "L2_loadrub";
13103 let InputType = "reg";
13104 let BaseOpcode = "L4_loadrub_rr";
13105 }
13106 def L4_ploadrubt_abs : HInst<
13107 (outs IntRegs:$Rd32),
13108 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13109 "if ($Pt4) $Rd32 = memub(#$Ii)",
13110 tc_7646c131, TypeLD>, Enc_2301d6, AddrModeRel {
13111 let Inst{7-5} = 0b100;
13112 let Inst{13-11} = 0b100;
13113 let Inst{31-21} = 0b10011111001;
13114 let isPredicated = 1;
13115 let hasNewValue = 1;
13116 let opNewValue = 0;
13117 let addrMode = Absolute;
13118 let accessSize = ByteAccess;
13119 let mayLoad = 1;
13120 let isExtended = 1;
13121 let CextOpcode = "L2_loadrub";
13122 let BaseOpcode = "L4_loadrub_abs";
13123 let DecoderNamespace = "MustExtend";
13124 let isExtendable = 1;
13125 let opExtendable = 2;
13126 let isExtentSigned = 0;
13127 let opExtentBits = 6;
13128 let opExtentAlign = 0;
13129 }
13130 def L4_ploadrubt_rr : HInst<
13131 (outs IntRegs:$Rd32),
13132 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13133 "if ($Pv4) $Rd32 = memub($Rs32+$Rt32<<#$Ii)",
13134 tc_e4b3cb20, TypeLD>, Enc_2e1979, AddrModeRel {
13135 let Inst{31-21} = 0b00110000001;
13136 let isPredicated = 1;
13137 let hasNewValue = 1;
13138 let opNewValue = 0;
13139 let addrMode = BaseRegOffset;
13140 let accessSize = ByteAccess;
13141 let mayLoad = 1;
13142 let CextOpcode = "L2_loadrub";
13143 let InputType = "reg";
13144 let BaseOpcode = "L4_loadrub_rr";
13145 }
13146 def L4_ploadrubtnew_abs : HInst<
13147 (outs IntRegs:$Rd32),
13148 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13149 "if ($Pt4.new) $Rd32 = memub(#$Ii)",
13150 tc_3b5b7ef9, TypeLD>, Enc_2301d6, AddrModeRel {
13151 let Inst{7-5} = 0b100;
13152 let Inst{13-11} = 0b110;
13153 let Inst{31-21} = 0b10011111001;
13154 let isPredicated = 1;
13155 let hasNewValue = 1;
13156 let opNewValue = 0;
13157 let addrMode = Absolute;
13158 let accessSize = ByteAccess;
13159 let isPredicatedNew = 1;
13160 let mayLoad = 1;
13161 let isExtended = 1;
13162 let CextOpcode = "L2_loadrub";
13163 let BaseOpcode = "L4_loadrub_abs";
13164 let DecoderNamespace = "MustExtend";
13165 let isExtendable = 1;
13166 let opExtendable = 2;
13167 let isExtentSigned = 0;
13168 let opExtentBits = 6;
13169 let opExtentAlign = 0;
13170 }
13171 def L4_ploadrubtnew_rr : HInst<
13172 (outs IntRegs:$Rd32),
13173 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13174 "if ($Pv4.new) $Rd32 = memub($Rs32+$Rt32<<#$Ii)",
13175 tc_25a78932, TypeLD>, Enc_2e1979, AddrModeRel {
13176 let Inst{31-21} = 0b00110010001;
13177 let isPredicated = 1;
13178 let hasNewValue = 1;
13179 let opNewValue = 0;
13180 let addrMode = BaseRegOffset;
13181 let accessSize = ByteAccess;
13182 let isPredicatedNew = 1;
13183 let mayLoad = 1;
13184 let CextOpcode = "L2_loadrub";
13185 let InputType = "reg";
13186 let BaseOpcode = "L4_loadrub_rr";
13187 }
13188 def L4_ploadruhf_abs : HInst<
13189 (outs IntRegs:$Rd32),
13190 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13191 "if (!$Pt4) $Rd32 = memuh(#$Ii)",
13192 tc_7646c131, TypeLD>, Enc_2301d6, AddrModeRel {
13193 let Inst{7-5} = 0b100;
13194 let Inst{13-11} = 0b101;
13195 let Inst{31-21} = 0b10011111011;
13196 let isPredicated = 1;
13197 let isPredicatedFalse = 1;
13198 let hasNewValue = 1;
13199 let opNewValue = 0;
13200 let addrMode = Absolute;
13201 let accessSize = HalfWordAccess;
13202 let mayLoad = 1;
13203 let isExtended = 1;
13204 let CextOpcode = "L2_loadruh";
13205 let BaseOpcode = "L4_loadruh_abs";
13206 let DecoderNamespace = "MustExtend";
13207 let isExtendable = 1;
13208 let opExtendable = 2;
13209 let isExtentSigned = 0;
13210 let opExtentBits = 6;
13211 let opExtentAlign = 0;
13212 }
13213 def L4_ploadruhf_rr : HInst<
13214 (outs IntRegs:$Rd32),
13215 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13216 "if (!$Pv4) $Rd32 = memuh($Rs32+$Rt32<<#$Ii)",
13217 tc_e4b3cb20, TypeLD>, Enc_2e1979, AddrModeRel {
13218 let Inst{31-21} = 0b00110001011;
13219 let isPredicated = 1;
13220 let isPredicatedFalse = 1;
13221 let hasNewValue = 1;
13222 let opNewValue = 0;
13223 let addrMode = BaseRegOffset;
13224 let accessSize = HalfWordAccess;
13225 let mayLoad = 1;
13226 let CextOpcode = "L2_loadruh";
13227 let InputType = "reg";
13228 let BaseOpcode = "L4_loadruh_rr";
13229 }
13230 def L4_ploadruhfnew_abs : HInst<
13231 (outs IntRegs:$Rd32),
13232 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13233 "if (!$Pt4.new) $Rd32 = memuh(#$Ii)",
13234 tc_3b5b7ef9, TypeLD>, Enc_2301d6, AddrModeRel {
13235 let Inst{7-5} = 0b100;
13236 let Inst{13-11} = 0b111;
13237 let Inst{31-21} = 0b10011111011;
13238 let isPredicated = 1;
13239 let isPredicatedFalse = 1;
13240 let hasNewValue = 1;
13241 let opNewValue = 0;
13242 let addrMode = Absolute;
13243 let accessSize = HalfWordAccess;
13244 let isPredicatedNew = 1;
13245 let mayLoad = 1;
13246 let isExtended = 1;
13247 let CextOpcode = "L2_loadruh";
13248 let BaseOpcode = "L4_loadruh_abs";
13249 let DecoderNamespace = "MustExtend";
13250 let isExtendable = 1;
13251 let opExtendable = 2;
13252 let isExtentSigned = 0;
13253 let opExtentBits = 6;
13254 let opExtentAlign = 0;
13255 }
13256 def L4_ploadruhfnew_rr : HInst<
13257 (outs IntRegs:$Rd32),
13258 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13259 "if (!$Pv4.new) $Rd32 = memuh($Rs32+$Rt32<<#$Ii)",
13260 tc_25a78932, TypeLD>, Enc_2e1979, AddrModeRel {
13261 let Inst{31-21} = 0b00110011011;
13262 let isPredicated = 1;
13263 let isPredicatedFalse = 1;
13264 let hasNewValue = 1;
13265 let opNewValue = 0;
13266 let addrMode = BaseRegOffset;
13267 let accessSize = HalfWordAccess;
13268 let isPredicatedNew = 1;
13269 let mayLoad = 1;
13270 let CextOpcode = "L2_loadruh";
13271 let InputType = "reg";
13272 let BaseOpcode = "L4_loadruh_rr";
13273 }
13274 def L4_ploadruht_abs : HInst<
13275 (outs IntRegs:$Rd32),
13276 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13277 "if ($Pt4) $Rd32 = memuh(#$Ii)",
13278 tc_7646c131, TypeLD>, Enc_2301d6, AddrModeRel {
13279 let Inst{7-5} = 0b100;
13280 let Inst{13-11} = 0b100;
13281 let Inst{31-21} = 0b10011111011;
13282 let isPredicated = 1;
13283 let hasNewValue = 1;
13284 let opNewValue = 0;
13285 let addrMode = Absolute;
13286 let accessSize = HalfWordAccess;
13287 let mayLoad = 1;
13288 let isExtended = 1;
13289 let CextOpcode = "L2_loadruh";
13290 let BaseOpcode = "L4_loadruh_abs";
13291 let DecoderNamespace = "MustExtend";
13292 let isExtendable = 1;
13293 let opExtendable = 2;
13294 let isExtentSigned = 0;
13295 let opExtentBits = 6;
13296 let opExtentAlign = 0;
13297 }
13298 def L4_ploadruht_rr : HInst<
13299 (outs IntRegs:$Rd32),
13300 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13301 "if ($Pv4) $Rd32 = memuh($Rs32+$Rt32<<#$Ii)",
13302 tc_e4b3cb20, TypeLD>, Enc_2e1979, AddrModeRel {
13303 let Inst{31-21} = 0b00110000011;
13304 let isPredicated = 1;
13305 let hasNewValue = 1;
13306 let opNewValue = 0;
13307 let addrMode = BaseRegOffset;
13308 let accessSize = HalfWordAccess;
13309 let mayLoad = 1;
13310 let CextOpcode = "L2_loadruh";
13311 let InputType = "reg";
13312 let BaseOpcode = "L4_loadruh_rr";
13313 }
13314 def L4_ploadruhtnew_abs : HInst<
13315 (outs IntRegs:$Rd32),
13316 (ins PredRegs:$Pt4, u32_0Imm:$Ii),
13317 "if ($Pt4.new) $Rd32 = memuh(#$Ii)",
13318 tc_3b5b7ef9, TypeLD>, Enc_2301d6, AddrModeRel {
13319 let Inst{7-5} = 0b100;
13320 let Inst{13-11} = 0b110;
13321 let Inst{31-21} = 0b10011111011;
13322 let isPredicated = 1;
13323 let hasNewValue = 1;
13324 let opNewValue = 0;
13325 let addrMode = Absolute;
13326 let accessSize = HalfWordAccess;
13327 let isPredicatedNew = 1;
13328 let mayLoad = 1;
13329 let isExtended = 1;
13330 let CextOpcode = "L2_loadruh";
13331 let BaseOpcode = "L4_loadruh_abs";
13332 let DecoderNamespace = "MustExtend";
13333 let isExtendable = 1;
13334 let opExtendable = 2;
13335 let isExtentSigned = 0;
13336 let opExtentBits = 6;
13337 let opExtentAlign = 0;
13338 }
13339 def L4_ploadruhtnew_rr : HInst<
13340 (outs IntRegs:$Rd32),
13341 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32, u2_0Imm:$Ii),
13342 "if ($Pv4.new) $Rd32 = memuh($Rs32+$Rt32<<#$Ii)",
13343 tc_25a78932, TypeLD>, Enc_2e1979, AddrModeRel {
13344 let Inst{31-21} = 0b00110010011;
13345 let isPredicated = 1;
13346 let hasNewValue = 1;
13347 let opNewValue = 0;
13348 let addrMode = BaseRegOffset;
13349 let accessSize = HalfWordAccess;
13350 let isPredicatedNew = 1;
13351 let mayLoad = 1;
13352 let CextOpcode = "L2_loadruh";
13353 let InputType = "reg";
13354 let BaseOpcode = "L4_loadruh_rr";
13355 }
13356 def L4_return : HInst<
13357 (outs DoubleRegs:$Rdd32),
13358 (ins IntRegs:$Rs32),
13359 "$Rdd32 = dealloc_return($Rs32):raw",
13360 tc_675e4897, TypeLD>, Enc_3a3d62, PredNewRel {
13361 let Inst{13-5} = 0b000000000;
13362 let Inst{31-21} = 0b10010110000;
13363 let isTerminator = 1;
13364 let isIndirectBranch = 1;
13365 let accessSize = DoubleWordAccess;
13366 let mayLoad = 1;
13367 let cofMax1 = 1;
13368 let isRestrictNoSlot1Store = 1;
13369 let isReturn = 1;
13370 let Uses = [FRAMEKEY];
13371 let Defs = [PC, R29];
13372 let BaseOpcode = "L4_return";
13373 let isBarrier = 1;
13374 let isPredicable = 1;
13375 let isTaken = 1;
13376 }
13377 def L4_return_f : HInst<
13378 (outs DoubleRegs:$Rdd32),
13379 (ins PredRegs:$Pv4, IntRegs:$Rs32),
13380 "if (!$Pv4) $Rdd32 = dealloc_return($Rs32):raw",
13381 tc_2b8da4c2, TypeLD>, Enc_b7fad3, PredNewRel {
13382 let Inst{7-5} = 0b000;
13383 let Inst{13-10} = 0b1100;
13384 let Inst{31-21} = 0b10010110000;
13385 let isPredicated = 1;
13386 let isPredicatedFalse = 1;
13387 let isTerminator = 1;
13388 let isIndirectBranch = 1;
13389 let accessSize = DoubleWordAccess;
13390 let mayLoad = 1;
13391 let cofMax1 = 1;
13392 let isRestrictNoSlot1Store = 1;
13393 let isReturn = 1;
13394 let Uses = [FRAMEKEY];
13395 let Defs = [PC, R29];
13396 let BaseOpcode = "L4_return";
13397 let isTaken = Inst{12};
13398 }
13399 def L4_return_fnew_pnt : HInst<
13400 (outs DoubleRegs:$Rdd32),
13401 (ins PredRegs:$Pv4, IntRegs:$Rs32),
13402 "if (!$Pv4.new) $Rdd32 = dealloc_return($Rs32):nt:raw",
13403 tc_9da59d12, TypeLD>, Enc_b7fad3, PredNewRel {
13404 let Inst{7-5} = 0b000;
13405 let Inst{13-10} = 0b1010;
13406 let Inst{31-21} = 0b10010110000;
13407 let isPredicated = 1;
13408 let isPredicatedFalse = 1;
13409 let isTerminator = 1;
13410 let isIndirectBranch = 1;
13411 let accessSize = DoubleWordAccess;
13412 let isPredicatedNew = 1;
13413 let mayLoad = 1;
13414 let cofMax1 = 1;
13415 let isRestrictNoSlot1Store = 1;
13416 let isReturn = 1;
13417 let Uses = [FRAMEKEY];
13418 let Defs = [PC, R29];
13419 let BaseOpcode = "L4_return";
13420 let isTaken = Inst{12};
13421 }
13422 def L4_return_fnew_pt : HInst<
13423 (outs DoubleRegs:$Rdd32),
13424 (ins PredRegs:$Pv4, IntRegs:$Rs32),
13425 "if (!$Pv4.new) $Rdd32 = dealloc_return($Rs32):t:raw",
13426 tc_9da59d12, TypeLD>, Enc_b7fad3, PredNewRel {
13427 let Inst{7-5} = 0b000;
13428 let Inst{13-10} = 0b1110;
13429 let Inst{31-21} = 0b10010110000;
13430 let isPredicated = 1;
13431 let isPredicatedFalse = 1;
13432 let isTerminator = 1;
13433 let isIndirectBranch = 1;
13434 let accessSize = DoubleWordAccess;
13435 let isPredicatedNew = 1;
13436 let mayLoad = 1;
13437 let cofMax1 = 1;
13438 let isRestrictNoSlot1Store = 1;
13439 let isReturn = 1;
13440 let Uses = [FRAMEKEY];
13441 let Defs = [PC, R29];
13442 let BaseOpcode = "L4_return";
13443 let isTaken = Inst{12};
13444 }
13445 def L4_return_map_to_raw_f : HInst<
13446 (outs),
13447 (ins PredRegs:$Pv4),
13448 "if (!$Pv4) dealloc_return",
13449 tc_2b8da4c2, TypeMAPPING>, Requires<[HasV65]> {
13450 let isPseudo = 1;
13451 let isCodeGenOnly = 1;
13452 }
13453 def L4_return_map_to_raw_fnew_pnt : HInst<
13454 (outs),
13455 (ins PredRegs:$Pv4),
13456 "if (!$Pv4.new) dealloc_return:nt",
13457 tc_9da59d12, TypeMAPPING>, Requires<[HasV65]> {
13458 let isPseudo = 1;
13459 let isCodeGenOnly = 1;
13460 }
13461 def L4_return_map_to_raw_fnew_pt : HInst<
13462 (outs),
13463 (ins PredRegs:$Pv4),
13464 "if (!$Pv4.new) dealloc_return:t",
13465 tc_9da59d12, TypeMAPPING>, Requires<[HasV65]> {
13466 let isPseudo = 1;
13467 let isCodeGenOnly = 1;
13468 }
13469 def L4_return_map_to_raw_t : HInst<
13470 (outs),
13471 (ins PredRegs:$Pv4),
13472 "if ($Pv4) dealloc_return",
13473 tc_4d5fa3a1, TypeMAPPING>, Requires<[HasV65]> {
13474 let isPseudo = 1;
13475 let isCodeGenOnly = 1;
13476 }
13477 def L4_return_map_to_raw_tnew_pnt : HInst<
13478 (outs),
13479 (ins PredRegs:$Pv4),
13480 "if ($Pv4.new) dealloc_return:nt",
13481 tc_e06f432a, TypeMAPPING>, Requires<[HasV65]> {
13482 let isPseudo = 1;
13483 let isCodeGenOnly = 1;
13484 }
13485 def L4_return_map_to_raw_tnew_pt : HInst<
13486 (outs),
13487 (ins PredRegs:$Pv4),
13488 "if ($Pv4.new) dealloc_return:t",
13489 tc_e06f432a, TypeMAPPING>, Requires<[HasV65]> {
13490 let isPseudo = 1;
13491 let isCodeGenOnly = 1;
13492 }
13493 def L4_return_t : HInst<
13494 (outs DoubleRegs:$Rdd32),
13495 (ins PredRegs:$Pv4, IntRegs:$Rs32),
13496 "if ($Pv4) $Rdd32 = dealloc_return($Rs32):raw",
13497 tc_2b8da4c2, TypeLD>, Enc_b7fad3, PredNewRel {
13498 let Inst{7-5} = 0b000;
13499 let Inst{13-10} = 0b0100;
13500 let Inst{31-21} = 0b10010110000;
13501 let isPredicated = 1;
13502 let isTerminator = 1;
13503 let isIndirectBranch = 1;
13504 let accessSize = DoubleWordAccess;
13505 let mayLoad = 1;
13506 let cofMax1 = 1;
13507 let isRestrictNoSlot1Store = 1;
13508 let isReturn = 1;
13509 let Uses = [FRAMEKEY];
13510 let Defs = [PC, R29];
13511 let BaseOpcode = "L4_return";
13512 let isTaken = Inst{12};
13513 }
13514 def L4_return_tnew_pnt : HInst<
13515 (outs DoubleRegs:$Rdd32),
13516 (ins PredRegs:$Pv4, IntRegs:$Rs32),
13517 "if ($Pv4.new) $Rdd32 = dealloc_return($Rs32):nt:raw",
13518 tc_9da59d12, TypeLD>, Enc_b7fad3, PredNewRel {
13519 let Inst{7-5} = 0b000;
13520 let Inst{13-10} = 0b0010;
13521 let Inst{31-21} = 0b10010110000;
13522 let isPredicated = 1;
13523 let isTerminator = 1;
13524 let isIndirectBranch = 1;
13525 let accessSize = DoubleWordAccess;
13526 let isPredicatedNew = 1;
13527 let mayLoad = 1;
13528 let cofMax1 = 1;
13529 let isRestrictNoSlot1Store = 1;
13530 let isReturn = 1;
13531 let Uses = [FRAMEKEY];
13532 let Defs = [PC, R29];
13533 let BaseOpcode = "L4_return";
13534 let isTaken = Inst{12};
13535 }
13536 def L4_return_tnew_pt : HInst<
13537 (outs DoubleRegs:$Rdd32),
13538 (ins PredRegs:$Pv4, IntRegs:$Rs32),
13539 "if ($Pv4.new) $Rdd32 = dealloc_return($Rs32):t:raw",
13540 tc_9da59d12, TypeLD>, Enc_b7fad3, PredNewRel {
13541 let Inst{7-5} = 0b000;
13542 let Inst{13-10} = 0b0110;
13543 let Inst{31-21} = 0b10010110000;
13544 let isPredicated = 1;
13545 let isTerminator = 1;
13546 let isIndirectBranch = 1;
13547 let accessSize = DoubleWordAccess;
13548 let isPredicatedNew = 1;
13549 let mayLoad = 1;
13550 let cofMax1 = 1;
13551 let isRestrictNoSlot1Store = 1;
13552 let isReturn = 1;
13553 let Uses = [FRAMEKEY];
13554 let Defs = [PC, R29];
13555 let BaseOpcode = "L4_return";
13556 let isTaken = Inst{12};
13557 }
13558 def L4_sub_memopb_io : HInst<
13559 (outs),
13560 (ins IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
13561 "memb($Rs32+#$Ii) -= $Rt32",
13562 tc_7186d325, TypeV4LDST>, Enc_d44e31 {
13563 let Inst{6-5} = 0b01;
13564 let Inst{13-13} = 0b0;
13565 let Inst{31-21} = 0b00111110000;
13566 let addrMode = BaseImmOffset;
13567 let accessSize = ByteAccess;
13568 let mayLoad = 1;
13569 let isRestrictNoSlot1Store = 1;
13570 let mayStore = 1;
13571 let isExtendable = 1;
13572 let opExtendable = 1;
13573 let isExtentSigned = 0;
13574 let opExtentBits = 6;
13575 let opExtentAlign = 0;
13576 }
13577 def L4_sub_memopb_zomap : HInst<
13578 (outs),
13579 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13580 "memb($Rs32) -= $Rt32",
13581 tc_7186d325, TypeMAPPING> {
13582 let isPseudo = 1;
13583 let isCodeGenOnly = 1;
13584 }
13585 def L4_sub_memoph_io : HInst<
13586 (outs),
13587 (ins IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
13588 "memh($Rs32+#$Ii) -= $Rt32",
13589 tc_7186d325, TypeV4LDST>, Enc_163a3c {
13590 let Inst{6-5} = 0b01;
13591 let Inst{13-13} = 0b0;
13592 let Inst{31-21} = 0b00111110001;
13593 let addrMode = BaseImmOffset;
13594 let accessSize = HalfWordAccess;
13595 let mayLoad = 1;
13596 let isRestrictNoSlot1Store = 1;
13597 let mayStore = 1;
13598 let isExtendable = 1;
13599 let opExtendable = 1;
13600 let isExtentSigned = 0;
13601 let opExtentBits = 7;
13602 let opExtentAlign = 1;
13603 }
13604 def L4_sub_memoph_zomap : HInst<
13605 (outs),
13606 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13607 "memh($Rs32) -= $Rt32",
13608 tc_7186d325, TypeMAPPING> {
13609 let isPseudo = 1;
13610 let isCodeGenOnly = 1;
13611 }
13612 def L4_sub_memopw_io : HInst<
13613 (outs),
13614 (ins IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Rt32),
13615 "memw($Rs32+#$Ii) -= $Rt32",
13616 tc_7186d325, TypeV4LDST>, Enc_226535 {
13617 let Inst{6-5} = 0b01;
13618 let Inst{13-13} = 0b0;
13619 let Inst{31-21} = 0b00111110010;
13620 let addrMode = BaseImmOffset;
13621 let accessSize = WordAccess;
13622 let mayLoad = 1;
13623 let isRestrictNoSlot1Store = 1;
13624 let mayStore = 1;
13625 let isExtendable = 1;
13626 let opExtendable = 1;
13627 let isExtentSigned = 0;
13628 let opExtentBits = 8;
13629 let opExtentAlign = 2;
13630 }
13631 def L4_sub_memopw_zomap : HInst<
13632 (outs),
13633 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13634 "memw($Rs32) -= $Rt32",
13635 tc_7186d325, TypeMAPPING> {
13636 let isPseudo = 1;
13637 let isCodeGenOnly = 1;
13638 }
13639 def L6_deallocframe_map_to_raw : HInst<
13640 (outs),
13641 (ins),
13642 "deallocframe",
13643 tc_15aa71c5, TypeMAPPING>, Requires<[HasV65]> {
13644 let isPseudo = 1;
13645 let isCodeGenOnly = 1;
13646 }
13647 def L6_memcpy : HInst<
13648 (outs),
13649 (ins IntRegs:$Rs32, IntRegs:$Rt32, ModRegs:$Mu2),
13650 "memcpy($Rs32,$Rt32,$Mu2)",
13651 tc_a6b1eca9, TypeLD>, Enc_a75aa6, Requires<[HasV66]> {
13652 let Inst{7-0} = 0b01000000;
13653 let Inst{31-21} = 0b10010010000;
13654 let mayLoad = 1;
13655 let isSolo = 1;
13656 let mayStore = 1;
13657 }
13658 def L6_return_map_to_raw : HInst<
13659 (outs),
13660 (ins),
13661 "dealloc_return",
13662 tc_675e4897, TypeMAPPING>, Requires<[HasV65]> {
13663 let isPseudo = 1;
13664 let isCodeGenOnly = 1;
13665 }
13666 def M2_acci : HInst<
13667 (outs IntRegs:$Rx32),
13668 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13669 "$Rx32 += add($Rs32,$Rt32)",
13670 tc_f675fee8, TypeM>, Enc_2ae154, ImmRegRel {
13671 let Inst{7-5} = 0b001;
13672 let Inst{13-13} = 0b0;
13673 let Inst{31-21} = 0b11101111000;
13674 let hasNewValue = 1;
13675 let opNewValue = 0;
13676 let prefersSlot3 = 1;
13677 let CextOpcode = "M2_acci";
13678 let InputType = "reg";
13679 let Constraints = "$Rx32 = $Rx32in";
13680 }
13681 def M2_accii : HInst<
13682 (outs IntRegs:$Rx32),
13683 (ins IntRegs:$Rx32in, IntRegs:$Rs32, s32_0Imm:$Ii),
13684 "$Rx32 += add($Rs32,#$Ii)",
13685 tc_f675fee8, TypeM>, Enc_c90aca, ImmRegRel {
13686 let Inst{13-13} = 0b0;
13687 let Inst{31-21} = 0b11100010000;
13688 let hasNewValue = 1;
13689 let opNewValue = 0;
13690 let prefersSlot3 = 1;
13691 let CextOpcode = "M2_acci";
13692 let InputType = "imm";
13693 let isExtendable = 1;
13694 let opExtendable = 3;
13695 let isExtentSigned = 1;
13696 let opExtentBits = 8;
13697 let opExtentAlign = 0;
13698 let Constraints = "$Rx32 = $Rx32in";
13699 }
13700 def M2_cmaci_s0 : HInst<
13701 (outs DoubleRegs:$Rxx32),
13702 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13703 "$Rxx32 += cmpyi($Rs32,$Rt32)",
13704 tc_d773585a, TypeM>, Enc_61f0b0 {
13705 let Inst{7-5} = 0b001;
13706 let Inst{13-13} = 0b0;
13707 let Inst{31-21} = 0b11100111000;
13708 let prefersSlot3 = 1;
13709 let Constraints = "$Rxx32 = $Rxx32in";
13710 }
13711 def M2_cmacr_s0 : HInst<
13712 (outs DoubleRegs:$Rxx32),
13713 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13714 "$Rxx32 += cmpyr($Rs32,$Rt32)",
13715 tc_d773585a, TypeM>, Enc_61f0b0 {
13716 let Inst{7-5} = 0b010;
13717 let Inst{13-13} = 0b0;
13718 let Inst{31-21} = 0b11100111000;
13719 let prefersSlot3 = 1;
13720 let Constraints = "$Rxx32 = $Rxx32in";
13721 }
13722 def M2_cmacs_s0 : HInst<
13723 (outs DoubleRegs:$Rxx32),
13724 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13725 "$Rxx32 += cmpy($Rs32,$Rt32):sat",
13726 tc_d773585a, TypeM>, Enc_61f0b0 {
13727 let Inst{7-5} = 0b110;
13728 let Inst{13-13} = 0b0;
13729 let Inst{31-21} = 0b11100111000;
13730 let prefersSlot3 = 1;
13731 let Defs = [USR_OVF];
13732 let Constraints = "$Rxx32 = $Rxx32in";
13733 }
13734 def M2_cmacs_s1 : HInst<
13735 (outs DoubleRegs:$Rxx32),
13736 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13737 "$Rxx32 += cmpy($Rs32,$Rt32):<<1:sat",
13738 tc_d773585a, TypeM>, Enc_61f0b0 {
13739 let Inst{7-5} = 0b110;
13740 let Inst{13-13} = 0b0;
13741 let Inst{31-21} = 0b11100111100;
13742 let prefersSlot3 = 1;
13743 let Defs = [USR_OVF];
13744 let Constraints = "$Rxx32 = $Rxx32in";
13745 }
13746 def M2_cmacsc_s0 : HInst<
13747 (outs DoubleRegs:$Rxx32),
13748 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13749 "$Rxx32 += cmpy($Rs32,$Rt32*):sat",
13750 tc_d773585a, TypeM>, Enc_61f0b0 {
13751 let Inst{7-5} = 0b110;
13752 let Inst{13-13} = 0b0;
13753 let Inst{31-21} = 0b11100111010;
13754 let prefersSlot3 = 1;
13755 let Defs = [USR_OVF];
13756 let Constraints = "$Rxx32 = $Rxx32in";
13757 }
13758 def M2_cmacsc_s1 : HInst<
13759 (outs DoubleRegs:$Rxx32),
13760 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13761 "$Rxx32 += cmpy($Rs32,$Rt32*):<<1:sat",
13762 tc_d773585a, TypeM>, Enc_61f0b0 {
13763 let Inst{7-5} = 0b110;
13764 let Inst{13-13} = 0b0;
13765 let Inst{31-21} = 0b11100111110;
13766 let prefersSlot3 = 1;
13767 let Defs = [USR_OVF];
13768 let Constraints = "$Rxx32 = $Rxx32in";
13769 }
13770 def M2_cmpyi_s0 : HInst<
13771 (outs DoubleRegs:$Rdd32),
13772 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13773 "$Rdd32 = cmpyi($Rs32,$Rt32)",
13774 tc_bafaade3, TypeM>, Enc_be32a5 {
13775 let Inst{7-5} = 0b001;
13776 let Inst{13-13} = 0b0;
13777 let Inst{31-21} = 0b11100101000;
13778 let prefersSlot3 = 1;
13779 }
13780 def M2_cmpyr_s0 : HInst<
13781 (outs DoubleRegs:$Rdd32),
13782 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13783 "$Rdd32 = cmpyr($Rs32,$Rt32)",
13784 tc_bafaade3, TypeM>, Enc_be32a5 {
13785 let Inst{7-5} = 0b010;
13786 let Inst{13-13} = 0b0;
13787 let Inst{31-21} = 0b11100101000;
13788 let prefersSlot3 = 1;
13789 }
13790 def M2_cmpyrs_s0 : HInst<
13791 (outs IntRegs:$Rd32),
13792 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13793 "$Rd32 = cmpy($Rs32,$Rt32):rnd:sat",
13794 tc_bafaade3, TypeM>, Enc_5ab2be {
13795 let Inst{7-5} = 0b110;
13796 let Inst{13-13} = 0b0;
13797 let Inst{31-21} = 0b11101101001;
13798 let hasNewValue = 1;
13799 let opNewValue = 0;
13800 let prefersSlot3 = 1;
13801 let Defs = [USR_OVF];
13802 }
13803 def M2_cmpyrs_s1 : HInst<
13804 (outs IntRegs:$Rd32),
13805 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13806 "$Rd32 = cmpy($Rs32,$Rt32):<<1:rnd:sat",
13807 tc_bafaade3, TypeM>, Enc_5ab2be {
13808 let Inst{7-5} = 0b110;
13809 let Inst{13-13} = 0b0;
13810 let Inst{31-21} = 0b11101101101;
13811 let hasNewValue = 1;
13812 let opNewValue = 0;
13813 let prefersSlot3 = 1;
13814 let Defs = [USR_OVF];
13815 }
13816 def M2_cmpyrsc_s0 : HInst<
13817 (outs IntRegs:$Rd32),
13818 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13819 "$Rd32 = cmpy($Rs32,$Rt32*):rnd:sat",
13820 tc_bafaade3, TypeM>, Enc_5ab2be {
13821 let Inst{7-5} = 0b110;
13822 let Inst{13-13} = 0b0;
13823 let Inst{31-21} = 0b11101101011;
13824 let hasNewValue = 1;
13825 let opNewValue = 0;
13826 let prefersSlot3 = 1;
13827 let Defs = [USR_OVF];
13828 }
13829 def M2_cmpyrsc_s1 : HInst<
13830 (outs IntRegs:$Rd32),
13831 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13832 "$Rd32 = cmpy($Rs32,$Rt32*):<<1:rnd:sat",
13833 tc_bafaade3, TypeM>, Enc_5ab2be {
13834 let Inst{7-5} = 0b110;
13835 let Inst{13-13} = 0b0;
13836 let Inst{31-21} = 0b11101101111;
13837 let hasNewValue = 1;
13838 let opNewValue = 0;
13839 let prefersSlot3 = 1;
13840 let Defs = [USR_OVF];
13841 }
13842 def M2_cmpys_s0 : HInst<
13843 (outs DoubleRegs:$Rdd32),
13844 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13845 "$Rdd32 = cmpy($Rs32,$Rt32):sat",
13846 tc_bafaade3, TypeM>, Enc_be32a5 {
13847 let Inst{7-5} = 0b110;
13848 let Inst{13-13} = 0b0;
13849 let Inst{31-21} = 0b11100101000;
13850 let prefersSlot3 = 1;
13851 let Defs = [USR_OVF];
13852 }
13853 def M2_cmpys_s1 : HInst<
13854 (outs DoubleRegs:$Rdd32),
13855 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13856 "$Rdd32 = cmpy($Rs32,$Rt32):<<1:sat",
13857 tc_bafaade3, TypeM>, Enc_be32a5 {
13858 let Inst{7-5} = 0b110;
13859 let Inst{13-13} = 0b0;
13860 let Inst{31-21} = 0b11100101100;
13861 let prefersSlot3 = 1;
13862 let Defs = [USR_OVF];
13863 }
13864 def M2_cmpysc_s0 : HInst<
13865 (outs DoubleRegs:$Rdd32),
13866 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13867 "$Rdd32 = cmpy($Rs32,$Rt32*):sat",
13868 tc_bafaade3, TypeM>, Enc_be32a5 {
13869 let Inst{7-5} = 0b110;
13870 let Inst{13-13} = 0b0;
13871 let Inst{31-21} = 0b11100101010;
13872 let prefersSlot3 = 1;
13873 let Defs = [USR_OVF];
13874 }
13875 def M2_cmpysc_s1 : HInst<
13876 (outs DoubleRegs:$Rdd32),
13877 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13878 "$Rdd32 = cmpy($Rs32,$Rt32*):<<1:sat",
13879 tc_bafaade3, TypeM>, Enc_be32a5 {
13880 let Inst{7-5} = 0b110;
13881 let Inst{13-13} = 0b0;
13882 let Inst{31-21} = 0b11100101110;
13883 let prefersSlot3 = 1;
13884 let Defs = [USR_OVF];
13885 }
13886 def M2_cnacs_s0 : HInst<
13887 (outs DoubleRegs:$Rxx32),
13888 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13889 "$Rxx32 -= cmpy($Rs32,$Rt32):sat",
13890 tc_d773585a, TypeM>, Enc_61f0b0 {
13891 let Inst{7-5} = 0b111;
13892 let Inst{13-13} = 0b0;
13893 let Inst{31-21} = 0b11100111000;
13894 let prefersSlot3 = 1;
13895 let Defs = [USR_OVF];
13896 let Constraints = "$Rxx32 = $Rxx32in";
13897 }
13898 def M2_cnacs_s1 : HInst<
13899 (outs DoubleRegs:$Rxx32),
13900 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13901 "$Rxx32 -= cmpy($Rs32,$Rt32):<<1:sat",
13902 tc_d773585a, TypeM>, Enc_61f0b0 {
13903 let Inst{7-5} = 0b111;
13904 let Inst{13-13} = 0b0;
13905 let Inst{31-21} = 0b11100111100;
13906 let prefersSlot3 = 1;
13907 let Defs = [USR_OVF];
13908 let Constraints = "$Rxx32 = $Rxx32in";
13909 }
13910 def M2_cnacsc_s0 : HInst<
13911 (outs DoubleRegs:$Rxx32),
13912 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13913 "$Rxx32 -= cmpy($Rs32,$Rt32*):sat",
13914 tc_d773585a, TypeM>, Enc_61f0b0 {
13915 let Inst{7-5} = 0b111;
13916 let Inst{13-13} = 0b0;
13917 let Inst{31-21} = 0b11100111010;
13918 let prefersSlot3 = 1;
13919 let Defs = [USR_OVF];
13920 let Constraints = "$Rxx32 = $Rxx32in";
13921 }
13922 def M2_cnacsc_s1 : HInst<
13923 (outs DoubleRegs:$Rxx32),
13924 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13925 "$Rxx32 -= cmpy($Rs32,$Rt32*):<<1:sat",
13926 tc_d773585a, TypeM>, Enc_61f0b0 {
13927 let Inst{7-5} = 0b111;
13928 let Inst{13-13} = 0b0;
13929 let Inst{31-21} = 0b11100111110;
13930 let prefersSlot3 = 1;
13931 let Defs = [USR_OVF];
13932 let Constraints = "$Rxx32 = $Rxx32in";
13933 }
13934 def M2_dpmpyss_acc_s0 : HInst<
13935 (outs DoubleRegs:$Rxx32),
13936 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13937 "$Rxx32 += mpy($Rs32,$Rt32)",
13938 tc_d773585a, TypeM>, Enc_61f0b0 {
13939 let Inst{7-5} = 0b000;
13940 let Inst{13-13} = 0b0;
13941 let Inst{31-21} = 0b11100111000;
13942 let prefersSlot3 = 1;
13943 let Constraints = "$Rxx32 = $Rxx32in";
13944 }
13945 def M2_dpmpyss_nac_s0 : HInst<
13946 (outs DoubleRegs:$Rxx32),
13947 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13948 "$Rxx32 -= mpy($Rs32,$Rt32)",
13949 tc_d773585a, TypeM>, Enc_61f0b0 {
13950 let Inst{7-5} = 0b000;
13951 let Inst{13-13} = 0b0;
13952 let Inst{31-21} = 0b11100111001;
13953 let prefersSlot3 = 1;
13954 let Constraints = "$Rxx32 = $Rxx32in";
13955 }
13956 def M2_dpmpyss_rnd_s0 : HInst<
13957 (outs IntRegs:$Rd32),
13958 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13959 "$Rd32 = mpy($Rs32,$Rt32):rnd",
13960 tc_bafaade3, TypeM>, Enc_5ab2be {
13961 let Inst{7-5} = 0b001;
13962 let Inst{13-13} = 0b0;
13963 let Inst{31-21} = 0b11101101001;
13964 let hasNewValue = 1;
13965 let opNewValue = 0;
13966 let prefersSlot3 = 1;
13967 }
13968 def M2_dpmpyss_s0 : HInst<
13969 (outs DoubleRegs:$Rdd32),
13970 (ins IntRegs:$Rs32, IntRegs:$Rt32),
13971 "$Rdd32 = mpy($Rs32,$Rt32)",
13972 tc_bafaade3, TypeM>, Enc_be32a5 {
13973 let Inst{7-5} = 0b000;
13974 let Inst{13-13} = 0b0;
13975 let Inst{31-21} = 0b11100101000;
13976 let prefersSlot3 = 1;
13977 }
13978 def M2_dpmpyuu_acc_s0 : HInst<
13979 (outs DoubleRegs:$Rxx32),
13980 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13981 "$Rxx32 += mpyu($Rs32,$Rt32)",
13982 tc_d773585a, TypeM>, Enc_61f0b0 {
13983 let Inst{7-5} = 0b000;
13984 let Inst{13-13} = 0b0;
13985 let Inst{31-21} = 0b11100111010;
13986 let prefersSlot3 = 1;
13987 let Constraints = "$Rxx32 = $Rxx32in";
13988 }
13989 def M2_dpmpyuu_nac_s0 : HInst<
13990 (outs DoubleRegs:$Rxx32),
13991 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
13992 "$Rxx32 -= mpyu($Rs32,$Rt32)",
13993 tc_d773585a, TypeM>, Enc_61f0b0 {
13994 let Inst{7-5} = 0b000;
13995 let Inst{13-13} = 0b0;
13996 let Inst{31-21} = 0b11100111011;
13997 let prefersSlot3 = 1;
13998 let Constraints = "$Rxx32 = $Rxx32in";
13999 }
14000 def M2_dpmpyuu_s0 : HInst<
14001 (outs DoubleRegs:$Rdd32),
14002 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14003 "$Rdd32 = mpyu($Rs32,$Rt32)",
14004 tc_bafaade3, TypeM>, Enc_be32a5 {
14005 let Inst{7-5} = 0b000;
14006 let Inst{13-13} = 0b0;
14007 let Inst{31-21} = 0b11100101010;
14008 let prefersSlot3 = 1;
14009 }
14010 def M2_hmmpyh_rs1 : HInst<
14011 (outs IntRegs:$Rd32),
14012 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14013 "$Rd32 = mpy($Rs32,$Rt32.h):<<1:rnd:sat",
14014 tc_bafaade3, TypeM>, Enc_5ab2be {
14015 let Inst{7-5} = 0b100;
14016 let Inst{13-13} = 0b0;
14017 let Inst{31-21} = 0b11101101101;
14018 let hasNewValue = 1;
14019 let opNewValue = 0;
14020 let prefersSlot3 = 1;
14021 let Defs = [USR_OVF];
14022 }
14023 def M2_hmmpyh_s1 : HInst<
14024 (outs IntRegs:$Rd32),
14025 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14026 "$Rd32 = mpy($Rs32,$Rt32.h):<<1:sat",
14027 tc_bafaade3, TypeM>, Enc_5ab2be {
14028 let Inst{7-5} = 0b000;
14029 let Inst{13-13} = 0b0;
14030 let Inst{31-21} = 0b11101101101;
14031 let hasNewValue = 1;
14032 let opNewValue = 0;
14033 let prefersSlot3 = 1;
14034 let Defs = [USR_OVF];
14035 }
14036 def M2_hmmpyl_rs1 : HInst<
14037 (outs IntRegs:$Rd32),
14038 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14039 "$Rd32 = mpy($Rs32,$Rt32.l):<<1:rnd:sat",
14040 tc_bafaade3, TypeM>, Enc_5ab2be {
14041 let Inst{7-5} = 0b100;
14042 let Inst{13-13} = 0b0;
14043 let Inst{31-21} = 0b11101101111;
14044 let hasNewValue = 1;
14045 let opNewValue = 0;
14046 let prefersSlot3 = 1;
14047 let Defs = [USR_OVF];
14048 }
14049 def M2_hmmpyl_s1 : HInst<
14050 (outs IntRegs:$Rd32),
14051 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14052 "$Rd32 = mpy($Rs32,$Rt32.l):<<1:sat",
14053 tc_bafaade3, TypeM>, Enc_5ab2be {
14054 let Inst{7-5} = 0b001;
14055 let Inst{13-13} = 0b0;
14056 let Inst{31-21} = 0b11101101101;
14057 let hasNewValue = 1;
14058 let opNewValue = 0;
14059 let prefersSlot3 = 1;
14060 let Defs = [USR_OVF];
14061 }
14062 def M2_maci : HInst<
14063 (outs IntRegs:$Rx32),
14064 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14065 "$Rx32 += mpyi($Rs32,$Rt32)",
14066 tc_d773585a, TypeM>, Enc_2ae154, ImmRegRel {
14067 let Inst{7-5} = 0b000;
14068 let Inst{13-13} = 0b0;
14069 let Inst{31-21} = 0b11101111000;
14070 let hasNewValue = 1;
14071 let opNewValue = 0;
14072 let prefersSlot3 = 1;
14073 let CextOpcode = "M2_maci";
14074 let InputType = "reg";
14075 let Constraints = "$Rx32 = $Rx32in";
14076 }
14077 def M2_macsin : HInst<
14078 (outs IntRegs:$Rx32),
14079 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u32_0Imm:$Ii),
14080 "$Rx32 -= mpyi($Rs32,#$Ii)",
14081 tc_05d3a09b, TypeM>, Enc_c90aca {
14082 let Inst{13-13} = 0b0;
14083 let Inst{31-21} = 0b11100001100;
14084 let hasNewValue = 1;
14085 let opNewValue = 0;
14086 let prefersSlot3 = 1;
14087 let InputType = "imm";
14088 let isExtendable = 1;
14089 let opExtendable = 3;
14090 let isExtentSigned = 0;
14091 let opExtentBits = 8;
14092 let opExtentAlign = 0;
14093 let Constraints = "$Rx32 = $Rx32in";
14094 }
14095 def M2_macsip : HInst<
14096 (outs IntRegs:$Rx32),
14097 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u32_0Imm:$Ii),
14098 "$Rx32 += mpyi($Rs32,#$Ii)",
14099 tc_05d3a09b, TypeM>, Enc_c90aca, ImmRegRel {
14100 let Inst{13-13} = 0b0;
14101 let Inst{31-21} = 0b11100001000;
14102 let hasNewValue = 1;
14103 let opNewValue = 0;
14104 let prefersSlot3 = 1;
14105 let CextOpcode = "M2_maci";
14106 let InputType = "imm";
14107 let isExtendable = 1;
14108 let opExtendable = 3;
14109 let isExtentSigned = 0;
14110 let opExtentBits = 8;
14111 let opExtentAlign = 0;
14112 let Constraints = "$Rx32 = $Rx32in";
14113 }
14114 def M2_mmachs_rs0 : HInst<
14115 (outs DoubleRegs:$Rxx32),
14116 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14117 "$Rxx32 += vmpywoh($Rss32,$Rtt32):rnd:sat",
14118 tc_d773585a, TypeM>, Enc_88c16c {
14119 let Inst{7-5} = 0b111;
14120 let Inst{13-13} = 0b0;
14121 let Inst{31-21} = 0b11101010001;
14122 let prefersSlot3 = 1;
14123 let Defs = [USR_OVF];
14124 let Constraints = "$Rxx32 = $Rxx32in";
14125 }
14126 def M2_mmachs_rs1 : HInst<
14127 (outs DoubleRegs:$Rxx32),
14128 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14129 "$Rxx32 += vmpywoh($Rss32,$Rtt32):<<1:rnd:sat",
14130 tc_d773585a, TypeM>, Enc_88c16c {
14131 let Inst{7-5} = 0b111;
14132 let Inst{13-13} = 0b0;
14133 let Inst{31-21} = 0b11101010101;
14134 let prefersSlot3 = 1;
14135 let Defs = [USR_OVF];
14136 let Constraints = "$Rxx32 = $Rxx32in";
14137 }
14138 def M2_mmachs_s0 : HInst<
14139 (outs DoubleRegs:$Rxx32),
14140 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14141 "$Rxx32 += vmpywoh($Rss32,$Rtt32):sat",
14142 tc_d773585a, TypeM>, Enc_88c16c {
14143 let Inst{7-5} = 0b111;
14144 let Inst{13-13} = 0b0;
14145 let Inst{31-21} = 0b11101010000;
14146 let prefersSlot3 = 1;
14147 let Defs = [USR_OVF];
14148 let Constraints = "$Rxx32 = $Rxx32in";
14149 }
14150 def M2_mmachs_s1 : HInst<
14151 (outs DoubleRegs:$Rxx32),
14152 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14153 "$Rxx32 += vmpywoh($Rss32,$Rtt32):<<1:sat",
14154 tc_d773585a, TypeM>, Enc_88c16c {
14155 let Inst{7-5} = 0b111;
14156 let Inst{13-13} = 0b0;
14157 let Inst{31-21} = 0b11101010100;
14158 let prefersSlot3 = 1;
14159 let Defs = [USR_OVF];
14160 let Constraints = "$Rxx32 = $Rxx32in";
14161 }
14162 def M2_mmacls_rs0 : HInst<
14163 (outs DoubleRegs:$Rxx32),
14164 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14165 "$Rxx32 += vmpyweh($Rss32,$Rtt32):rnd:sat",
14166 tc_d773585a, TypeM>, Enc_88c16c {
14167 let Inst{7-5} = 0b101;
14168 let Inst{13-13} = 0b0;
14169 let Inst{31-21} = 0b11101010001;
14170 let prefersSlot3 = 1;
14171 let Defs = [USR_OVF];
14172 let Constraints = "$Rxx32 = $Rxx32in";
14173 }
14174 def M2_mmacls_rs1 : HInst<
14175 (outs DoubleRegs:$Rxx32),
14176 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14177 "$Rxx32 += vmpyweh($Rss32,$Rtt32):<<1:rnd:sat",
14178 tc_d773585a, TypeM>, Enc_88c16c {
14179 let Inst{7-5} = 0b101;
14180 let Inst{13-13} = 0b0;
14181 let Inst{31-21} = 0b11101010101;
14182 let prefersSlot3 = 1;
14183 let Defs = [USR_OVF];
14184 let Constraints = "$Rxx32 = $Rxx32in";
14185 }
14186 def M2_mmacls_s0 : HInst<
14187 (outs DoubleRegs:$Rxx32),
14188 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14189 "$Rxx32 += vmpyweh($Rss32,$Rtt32):sat",
14190 tc_d773585a, TypeM>, Enc_88c16c {
14191 let Inst{7-5} = 0b101;
14192 let Inst{13-13} = 0b0;
14193 let Inst{31-21} = 0b11101010000;
14194 let prefersSlot3 = 1;
14195 let Defs = [USR_OVF];
14196 let Constraints = "$Rxx32 = $Rxx32in";
14197 }
14198 def M2_mmacls_s1 : HInst<
14199 (outs DoubleRegs:$Rxx32),
14200 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14201 "$Rxx32 += vmpyweh($Rss32,$Rtt32):<<1:sat",
14202 tc_d773585a, TypeM>, Enc_88c16c {
14203 let Inst{7-5} = 0b101;
14204 let Inst{13-13} = 0b0;
14205 let Inst{31-21} = 0b11101010100;
14206 let prefersSlot3 = 1;
14207 let Defs = [USR_OVF];
14208 let Constraints = "$Rxx32 = $Rxx32in";
14209 }
14210 def M2_mmacuhs_rs0 : HInst<
14211 (outs DoubleRegs:$Rxx32),
14212 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14213 "$Rxx32 += vmpywouh($Rss32,$Rtt32):rnd:sat",
14214 tc_d773585a, TypeM>, Enc_88c16c {
14215 let Inst{7-5} = 0b111;
14216 let Inst{13-13} = 0b0;
14217 let Inst{31-21} = 0b11101010011;
14218 let prefersSlot3 = 1;
14219 let Defs = [USR_OVF];
14220 let Constraints = "$Rxx32 = $Rxx32in";
14221 }
14222 def M2_mmacuhs_rs1 : HInst<
14223 (outs DoubleRegs:$Rxx32),
14224 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14225 "$Rxx32 += vmpywouh($Rss32,$Rtt32):<<1:rnd:sat",
14226 tc_d773585a, TypeM>, Enc_88c16c {
14227 let Inst{7-5} = 0b111;
14228 let Inst{13-13} = 0b0;
14229 let Inst{31-21} = 0b11101010111;
14230 let prefersSlot3 = 1;
14231 let Defs = [USR_OVF];
14232 let Constraints = "$Rxx32 = $Rxx32in";
14233 }
14234 def M2_mmacuhs_s0 : HInst<
14235 (outs DoubleRegs:$Rxx32),
14236 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14237 "$Rxx32 += vmpywouh($Rss32,$Rtt32):sat",
14238 tc_d773585a, TypeM>, Enc_88c16c {
14239 let Inst{7-5} = 0b111;
14240 let Inst{13-13} = 0b0;
14241 let Inst{31-21} = 0b11101010010;
14242 let prefersSlot3 = 1;
14243 let Defs = [USR_OVF];
14244 let Constraints = "$Rxx32 = $Rxx32in";
14245 }
14246 def M2_mmacuhs_s1 : HInst<
14247 (outs DoubleRegs:$Rxx32),
14248 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14249 "$Rxx32 += vmpywouh($Rss32,$Rtt32):<<1:sat",
14250 tc_d773585a, TypeM>, Enc_88c16c {
14251 let Inst{7-5} = 0b111;
14252 let Inst{13-13} = 0b0;
14253 let Inst{31-21} = 0b11101010110;
14254 let prefersSlot3 = 1;
14255 let Defs = [USR_OVF];
14256 let Constraints = "$Rxx32 = $Rxx32in";
14257 }
14258 def M2_mmaculs_rs0 : HInst<
14259 (outs DoubleRegs:$Rxx32),
14260 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14261 "$Rxx32 += vmpyweuh($Rss32,$Rtt32):rnd:sat",
14262 tc_d773585a, TypeM>, Enc_88c16c {
14263 let Inst{7-5} = 0b101;
14264 let Inst{13-13} = 0b0;
14265 let Inst{31-21} = 0b11101010011;
14266 let prefersSlot3 = 1;
14267 let Defs = [USR_OVF];
14268 let Constraints = "$Rxx32 = $Rxx32in";
14269 }
14270 def M2_mmaculs_rs1 : HInst<
14271 (outs DoubleRegs:$Rxx32),
14272 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14273 "$Rxx32 += vmpyweuh($Rss32,$Rtt32):<<1:rnd:sat",
14274 tc_d773585a, TypeM>, Enc_88c16c {
14275 let Inst{7-5} = 0b101;
14276 let Inst{13-13} = 0b0;
14277 let Inst{31-21} = 0b11101010111;
14278 let prefersSlot3 = 1;
14279 let Defs = [USR_OVF];
14280 let Constraints = "$Rxx32 = $Rxx32in";
14281 }
14282 def M2_mmaculs_s0 : HInst<
14283 (outs DoubleRegs:$Rxx32),
14284 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14285 "$Rxx32 += vmpyweuh($Rss32,$Rtt32):sat",
14286 tc_d773585a, TypeM>, Enc_88c16c {
14287 let Inst{7-5} = 0b101;
14288 let Inst{13-13} = 0b0;
14289 let Inst{31-21} = 0b11101010010;
14290 let prefersSlot3 = 1;
14291 let Defs = [USR_OVF];
14292 let Constraints = "$Rxx32 = $Rxx32in";
14293 }
14294 def M2_mmaculs_s1 : HInst<
14295 (outs DoubleRegs:$Rxx32),
14296 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14297 "$Rxx32 += vmpyweuh($Rss32,$Rtt32):<<1:sat",
14298 tc_d773585a, TypeM>, Enc_88c16c {
14299 let Inst{7-5} = 0b101;
14300 let Inst{13-13} = 0b0;
14301 let Inst{31-21} = 0b11101010110;
14302 let prefersSlot3 = 1;
14303 let Defs = [USR_OVF];
14304 let Constraints = "$Rxx32 = $Rxx32in";
14305 }
14306 def M2_mmpyh_rs0 : HInst<
14307 (outs DoubleRegs:$Rdd32),
14308 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14309 "$Rdd32 = vmpywoh($Rss32,$Rtt32):rnd:sat",
14310 tc_bafaade3, TypeM>, Enc_a56825 {
14311 let Inst{7-5} = 0b111;
14312 let Inst{13-13} = 0b0;
14313 let Inst{31-21} = 0b11101000001;
14314 let prefersSlot3 = 1;
14315 let Defs = [USR_OVF];
14316 }
14317 def M2_mmpyh_rs1 : HInst<
14318 (outs DoubleRegs:$Rdd32),
14319 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14320 "$Rdd32 = vmpywoh($Rss32,$Rtt32):<<1:rnd:sat",
14321 tc_bafaade3, TypeM>, Enc_a56825 {
14322 let Inst{7-5} = 0b111;
14323 let Inst{13-13} = 0b0;
14324 let Inst{31-21} = 0b11101000101;
14325 let prefersSlot3 = 1;
14326 let Defs = [USR_OVF];
14327 }
14328 def M2_mmpyh_s0 : HInst<
14329 (outs DoubleRegs:$Rdd32),
14330 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14331 "$Rdd32 = vmpywoh($Rss32,$Rtt32):sat",
14332 tc_bafaade3, TypeM>, Enc_a56825 {
14333 let Inst{7-5} = 0b111;
14334 let Inst{13-13} = 0b0;
14335 let Inst{31-21} = 0b11101000000;
14336 let prefersSlot3 = 1;
14337 let Defs = [USR_OVF];
14338 }
14339 def M2_mmpyh_s1 : HInst<
14340 (outs DoubleRegs:$Rdd32),
14341 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14342 "$Rdd32 = vmpywoh($Rss32,$Rtt32):<<1:sat",
14343 tc_bafaade3, TypeM>, Enc_a56825 {
14344 let Inst{7-5} = 0b111;
14345 let Inst{13-13} = 0b0;
14346 let Inst{31-21} = 0b11101000100;
14347 let prefersSlot3 = 1;
14348 let Defs = [USR_OVF];
14349 }
14350 def M2_mmpyl_rs0 : HInst<
14351 (outs DoubleRegs:$Rdd32),
14352 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14353 "$Rdd32 = vmpyweh($Rss32,$Rtt32):rnd:sat",
14354 tc_bafaade3, TypeM>, Enc_a56825 {
14355 let Inst{7-5} = 0b101;
14356 let Inst{13-13} = 0b0;
14357 let Inst{31-21} = 0b11101000001;
14358 let prefersSlot3 = 1;
14359 let Defs = [USR_OVF];
14360 }
14361 def M2_mmpyl_rs1 : HInst<
14362 (outs DoubleRegs:$Rdd32),
14363 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14364 "$Rdd32 = vmpyweh($Rss32,$Rtt32):<<1:rnd:sat",
14365 tc_bafaade3, TypeM>, Enc_a56825 {
14366 let Inst{7-5} = 0b101;
14367 let Inst{13-13} = 0b0;
14368 let Inst{31-21} = 0b11101000101;
14369 let prefersSlot3 = 1;
14370 let Defs = [USR_OVF];
14371 }
14372 def M2_mmpyl_s0 : HInst<
14373 (outs DoubleRegs:$Rdd32),
14374 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14375 "$Rdd32 = vmpyweh($Rss32,$Rtt32):sat",
14376 tc_bafaade3, TypeM>, Enc_a56825 {
14377 let Inst{7-5} = 0b101;
14378 let Inst{13-13} = 0b0;
14379 let Inst{31-21} = 0b11101000000;
14380 let prefersSlot3 = 1;
14381 let Defs = [USR_OVF];
14382 }
14383 def M2_mmpyl_s1 : HInst<
14384 (outs DoubleRegs:$Rdd32),
14385 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14386 "$Rdd32 = vmpyweh($Rss32,$Rtt32):<<1:sat",
14387 tc_bafaade3, TypeM>, Enc_a56825 {
14388 let Inst{7-5} = 0b101;
14389 let Inst{13-13} = 0b0;
14390 let Inst{31-21} = 0b11101000100;
14391 let prefersSlot3 = 1;
14392 let Defs = [USR_OVF];
14393 }
14394 def M2_mmpyuh_rs0 : HInst<
14395 (outs DoubleRegs:$Rdd32),
14396 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14397 "$Rdd32 = vmpywouh($Rss32,$Rtt32):rnd:sat",
14398 tc_bafaade3, TypeM>, Enc_a56825 {
14399 let Inst{7-5} = 0b111;
14400 let Inst{13-13} = 0b0;
14401 let Inst{31-21} = 0b11101000011;
14402 let prefersSlot3 = 1;
14403 let Defs = [USR_OVF];
14404 }
14405 def M2_mmpyuh_rs1 : HInst<
14406 (outs DoubleRegs:$Rdd32),
14407 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14408 "$Rdd32 = vmpywouh($Rss32,$Rtt32):<<1:rnd:sat",
14409 tc_bafaade3, TypeM>, Enc_a56825 {
14410 let Inst{7-5} = 0b111;
14411 let Inst{13-13} = 0b0;
14412 let Inst{31-21} = 0b11101000111;
14413 let prefersSlot3 = 1;
14414 let Defs = [USR_OVF];
14415 }
14416 def M2_mmpyuh_s0 : HInst<
14417 (outs DoubleRegs:$Rdd32),
14418 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14419 "$Rdd32 = vmpywouh($Rss32,$Rtt32):sat",
14420 tc_bafaade3, TypeM>, Enc_a56825 {
14421 let Inst{7-5} = 0b111;
14422 let Inst{13-13} = 0b0;
14423 let Inst{31-21} = 0b11101000010;
14424 let prefersSlot3 = 1;
14425 let Defs = [USR_OVF];
14426 }
14427 def M2_mmpyuh_s1 : HInst<
14428 (outs DoubleRegs:$Rdd32),
14429 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14430 "$Rdd32 = vmpywouh($Rss32,$Rtt32):<<1:sat",
14431 tc_bafaade3, TypeM>, Enc_a56825 {
14432 let Inst{7-5} = 0b111;
14433 let Inst{13-13} = 0b0;
14434 let Inst{31-21} = 0b11101000110;
14435 let prefersSlot3 = 1;
14436 let Defs = [USR_OVF];
14437 }
14438 def M2_mmpyul_rs0 : HInst<
14439 (outs DoubleRegs:$Rdd32),
14440 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14441 "$Rdd32 = vmpyweuh($Rss32,$Rtt32):rnd:sat",
14442 tc_bafaade3, TypeM>, Enc_a56825 {
14443 let Inst{7-5} = 0b101;
14444 let Inst{13-13} = 0b0;
14445 let Inst{31-21} = 0b11101000011;
14446 let prefersSlot3 = 1;
14447 let Defs = [USR_OVF];
14448 }
14449 def M2_mmpyul_rs1 : HInst<
14450 (outs DoubleRegs:$Rdd32),
14451 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14452 "$Rdd32 = vmpyweuh($Rss32,$Rtt32):<<1:rnd:sat",
14453 tc_bafaade3, TypeM>, Enc_a56825 {
14454 let Inst{7-5} = 0b101;
14455 let Inst{13-13} = 0b0;
14456 let Inst{31-21} = 0b11101000111;
14457 let prefersSlot3 = 1;
14458 let Defs = [USR_OVF];
14459 }
14460 def M2_mmpyul_s0 : HInst<
14461 (outs DoubleRegs:$Rdd32),
14462 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14463 "$Rdd32 = vmpyweuh($Rss32,$Rtt32):sat",
14464 tc_bafaade3, TypeM>, Enc_a56825 {
14465 let Inst{7-5} = 0b101;
14466 let Inst{13-13} = 0b0;
14467 let Inst{31-21} = 0b11101000010;
14468 let prefersSlot3 = 1;
14469 let Defs = [USR_OVF];
14470 }
14471 def M2_mmpyul_s1 : HInst<
14472 (outs DoubleRegs:$Rdd32),
14473 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
14474 "$Rdd32 = vmpyweuh($Rss32,$Rtt32):<<1:sat",
14475 tc_bafaade3, TypeM>, Enc_a56825 {
14476 let Inst{7-5} = 0b101;
14477 let Inst{13-13} = 0b0;
14478 let Inst{31-21} = 0b11101000110;
14479 let prefersSlot3 = 1;
14480 let Defs = [USR_OVF];
14481 }
14482 def M2_mnaci : HInst<
14483 (outs IntRegs:$Rx32),
14484 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14485 "$Rx32 -= mpyi($Rs32,$Rt32)",
14486 tc_bdceeac1, TypeM>, Enc_2ae154, Requires<[HasV66]> {
14487 let Inst{7-5} = 0b000;
14488 let Inst{13-13} = 0b0;
14489 let Inst{31-21} = 0b11101111100;
14490 let hasNewValue = 1;
14491 let opNewValue = 0;
14492 let prefersSlot3 = 1;
14493 let Constraints = "$Rx32 = $Rx32in";
14494 }
14495 def M2_mpy_acc_hh_s0 : HInst<
14496 (outs IntRegs:$Rx32),
14497 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14498 "$Rx32 += mpy($Rs32.h,$Rt32.h)",
14499 tc_d773585a, TypeM>, Enc_2ae154 {
14500 let Inst{7-5} = 0b011;
14501 let Inst{13-13} = 0b0;
14502 let Inst{31-21} = 0b11101110000;
14503 let hasNewValue = 1;
14504 let opNewValue = 0;
14505 let prefersSlot3 = 1;
14506 let Constraints = "$Rx32 = $Rx32in";
14507 }
14508 def M2_mpy_acc_hh_s1 : HInst<
14509 (outs IntRegs:$Rx32),
14510 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14511 "$Rx32 += mpy($Rs32.h,$Rt32.h):<<1",
14512 tc_d773585a, TypeM>, Enc_2ae154 {
14513 let Inst{7-5} = 0b011;
14514 let Inst{13-13} = 0b0;
14515 let Inst{31-21} = 0b11101110100;
14516 let hasNewValue = 1;
14517 let opNewValue = 0;
14518 let prefersSlot3 = 1;
14519 let Constraints = "$Rx32 = $Rx32in";
14520 }
14521 def M2_mpy_acc_hl_s0 : HInst<
14522 (outs IntRegs:$Rx32),
14523 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14524 "$Rx32 += mpy($Rs32.h,$Rt32.l)",
14525 tc_d773585a, TypeM>, Enc_2ae154 {
14526 let Inst{7-5} = 0b010;
14527 let Inst{13-13} = 0b0;
14528 let Inst{31-21} = 0b11101110000;
14529 let hasNewValue = 1;
14530 let opNewValue = 0;
14531 let prefersSlot3 = 1;
14532 let Constraints = "$Rx32 = $Rx32in";
14533 }
14534 def M2_mpy_acc_hl_s1 : HInst<
14535 (outs IntRegs:$Rx32),
14536 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14537 "$Rx32 += mpy($Rs32.h,$Rt32.l):<<1",
14538 tc_d773585a, TypeM>, Enc_2ae154 {
14539 let Inst{7-5} = 0b010;
14540 let Inst{13-13} = 0b0;
14541 let Inst{31-21} = 0b11101110100;
14542 let hasNewValue = 1;
14543 let opNewValue = 0;
14544 let prefersSlot3 = 1;
14545 let Constraints = "$Rx32 = $Rx32in";
14546 }
14547 def M2_mpy_acc_lh_s0 : HInst<
14548 (outs IntRegs:$Rx32),
14549 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14550 "$Rx32 += mpy($Rs32.l,$Rt32.h)",
14551 tc_d773585a, TypeM>, Enc_2ae154 {
14552 let Inst{7-5} = 0b001;
14553 let Inst{13-13} = 0b0;
14554 let Inst{31-21} = 0b11101110000;
14555 let hasNewValue = 1;
14556 let opNewValue = 0;
14557 let prefersSlot3 = 1;
14558 let Constraints = "$Rx32 = $Rx32in";
14559 }
14560 def M2_mpy_acc_lh_s1 : HInst<
14561 (outs IntRegs:$Rx32),
14562 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14563 "$Rx32 += mpy($Rs32.l,$Rt32.h):<<1",
14564 tc_d773585a, TypeM>, Enc_2ae154 {
14565 let Inst{7-5} = 0b001;
14566 let Inst{13-13} = 0b0;
14567 let Inst{31-21} = 0b11101110100;
14568 let hasNewValue = 1;
14569 let opNewValue = 0;
14570 let prefersSlot3 = 1;
14571 let Constraints = "$Rx32 = $Rx32in";
14572 }
14573 def M2_mpy_acc_ll_s0 : HInst<
14574 (outs IntRegs:$Rx32),
14575 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14576 "$Rx32 += mpy($Rs32.l,$Rt32.l)",
14577 tc_d773585a, TypeM>, Enc_2ae154 {
14578 let Inst{7-5} = 0b000;
14579 let Inst{13-13} = 0b0;
14580 let Inst{31-21} = 0b11101110000;
14581 let hasNewValue = 1;
14582 let opNewValue = 0;
14583 let prefersSlot3 = 1;
14584 let Constraints = "$Rx32 = $Rx32in";
14585 }
14586 def M2_mpy_acc_ll_s1 : HInst<
14587 (outs IntRegs:$Rx32),
14588 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14589 "$Rx32 += mpy($Rs32.l,$Rt32.l):<<1",
14590 tc_d773585a, TypeM>, Enc_2ae154 {
14591 let Inst{7-5} = 0b000;
14592 let Inst{13-13} = 0b0;
14593 let Inst{31-21} = 0b11101110100;
14594 let hasNewValue = 1;
14595 let opNewValue = 0;
14596 let prefersSlot3 = 1;
14597 let Constraints = "$Rx32 = $Rx32in";
14598 }
14599 def M2_mpy_acc_sat_hh_s0 : HInst<
14600 (outs IntRegs:$Rx32),
14601 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14602 "$Rx32 += mpy($Rs32.h,$Rt32.h):sat",
14603 tc_d773585a, TypeM>, Enc_2ae154 {
14604 let Inst{7-5} = 0b111;
14605 let Inst{13-13} = 0b0;
14606 let Inst{31-21} = 0b11101110000;
14607 let hasNewValue = 1;
14608 let opNewValue = 0;
14609 let prefersSlot3 = 1;
14610 let Defs = [USR_OVF];
14611 let Constraints = "$Rx32 = $Rx32in";
14612 }
14613 def M2_mpy_acc_sat_hh_s1 : HInst<
14614 (outs IntRegs:$Rx32),
14615 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14616 "$Rx32 += mpy($Rs32.h,$Rt32.h):<<1:sat",
14617 tc_d773585a, TypeM>, Enc_2ae154 {
14618 let Inst{7-5} = 0b111;
14619 let Inst{13-13} = 0b0;
14620 let Inst{31-21} = 0b11101110100;
14621 let hasNewValue = 1;
14622 let opNewValue = 0;
14623 let prefersSlot3 = 1;
14624 let Defs = [USR_OVF];
14625 let Constraints = "$Rx32 = $Rx32in";
14626 }
14627 def M2_mpy_acc_sat_hl_s0 : HInst<
14628 (outs IntRegs:$Rx32),
14629 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14630 "$Rx32 += mpy($Rs32.h,$Rt32.l):sat",
14631 tc_d773585a, TypeM>, Enc_2ae154 {
14632 let Inst{7-5} = 0b110;
14633 let Inst{13-13} = 0b0;
14634 let Inst{31-21} = 0b11101110000;
14635 let hasNewValue = 1;
14636 let opNewValue = 0;
14637 let prefersSlot3 = 1;
14638 let Defs = [USR_OVF];
14639 let Constraints = "$Rx32 = $Rx32in";
14640 }
14641 def M2_mpy_acc_sat_hl_s1 : HInst<
14642 (outs IntRegs:$Rx32),
14643 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14644 "$Rx32 += mpy($Rs32.h,$Rt32.l):<<1:sat",
14645 tc_d773585a, TypeM>, Enc_2ae154 {
14646 let Inst{7-5} = 0b110;
14647 let Inst{13-13} = 0b0;
14648 let Inst{31-21} = 0b11101110100;
14649 let hasNewValue = 1;
14650 let opNewValue = 0;
14651 let prefersSlot3 = 1;
14652 let Defs = [USR_OVF];
14653 let Constraints = "$Rx32 = $Rx32in";
14654 }
14655 def M2_mpy_acc_sat_lh_s0 : HInst<
14656 (outs IntRegs:$Rx32),
14657 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14658 "$Rx32 += mpy($Rs32.l,$Rt32.h):sat",
14659 tc_d773585a, TypeM>, Enc_2ae154 {
14660 let Inst{7-5} = 0b101;
14661 let Inst{13-13} = 0b0;
14662 let Inst{31-21} = 0b11101110000;
14663 let hasNewValue = 1;
14664 let opNewValue = 0;
14665 let prefersSlot3 = 1;
14666 let Defs = [USR_OVF];
14667 let Constraints = "$Rx32 = $Rx32in";
14668 }
14669 def M2_mpy_acc_sat_lh_s1 : HInst<
14670 (outs IntRegs:$Rx32),
14671 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14672 "$Rx32 += mpy($Rs32.l,$Rt32.h):<<1:sat",
14673 tc_d773585a, TypeM>, Enc_2ae154 {
14674 let Inst{7-5} = 0b101;
14675 let Inst{13-13} = 0b0;
14676 let Inst{31-21} = 0b11101110100;
14677 let hasNewValue = 1;
14678 let opNewValue = 0;
14679 let prefersSlot3 = 1;
14680 let Defs = [USR_OVF];
14681 let Constraints = "$Rx32 = $Rx32in";
14682 }
14683 def M2_mpy_acc_sat_ll_s0 : HInst<
14684 (outs IntRegs:$Rx32),
14685 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14686 "$Rx32 += mpy($Rs32.l,$Rt32.l):sat",
14687 tc_d773585a, TypeM>, Enc_2ae154 {
14688 let Inst{7-5} = 0b100;
14689 let Inst{13-13} = 0b0;
14690 let Inst{31-21} = 0b11101110000;
14691 let hasNewValue = 1;
14692 let opNewValue = 0;
14693 let prefersSlot3 = 1;
14694 let Defs = [USR_OVF];
14695 let Constraints = "$Rx32 = $Rx32in";
14696 }
14697 def M2_mpy_acc_sat_ll_s1 : HInst<
14698 (outs IntRegs:$Rx32),
14699 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14700 "$Rx32 += mpy($Rs32.l,$Rt32.l):<<1:sat",
14701 tc_d773585a, TypeM>, Enc_2ae154 {
14702 let Inst{7-5} = 0b100;
14703 let Inst{13-13} = 0b0;
14704 let Inst{31-21} = 0b11101110100;
14705 let hasNewValue = 1;
14706 let opNewValue = 0;
14707 let prefersSlot3 = 1;
14708 let Defs = [USR_OVF];
14709 let Constraints = "$Rx32 = $Rx32in";
14710 }
14711 def M2_mpy_hh_s0 : HInst<
14712 (outs IntRegs:$Rd32),
14713 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14714 "$Rd32 = mpy($Rs32.h,$Rt32.h)",
14715 tc_bafaade3, TypeM>, Enc_5ab2be {
14716 let Inst{7-5} = 0b011;
14717 let Inst{13-13} = 0b0;
14718 let Inst{31-21} = 0b11101100000;
14719 let hasNewValue = 1;
14720 let opNewValue = 0;
14721 let prefersSlot3 = 1;
14722 }
14723 def M2_mpy_hh_s1 : HInst<
14724 (outs IntRegs:$Rd32),
14725 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14726 "$Rd32 = mpy($Rs32.h,$Rt32.h):<<1",
14727 tc_bafaade3, TypeM>, Enc_5ab2be {
14728 let Inst{7-5} = 0b011;
14729 let Inst{13-13} = 0b0;
14730 let Inst{31-21} = 0b11101100100;
14731 let hasNewValue = 1;
14732 let opNewValue = 0;
14733 let prefersSlot3 = 1;
14734 }
14735 def M2_mpy_hl_s0 : HInst<
14736 (outs IntRegs:$Rd32),
14737 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14738 "$Rd32 = mpy($Rs32.h,$Rt32.l)",
14739 tc_bafaade3, TypeM>, Enc_5ab2be {
14740 let Inst{7-5} = 0b010;
14741 let Inst{13-13} = 0b0;
14742 let Inst{31-21} = 0b11101100000;
14743 let hasNewValue = 1;
14744 let opNewValue = 0;
14745 let prefersSlot3 = 1;
14746 }
14747 def M2_mpy_hl_s1 : HInst<
14748 (outs IntRegs:$Rd32),
14749 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14750 "$Rd32 = mpy($Rs32.h,$Rt32.l):<<1",
14751 tc_bafaade3, TypeM>, Enc_5ab2be {
14752 let Inst{7-5} = 0b010;
14753 let Inst{13-13} = 0b0;
14754 let Inst{31-21} = 0b11101100100;
14755 let hasNewValue = 1;
14756 let opNewValue = 0;
14757 let prefersSlot3 = 1;
14758 }
14759 def M2_mpy_lh_s0 : HInst<
14760 (outs IntRegs:$Rd32),
14761 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14762 "$Rd32 = mpy($Rs32.l,$Rt32.h)",
14763 tc_bafaade3, TypeM>, Enc_5ab2be {
14764 let Inst{7-5} = 0b001;
14765 let Inst{13-13} = 0b0;
14766 let Inst{31-21} = 0b11101100000;
14767 let hasNewValue = 1;
14768 let opNewValue = 0;
14769 let prefersSlot3 = 1;
14770 }
14771 def M2_mpy_lh_s1 : HInst<
14772 (outs IntRegs:$Rd32),
14773 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14774 "$Rd32 = mpy($Rs32.l,$Rt32.h):<<1",
14775 tc_bafaade3, TypeM>, Enc_5ab2be {
14776 let Inst{7-5} = 0b001;
14777 let Inst{13-13} = 0b0;
14778 let Inst{31-21} = 0b11101100100;
14779 let hasNewValue = 1;
14780 let opNewValue = 0;
14781 let prefersSlot3 = 1;
14782 }
14783 def M2_mpy_ll_s0 : HInst<
14784 (outs IntRegs:$Rd32),
14785 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14786 "$Rd32 = mpy($Rs32.l,$Rt32.l)",
14787 tc_bafaade3, TypeM>, Enc_5ab2be {
14788 let Inst{7-5} = 0b000;
14789 let Inst{13-13} = 0b0;
14790 let Inst{31-21} = 0b11101100000;
14791 let hasNewValue = 1;
14792 let opNewValue = 0;
14793 let prefersSlot3 = 1;
14794 }
14795 def M2_mpy_ll_s1 : HInst<
14796 (outs IntRegs:$Rd32),
14797 (ins IntRegs:$Rs32, IntRegs:$Rt32),
14798 "$Rd32 = mpy($Rs32.l,$Rt32.l):<<1",
14799 tc_bafaade3, TypeM>, Enc_5ab2be {
14800 let Inst{7-5} = 0b000;
14801 let Inst{13-13} = 0b0;
14802 let Inst{31-21} = 0b11101100100;
14803 let hasNewValue = 1;
14804 let opNewValue = 0;
14805 let prefersSlot3 = 1;
14806 }
14807 def M2_mpy_nac_hh_s0 : HInst<
14808 (outs IntRegs:$Rx32),
14809 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14810 "$Rx32 -= mpy($Rs32.h,$Rt32.h)",
14811 tc_d773585a, TypeM>, Enc_2ae154 {
14812 let Inst{7-5} = 0b011;
14813 let Inst{13-13} = 0b0;
14814 let Inst{31-21} = 0b11101110001;
14815 let hasNewValue = 1;
14816 let opNewValue = 0;
14817 let prefersSlot3 = 1;
14818 let Constraints = "$Rx32 = $Rx32in";
14819 }
14820 def M2_mpy_nac_hh_s1 : HInst<
14821 (outs IntRegs:$Rx32),
14822 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14823 "$Rx32 -= mpy($Rs32.h,$Rt32.h):<<1",
14824 tc_d773585a, TypeM>, Enc_2ae154 {
14825 let Inst{7-5} = 0b011;
14826 let Inst{13-13} = 0b0;
14827 let Inst{31-21} = 0b11101110101;
14828 let hasNewValue = 1;
14829 let opNewValue = 0;
14830 let prefersSlot3 = 1;
14831 let Constraints = "$Rx32 = $Rx32in";
14832 }
14833 def M2_mpy_nac_hl_s0 : HInst<
14834 (outs IntRegs:$Rx32),
14835 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14836 "$Rx32 -= mpy($Rs32.h,$Rt32.l)",
14837 tc_d773585a, TypeM>, Enc_2ae154 {
14838 let Inst{7-5} = 0b010;
14839 let Inst{13-13} = 0b0;
14840 let Inst{31-21} = 0b11101110001;
14841 let hasNewValue = 1;
14842 let opNewValue = 0;
14843 let prefersSlot3 = 1;
14844 let Constraints = "$Rx32 = $Rx32in";
14845 }
14846 def M2_mpy_nac_hl_s1 : HInst<
14847 (outs IntRegs:$Rx32),
14848 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14849 "$Rx32 -= mpy($Rs32.h,$Rt32.l):<<1",
14850 tc_d773585a, TypeM>, Enc_2ae154 {
14851 let Inst{7-5} = 0b010;
14852 let Inst{13-13} = 0b0;
14853 let Inst{31-21} = 0b11101110101;
14854 let hasNewValue = 1;
14855 let opNewValue = 0;
14856 let prefersSlot3 = 1;
14857 let Constraints = "$Rx32 = $Rx32in";
14858 }
14859 def M2_mpy_nac_lh_s0 : HInst<
14860 (outs IntRegs:$Rx32),
14861 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14862 "$Rx32 -= mpy($Rs32.l,$Rt32.h)",
14863 tc_d773585a, TypeM>, Enc_2ae154 {
14864 let Inst{7-5} = 0b001;
14865 let Inst{13-13} = 0b0;
14866 let Inst{31-21} = 0b11101110001;
14867 let hasNewValue = 1;
14868 let opNewValue = 0;
14869 let prefersSlot3 = 1;
14870 let Constraints = "$Rx32 = $Rx32in";
14871 }
14872 def M2_mpy_nac_lh_s1 : HInst<
14873 (outs IntRegs:$Rx32),
14874 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14875 "$Rx32 -= mpy($Rs32.l,$Rt32.h):<<1",
14876 tc_d773585a, TypeM>, Enc_2ae154 {
14877 let Inst{7-5} = 0b001;
14878 let Inst{13-13} = 0b0;
14879 let Inst{31-21} = 0b11101110101;
14880 let hasNewValue = 1;
14881 let opNewValue = 0;
14882 let prefersSlot3 = 1;
14883 let Constraints = "$Rx32 = $Rx32in";
14884 }
14885 def M2_mpy_nac_ll_s0 : HInst<
14886 (outs IntRegs:$Rx32),
14887 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14888 "$Rx32 -= mpy($Rs32.l,$Rt32.l)",
14889 tc_d773585a, TypeM>, Enc_2ae154 {
14890 let Inst{7-5} = 0b000;
14891 let Inst{13-13} = 0b0;
14892 let Inst{31-21} = 0b11101110001;
14893 let hasNewValue = 1;
14894 let opNewValue = 0;
14895 let prefersSlot3 = 1;
14896 let Constraints = "$Rx32 = $Rx32in";
14897 }
14898 def M2_mpy_nac_ll_s1 : HInst<
14899 (outs IntRegs:$Rx32),
14900 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14901 "$Rx32 -= mpy($Rs32.l,$Rt32.l):<<1",
14902 tc_d773585a, TypeM>, Enc_2ae154 {
14903 let Inst{7-5} = 0b000;
14904 let Inst{13-13} = 0b0;
14905 let Inst{31-21} = 0b11101110101;
14906 let hasNewValue = 1;
14907 let opNewValue = 0;
14908 let prefersSlot3 = 1;
14909 let Constraints = "$Rx32 = $Rx32in";
14910 }
14911 def M2_mpy_nac_sat_hh_s0 : HInst<
14912 (outs IntRegs:$Rx32),
14913 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14914 "$Rx32 -= mpy($Rs32.h,$Rt32.h):sat",
14915 tc_d773585a, TypeM>, Enc_2ae154 {
14916 let Inst{7-5} = 0b111;
14917 let Inst{13-13} = 0b0;
14918 let Inst{31-21} = 0b11101110001;
14919 let hasNewValue = 1;
14920 let opNewValue = 0;
14921 let prefersSlot3 = 1;
14922 let Defs = [USR_OVF];
14923 let Constraints = "$Rx32 = $Rx32in";
14924 }
14925 def M2_mpy_nac_sat_hh_s1 : HInst<
14926 (outs IntRegs:$Rx32),
14927 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14928 "$Rx32 -= mpy($Rs32.h,$Rt32.h):<<1:sat",
14929 tc_d773585a, TypeM>, Enc_2ae154 {
14930 let Inst{7-5} = 0b111;
14931 let Inst{13-13} = 0b0;
14932 let Inst{31-21} = 0b11101110101;
14933 let hasNewValue = 1;
14934 let opNewValue = 0;
14935 let prefersSlot3 = 1;
14936 let Defs = [USR_OVF];
14937 let Constraints = "$Rx32 = $Rx32in";
14938 }
14939 def M2_mpy_nac_sat_hl_s0 : HInst<
14940 (outs IntRegs:$Rx32),
14941 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14942 "$Rx32 -= mpy($Rs32.h,$Rt32.l):sat",
14943 tc_d773585a, TypeM>, Enc_2ae154 {
14944 let Inst{7-5} = 0b110;
14945 let Inst{13-13} = 0b0;
14946 let Inst{31-21} = 0b11101110001;
14947 let hasNewValue = 1;
14948 let opNewValue = 0;
14949 let prefersSlot3 = 1;
14950 let Defs = [USR_OVF];
14951 let Constraints = "$Rx32 = $Rx32in";
14952 }
14953 def M2_mpy_nac_sat_hl_s1 : HInst<
14954 (outs IntRegs:$Rx32),
14955 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14956 "$Rx32 -= mpy($Rs32.h,$Rt32.l):<<1:sat",
14957 tc_d773585a, TypeM>, Enc_2ae154 {
14958 let Inst{7-5} = 0b110;
14959 let Inst{13-13} = 0b0;
14960 let Inst{31-21} = 0b11101110101;
14961 let hasNewValue = 1;
14962 let opNewValue = 0;
14963 let prefersSlot3 = 1;
14964 let Defs = [USR_OVF];
14965 let Constraints = "$Rx32 = $Rx32in";
14966 }
14967 def M2_mpy_nac_sat_lh_s0 : HInst<
14968 (outs IntRegs:$Rx32),
14969 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14970 "$Rx32 -= mpy($Rs32.l,$Rt32.h):sat",
14971 tc_d773585a, TypeM>, Enc_2ae154 {
14972 let Inst{7-5} = 0b101;
14973 let Inst{13-13} = 0b0;
14974 let Inst{31-21} = 0b11101110001;
14975 let hasNewValue = 1;
14976 let opNewValue = 0;
14977 let prefersSlot3 = 1;
14978 let Defs = [USR_OVF];
14979 let Constraints = "$Rx32 = $Rx32in";
14980 }
14981 def M2_mpy_nac_sat_lh_s1 : HInst<
14982 (outs IntRegs:$Rx32),
14983 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14984 "$Rx32 -= mpy($Rs32.l,$Rt32.h):<<1:sat",
14985 tc_d773585a, TypeM>, Enc_2ae154 {
14986 let Inst{7-5} = 0b101;
14987 let Inst{13-13} = 0b0;
14988 let Inst{31-21} = 0b11101110101;
14989 let hasNewValue = 1;
14990 let opNewValue = 0;
14991 let prefersSlot3 = 1;
14992 let Defs = [USR_OVF];
14993 let Constraints = "$Rx32 = $Rx32in";
14994 }
14995 def M2_mpy_nac_sat_ll_s0 : HInst<
14996 (outs IntRegs:$Rx32),
14997 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
14998 "$Rx32 -= mpy($Rs32.l,$Rt32.l):sat",
14999 tc_d773585a, TypeM>, Enc_2ae154 {
15000 let Inst{7-5} = 0b100;
15001 let Inst{13-13} = 0b0;
15002 let Inst{31-21} = 0b11101110001;
15003 let hasNewValue = 1;
15004 let opNewValue = 0;
15005 let prefersSlot3 = 1;
15006 let Defs = [USR_OVF];
15007 let Constraints = "$Rx32 = $Rx32in";
15008 }
15009 def M2_mpy_nac_sat_ll_s1 : HInst<
15010 (outs IntRegs:$Rx32),
15011 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15012 "$Rx32 -= mpy($Rs32.l,$Rt32.l):<<1:sat",
15013 tc_d773585a, TypeM>, Enc_2ae154 {
15014 let Inst{7-5} = 0b100;
15015 let Inst{13-13} = 0b0;
15016 let Inst{31-21} = 0b11101110101;
15017 let hasNewValue = 1;
15018 let opNewValue = 0;
15019 let prefersSlot3 = 1;
15020 let Defs = [USR_OVF];
15021 let Constraints = "$Rx32 = $Rx32in";
15022 }
15023 def M2_mpy_rnd_hh_s0 : HInst<
15024 (outs IntRegs:$Rd32),
15025 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15026 "$Rd32 = mpy($Rs32.h,$Rt32.h):rnd",
15027 tc_bafaade3, TypeM>, Enc_5ab2be {
15028 let Inst{7-5} = 0b011;
15029 let Inst{13-13} = 0b0;
15030 let Inst{31-21} = 0b11101100001;
15031 let hasNewValue = 1;
15032 let opNewValue = 0;
15033 let prefersSlot3 = 1;
15034 }
15035 def M2_mpy_rnd_hh_s1 : HInst<
15036 (outs IntRegs:$Rd32),
15037 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15038 "$Rd32 = mpy($Rs32.h,$Rt32.h):<<1:rnd",
15039 tc_bafaade3, TypeM>, Enc_5ab2be {
15040 let Inst{7-5} = 0b011;
15041 let Inst{13-13} = 0b0;
15042 let Inst{31-21} = 0b11101100101;
15043 let hasNewValue = 1;
15044 let opNewValue = 0;
15045 let prefersSlot3 = 1;
15046 }
15047 def M2_mpy_rnd_hl_s0 : HInst<
15048 (outs IntRegs:$Rd32),
15049 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15050 "$Rd32 = mpy($Rs32.h,$Rt32.l):rnd",
15051 tc_bafaade3, TypeM>, Enc_5ab2be {
15052 let Inst{7-5} = 0b010;
15053 let Inst{13-13} = 0b0;
15054 let Inst{31-21} = 0b11101100001;
15055 let hasNewValue = 1;
15056 let opNewValue = 0;
15057 let prefersSlot3 = 1;
15058 }
15059 def M2_mpy_rnd_hl_s1 : HInst<
15060 (outs IntRegs:$Rd32),
15061 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15062 "$Rd32 = mpy($Rs32.h,$Rt32.l):<<1:rnd",
15063 tc_bafaade3, TypeM>, Enc_5ab2be {
15064 let Inst{7-5} = 0b010;
15065 let Inst{13-13} = 0b0;
15066 let Inst{31-21} = 0b11101100101;
15067 let hasNewValue = 1;
15068 let opNewValue = 0;
15069 let prefersSlot3 = 1;
15070 }
15071 def M2_mpy_rnd_lh_s0 : HInst<
15072 (outs IntRegs:$Rd32),
15073 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15074 "$Rd32 = mpy($Rs32.l,$Rt32.h):rnd",
15075 tc_bafaade3, TypeM>, Enc_5ab2be {
15076 let Inst{7-5} = 0b001;
15077 let Inst{13-13} = 0b0;
15078 let Inst{31-21} = 0b11101100001;
15079 let hasNewValue = 1;
15080 let opNewValue = 0;
15081 let prefersSlot3 = 1;
15082 }
15083 def M2_mpy_rnd_lh_s1 : HInst<
15084 (outs IntRegs:$Rd32),
15085 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15086 "$Rd32 = mpy($Rs32.l,$Rt32.h):<<1:rnd",
15087 tc_bafaade3, TypeM>, Enc_5ab2be {
15088 let Inst{7-5} = 0b001;
15089 let Inst{13-13} = 0b0;
15090 let Inst{31-21} = 0b11101100101;
15091 let hasNewValue = 1;
15092 let opNewValue = 0;
15093 let prefersSlot3 = 1;
15094 }
15095 def M2_mpy_rnd_ll_s0 : HInst<
15096 (outs IntRegs:$Rd32),
15097 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15098 "$Rd32 = mpy($Rs32.l,$Rt32.l):rnd",
15099 tc_bafaade3, TypeM>, Enc_5ab2be {
15100 let Inst{7-5} = 0b000;
15101 let Inst{13-13} = 0b0;
15102 let Inst{31-21} = 0b11101100001;
15103 let hasNewValue = 1;
15104 let opNewValue = 0;
15105 let prefersSlot3 = 1;
15106 }
15107 def M2_mpy_rnd_ll_s1 : HInst<
15108 (outs IntRegs:$Rd32),
15109 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15110 "$Rd32 = mpy($Rs32.l,$Rt32.l):<<1:rnd",
15111 tc_bafaade3, TypeM>, Enc_5ab2be {
15112 let Inst{7-5} = 0b000;
15113 let Inst{13-13} = 0b0;
15114 let Inst{31-21} = 0b11101100101;
15115 let hasNewValue = 1;
15116 let opNewValue = 0;
15117 let prefersSlot3 = 1;
15118 }
15119 def M2_mpy_sat_hh_s0 : HInst<
15120 (outs IntRegs:$Rd32),
15121 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15122 "$Rd32 = mpy($Rs32.h,$Rt32.h):sat",
15123 tc_bafaade3, TypeM>, Enc_5ab2be {
15124 let Inst{7-5} = 0b111;
15125 let Inst{13-13} = 0b0;
15126 let Inst{31-21} = 0b11101100000;
15127 let hasNewValue = 1;
15128 let opNewValue = 0;
15129 let prefersSlot3 = 1;
15130 let Defs = [USR_OVF];
15131 }
15132 def M2_mpy_sat_hh_s1 : HInst<
15133 (outs IntRegs:$Rd32),
15134 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15135 "$Rd32 = mpy($Rs32.h,$Rt32.h):<<1:sat",
15136 tc_bafaade3, TypeM>, Enc_5ab2be {
15137 let Inst{7-5} = 0b111;
15138 let Inst{13-13} = 0b0;
15139 let Inst{31-21} = 0b11101100100;
15140 let hasNewValue = 1;
15141 let opNewValue = 0;
15142 let prefersSlot3 = 1;
15143 let Defs = [USR_OVF];
15144 }
15145 def M2_mpy_sat_hl_s0 : HInst<
15146 (outs IntRegs:$Rd32),
15147 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15148 "$Rd32 = mpy($Rs32.h,$Rt32.l):sat",
15149 tc_bafaade3, TypeM>, Enc_5ab2be {
15150 let Inst{7-5} = 0b110;
15151 let Inst{13-13} = 0b0;
15152 let Inst{31-21} = 0b11101100000;
15153 let hasNewValue = 1;
15154 let opNewValue = 0;
15155 let prefersSlot3 = 1;
15156 let Defs = [USR_OVF];
15157 }
15158 def M2_mpy_sat_hl_s1 : HInst<
15159 (outs IntRegs:$Rd32),
15160 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15161 "$Rd32 = mpy($Rs32.h,$Rt32.l):<<1:sat",
15162 tc_bafaade3, TypeM>, Enc_5ab2be {
15163 let Inst{7-5} = 0b110;
15164 let Inst{13-13} = 0b0;
15165 let Inst{31-21} = 0b11101100100;
15166 let hasNewValue = 1;
15167 let opNewValue = 0;
15168 let prefersSlot3 = 1;
15169 let Defs = [USR_OVF];
15170 }
15171 def M2_mpy_sat_lh_s0 : HInst<
15172 (outs IntRegs:$Rd32),
15173 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15174 "$Rd32 = mpy($Rs32.l,$Rt32.h):sat",
15175 tc_bafaade3, TypeM>, Enc_5ab2be {
15176 let Inst{7-5} = 0b101;
15177 let Inst{13-13} = 0b0;
15178 let Inst{31-21} = 0b11101100000;
15179 let hasNewValue = 1;
15180 let opNewValue = 0;
15181 let prefersSlot3 = 1;
15182 let Defs = [USR_OVF];
15183 }
15184 def M2_mpy_sat_lh_s1 : HInst<
15185 (outs IntRegs:$Rd32),
15186 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15187 "$Rd32 = mpy($Rs32.l,$Rt32.h):<<1:sat",
15188 tc_bafaade3, TypeM>, Enc_5ab2be {
15189 let Inst{7-5} = 0b101;
15190 let Inst{13-13} = 0b0;
15191 let Inst{31-21} = 0b11101100100;
15192 let hasNewValue = 1;
15193 let opNewValue = 0;
15194 let prefersSlot3 = 1;
15195 let Defs = [USR_OVF];
15196 }
15197 def M2_mpy_sat_ll_s0 : HInst<
15198 (outs IntRegs:$Rd32),
15199 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15200 "$Rd32 = mpy($Rs32.l,$Rt32.l):sat",
15201 tc_bafaade3, TypeM>, Enc_5ab2be {
15202 let Inst{7-5} = 0b100;
15203 let Inst{13-13} = 0b0;
15204 let Inst{31-21} = 0b11101100000;
15205 let hasNewValue = 1;
15206 let opNewValue = 0;
15207 let prefersSlot3 = 1;
15208 let Defs = [USR_OVF];
15209 }
15210 def M2_mpy_sat_ll_s1 : HInst<
15211 (outs IntRegs:$Rd32),
15212 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15213 "$Rd32 = mpy($Rs32.l,$Rt32.l):<<1:sat",
15214 tc_bafaade3, TypeM>, Enc_5ab2be {
15215 let Inst{7-5} = 0b100;
15216 let Inst{13-13} = 0b0;
15217 let Inst{31-21} = 0b11101100100;
15218 let hasNewValue = 1;
15219 let opNewValue = 0;
15220 let prefersSlot3 = 1;
15221 let Defs = [USR_OVF];
15222 }
15223 def M2_mpy_sat_rnd_hh_s0 : HInst<
15224 (outs IntRegs:$Rd32),
15225 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15226 "$Rd32 = mpy($Rs32.h,$Rt32.h):rnd:sat",
15227 tc_bafaade3, TypeM>, Enc_5ab2be {
15228 let Inst{7-5} = 0b111;
15229 let Inst{13-13} = 0b0;
15230 let Inst{31-21} = 0b11101100001;
15231 let hasNewValue = 1;
15232 let opNewValue = 0;
15233 let prefersSlot3 = 1;
15234 let Defs = [USR_OVF];
15235 }
15236 def M2_mpy_sat_rnd_hh_s1 : HInst<
15237 (outs IntRegs:$Rd32),
15238 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15239 "$Rd32 = mpy($Rs32.h,$Rt32.h):<<1:rnd:sat",
15240 tc_bafaade3, TypeM>, Enc_5ab2be {
15241 let Inst{7-5} = 0b111;
15242 let Inst{13-13} = 0b0;
15243 let Inst{31-21} = 0b11101100101;
15244 let hasNewValue = 1;
15245 let opNewValue = 0;
15246 let prefersSlot3 = 1;
15247 let Defs = [USR_OVF];
15248 }
15249 def M2_mpy_sat_rnd_hl_s0 : HInst<
15250 (outs IntRegs:$Rd32),
15251 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15252 "$Rd32 = mpy($Rs32.h,$Rt32.l):rnd:sat",
15253 tc_bafaade3, TypeM>, Enc_5ab2be {
15254 let Inst{7-5} = 0b110;
15255 let Inst{13-13} = 0b0;
15256 let Inst{31-21} = 0b11101100001;
15257 let hasNewValue = 1;
15258 let opNewValue = 0;
15259 let prefersSlot3 = 1;
15260 let Defs = [USR_OVF];
15261 }
15262 def M2_mpy_sat_rnd_hl_s1 : HInst<
15263 (outs IntRegs:$Rd32),
15264 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15265 "$Rd32 = mpy($Rs32.h,$Rt32.l):<<1:rnd:sat",
15266 tc_bafaade3, TypeM>, Enc_5ab2be {
15267 let Inst{7-5} = 0b110;
15268 let Inst{13-13} = 0b0;
15269 let Inst{31-21} = 0b11101100101;
15270 let hasNewValue = 1;
15271 let opNewValue = 0;
15272 let prefersSlot3 = 1;
15273 let Defs = [USR_OVF];
15274 }
15275 def M2_mpy_sat_rnd_lh_s0 : HInst<
15276 (outs IntRegs:$Rd32),
15277 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15278 "$Rd32 = mpy($Rs32.l,$Rt32.h):rnd:sat",
15279 tc_bafaade3, TypeM>, Enc_5ab2be {
15280 let Inst{7-5} = 0b101;
15281 let Inst{13-13} = 0b0;
15282 let Inst{31-21} = 0b11101100001;
15283 let hasNewValue = 1;
15284 let opNewValue = 0;
15285 let prefersSlot3 = 1;
15286 let Defs = [USR_OVF];
15287 }
15288 def M2_mpy_sat_rnd_lh_s1 : HInst<
15289 (outs IntRegs:$Rd32),
15290 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15291 "$Rd32 = mpy($Rs32.l,$Rt32.h):<<1:rnd:sat",
15292 tc_bafaade3, TypeM>, Enc_5ab2be {
15293 let Inst{7-5} = 0b101;
15294 let Inst{13-13} = 0b0;
15295 let Inst{31-21} = 0b11101100101;
15296 let hasNewValue = 1;
15297 let opNewValue = 0;
15298 let prefersSlot3 = 1;
15299 let Defs = [USR_OVF];
15300 }
15301 def M2_mpy_sat_rnd_ll_s0 : HInst<
15302 (outs IntRegs:$Rd32),
15303 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15304 "$Rd32 = mpy($Rs32.l,$Rt32.l):rnd:sat",
15305 tc_bafaade3, TypeM>, Enc_5ab2be {
15306 let Inst{7-5} = 0b100;
15307 let Inst{13-13} = 0b0;
15308 let Inst{31-21} = 0b11101100001;
15309 let hasNewValue = 1;
15310 let opNewValue = 0;
15311 let prefersSlot3 = 1;
15312 let Defs = [USR_OVF];
15313 }
15314 def M2_mpy_sat_rnd_ll_s1 : HInst<
15315 (outs IntRegs:$Rd32),
15316 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15317 "$Rd32 = mpy($Rs32.l,$Rt32.l):<<1:rnd:sat",
15318 tc_bafaade3, TypeM>, Enc_5ab2be {
15319 let Inst{7-5} = 0b100;
15320 let Inst{13-13} = 0b0;
15321 let Inst{31-21} = 0b11101100101;
15322 let hasNewValue = 1;
15323 let opNewValue = 0;
15324 let prefersSlot3 = 1;
15325 let Defs = [USR_OVF];
15326 }
15327 def M2_mpy_up : HInst<
15328 (outs IntRegs:$Rd32),
15329 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15330 "$Rd32 = mpy($Rs32,$Rt32)",
15331 tc_bafaade3, TypeM>, Enc_5ab2be {
15332 let Inst{7-5} = 0b001;
15333 let Inst{13-13} = 0b0;
15334 let Inst{31-21} = 0b11101101000;
15335 let hasNewValue = 1;
15336 let opNewValue = 0;
15337 let prefersSlot3 = 1;
15338 }
15339 def M2_mpy_up_s1 : HInst<
15340 (outs IntRegs:$Rd32),
15341 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15342 "$Rd32 = mpy($Rs32,$Rt32):<<1",
15343 tc_bafaade3, TypeM>, Enc_5ab2be {
15344 let Inst{7-5} = 0b010;
15345 let Inst{13-13} = 0b0;
15346 let Inst{31-21} = 0b11101101101;
15347 let hasNewValue = 1;
15348 let opNewValue = 0;
15349 let prefersSlot3 = 1;
15350 }
15351 def M2_mpy_up_s1_sat : HInst<
15352 (outs IntRegs:$Rd32),
15353 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15354 "$Rd32 = mpy($Rs32,$Rt32):<<1:sat",
15355 tc_bafaade3, TypeM>, Enc_5ab2be {
15356 let Inst{7-5} = 0b000;
15357 let Inst{13-13} = 0b0;
15358 let Inst{31-21} = 0b11101101111;
15359 let hasNewValue = 1;
15360 let opNewValue = 0;
15361 let prefersSlot3 = 1;
15362 let Defs = [USR_OVF];
15363 }
15364 def M2_mpyd_acc_hh_s0 : HInst<
15365 (outs DoubleRegs:$Rxx32),
15366 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15367 "$Rxx32 += mpy($Rs32.h,$Rt32.h)",
15368 tc_d773585a, TypeM>, Enc_61f0b0 {
15369 let Inst{7-5} = 0b011;
15370 let Inst{13-13} = 0b0;
15371 let Inst{31-21} = 0b11100110000;
15372 let prefersSlot3 = 1;
15373 let Constraints = "$Rxx32 = $Rxx32in";
15374 }
15375 def M2_mpyd_acc_hh_s1 : HInst<
15376 (outs DoubleRegs:$Rxx32),
15377 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15378 "$Rxx32 += mpy($Rs32.h,$Rt32.h):<<1",
15379 tc_d773585a, TypeM>, Enc_61f0b0 {
15380 let Inst{7-5} = 0b011;
15381 let Inst{13-13} = 0b0;
15382 let Inst{31-21} = 0b11100110100;
15383 let prefersSlot3 = 1;
15384 let Constraints = "$Rxx32 = $Rxx32in";
15385 }
15386 def M2_mpyd_acc_hl_s0 : HInst<
15387 (outs DoubleRegs:$Rxx32),
15388 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15389 "$Rxx32 += mpy($Rs32.h,$Rt32.l)",
15390 tc_d773585a, TypeM>, Enc_61f0b0 {
15391 let Inst{7-5} = 0b010;
15392 let Inst{13-13} = 0b0;
15393 let Inst{31-21} = 0b11100110000;
15394 let prefersSlot3 = 1;
15395 let Constraints = "$Rxx32 = $Rxx32in";
15396 }
15397 def M2_mpyd_acc_hl_s1 : HInst<
15398 (outs DoubleRegs:$Rxx32),
15399 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15400 "$Rxx32 += mpy($Rs32.h,$Rt32.l):<<1",
15401 tc_d773585a, TypeM>, Enc_61f0b0 {
15402 let Inst{7-5} = 0b010;
15403 let Inst{13-13} = 0b0;
15404 let Inst{31-21} = 0b11100110100;
15405 let prefersSlot3 = 1;
15406 let Constraints = "$Rxx32 = $Rxx32in";
15407 }
15408 def M2_mpyd_acc_lh_s0 : HInst<
15409 (outs DoubleRegs:$Rxx32),
15410 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15411 "$Rxx32 += mpy($Rs32.l,$Rt32.h)",
15412 tc_d773585a, TypeM>, Enc_61f0b0 {
15413 let Inst{7-5} = 0b001;
15414 let Inst{13-13} = 0b0;
15415 let Inst{31-21} = 0b11100110000;
15416 let prefersSlot3 = 1;
15417 let Constraints = "$Rxx32 = $Rxx32in";
15418 }
15419 def M2_mpyd_acc_lh_s1 : HInst<
15420 (outs DoubleRegs:$Rxx32),
15421 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15422 "$Rxx32 += mpy($Rs32.l,$Rt32.h):<<1",
15423 tc_d773585a, TypeM>, Enc_61f0b0 {
15424 let Inst{7-5} = 0b001;
15425 let Inst{13-13} = 0b0;
15426 let Inst{31-21} = 0b11100110100;
15427 let prefersSlot3 = 1;
15428 let Constraints = "$Rxx32 = $Rxx32in";
15429 }
15430 def M2_mpyd_acc_ll_s0 : HInst<
15431 (outs DoubleRegs:$Rxx32),
15432 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15433 "$Rxx32 += mpy($Rs32.l,$Rt32.l)",
15434 tc_d773585a, TypeM>, Enc_61f0b0 {
15435 let Inst{7-5} = 0b000;
15436 let Inst{13-13} = 0b0;
15437 let Inst{31-21} = 0b11100110000;
15438 let prefersSlot3 = 1;
15439 let Constraints = "$Rxx32 = $Rxx32in";
15440 }
15441 def M2_mpyd_acc_ll_s1 : HInst<
15442 (outs DoubleRegs:$Rxx32),
15443 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15444 "$Rxx32 += mpy($Rs32.l,$Rt32.l):<<1",
15445 tc_d773585a, TypeM>, Enc_61f0b0 {
15446 let Inst{7-5} = 0b000;
15447 let Inst{13-13} = 0b0;
15448 let Inst{31-21} = 0b11100110100;
15449 let prefersSlot3 = 1;
15450 let Constraints = "$Rxx32 = $Rxx32in";
15451 }
15452 def M2_mpyd_hh_s0 : HInst<
15453 (outs DoubleRegs:$Rdd32),
15454 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15455 "$Rdd32 = mpy($Rs32.h,$Rt32.h)",
15456 tc_bafaade3, TypeM>, Enc_be32a5 {
15457 let Inst{7-5} = 0b011;
15458 let Inst{13-13} = 0b0;
15459 let Inst{31-21} = 0b11100100000;
15460 let prefersSlot3 = 1;
15461 }
15462 def M2_mpyd_hh_s1 : HInst<
15463 (outs DoubleRegs:$Rdd32),
15464 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15465 "$Rdd32 = mpy($Rs32.h,$Rt32.h):<<1",
15466 tc_bafaade3, TypeM>, Enc_be32a5 {
15467 let Inst{7-5} = 0b011;
15468 let Inst{13-13} = 0b0;
15469 let Inst{31-21} = 0b11100100100;
15470 let prefersSlot3 = 1;
15471 }
15472 def M2_mpyd_hl_s0 : HInst<
15473 (outs DoubleRegs:$Rdd32),
15474 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15475 "$Rdd32 = mpy($Rs32.h,$Rt32.l)",
15476 tc_bafaade3, TypeM>, Enc_be32a5 {
15477 let Inst{7-5} = 0b010;
15478 let Inst{13-13} = 0b0;
15479 let Inst{31-21} = 0b11100100000;
15480 let prefersSlot3 = 1;
15481 }
15482 def M2_mpyd_hl_s1 : HInst<
15483 (outs DoubleRegs:$Rdd32),
15484 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15485 "$Rdd32 = mpy($Rs32.h,$Rt32.l):<<1",
15486 tc_bafaade3, TypeM>, Enc_be32a5 {
15487 let Inst{7-5} = 0b010;
15488 let Inst{13-13} = 0b0;
15489 let Inst{31-21} = 0b11100100100;
15490 let prefersSlot3 = 1;
15491 }
15492 def M2_mpyd_lh_s0 : HInst<
15493 (outs DoubleRegs:$Rdd32),
15494 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15495 "$Rdd32 = mpy($Rs32.l,$Rt32.h)",
15496 tc_bafaade3, TypeM>, Enc_be32a5 {
15497 let Inst{7-5} = 0b001;
15498 let Inst{13-13} = 0b0;
15499 let Inst{31-21} = 0b11100100000;
15500 let prefersSlot3 = 1;
15501 }
15502 def M2_mpyd_lh_s1 : HInst<
15503 (outs DoubleRegs:$Rdd32),
15504 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15505 "$Rdd32 = mpy($Rs32.l,$Rt32.h):<<1",
15506 tc_bafaade3, TypeM>, Enc_be32a5 {
15507 let Inst{7-5} = 0b001;
15508 let Inst{13-13} = 0b0;
15509 let Inst{31-21} = 0b11100100100;
15510 let prefersSlot3 = 1;
15511 }
15512 def M2_mpyd_ll_s0 : HInst<
15513 (outs DoubleRegs:$Rdd32),
15514 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15515 "$Rdd32 = mpy($Rs32.l,$Rt32.l)",
15516 tc_bafaade3, TypeM>, Enc_be32a5 {
15517 let Inst{7-5} = 0b000;
15518 let Inst{13-13} = 0b0;
15519 let Inst{31-21} = 0b11100100000;
15520 let prefersSlot3 = 1;
15521 }
15522 def M2_mpyd_ll_s1 : HInst<
15523 (outs DoubleRegs:$Rdd32),
15524 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15525 "$Rdd32 = mpy($Rs32.l,$Rt32.l):<<1",
15526 tc_bafaade3, TypeM>, Enc_be32a5 {
15527 let Inst{7-5} = 0b000;
15528 let Inst{13-13} = 0b0;
15529 let Inst{31-21} = 0b11100100100;
15530 let prefersSlot3 = 1;
15531 }
15532 def M2_mpyd_nac_hh_s0 : HInst<
15533 (outs DoubleRegs:$Rxx32),
15534 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15535 "$Rxx32 -= mpy($Rs32.h,$Rt32.h)",
15536 tc_d773585a, TypeM>, Enc_61f0b0 {
15537 let Inst{7-5} = 0b011;
15538 let Inst{13-13} = 0b0;
15539 let Inst{31-21} = 0b11100110001;
15540 let prefersSlot3 = 1;
15541 let Constraints = "$Rxx32 = $Rxx32in";
15542 }
15543 def M2_mpyd_nac_hh_s1 : HInst<
15544 (outs DoubleRegs:$Rxx32),
15545 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15546 "$Rxx32 -= mpy($Rs32.h,$Rt32.h):<<1",
15547 tc_d773585a, TypeM>, Enc_61f0b0 {
15548 let Inst{7-5} = 0b011;
15549 let Inst{13-13} = 0b0;
15550 let Inst{31-21} = 0b11100110101;
15551 let prefersSlot3 = 1;
15552 let Constraints = "$Rxx32 = $Rxx32in";
15553 }
15554 def M2_mpyd_nac_hl_s0 : HInst<
15555 (outs DoubleRegs:$Rxx32),
15556 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15557 "$Rxx32 -= mpy($Rs32.h,$Rt32.l)",
15558 tc_d773585a, TypeM>, Enc_61f0b0 {
15559 let Inst{7-5} = 0b010;
15560 let Inst{13-13} = 0b0;
15561 let Inst{31-21} = 0b11100110001;
15562 let prefersSlot3 = 1;
15563 let Constraints = "$Rxx32 = $Rxx32in";
15564 }
15565 def M2_mpyd_nac_hl_s1 : HInst<
15566 (outs DoubleRegs:$Rxx32),
15567 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15568 "$Rxx32 -= mpy($Rs32.h,$Rt32.l):<<1",
15569 tc_d773585a, TypeM>, Enc_61f0b0 {
15570 let Inst{7-5} = 0b010;
15571 let Inst{13-13} = 0b0;
15572 let Inst{31-21} = 0b11100110101;
15573 let prefersSlot3 = 1;
15574 let Constraints = "$Rxx32 = $Rxx32in";
15575 }
15576 def M2_mpyd_nac_lh_s0 : HInst<
15577 (outs DoubleRegs:$Rxx32),
15578 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15579 "$Rxx32 -= mpy($Rs32.l,$Rt32.h)",
15580 tc_d773585a, TypeM>, Enc_61f0b0 {
15581 let Inst{7-5} = 0b001;
15582 let Inst{13-13} = 0b0;
15583 let Inst{31-21} = 0b11100110001;
15584 let prefersSlot3 = 1;
15585 let Constraints = "$Rxx32 = $Rxx32in";
15586 }
15587 def M2_mpyd_nac_lh_s1 : HInst<
15588 (outs DoubleRegs:$Rxx32),
15589 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15590 "$Rxx32 -= mpy($Rs32.l,$Rt32.h):<<1",
15591 tc_d773585a, TypeM>, Enc_61f0b0 {
15592 let Inst{7-5} = 0b001;
15593 let Inst{13-13} = 0b0;
15594 let Inst{31-21} = 0b11100110101;
15595 let prefersSlot3 = 1;
15596 let Constraints = "$Rxx32 = $Rxx32in";
15597 }
15598 def M2_mpyd_nac_ll_s0 : HInst<
15599 (outs DoubleRegs:$Rxx32),
15600 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15601 "$Rxx32 -= mpy($Rs32.l,$Rt32.l)",
15602 tc_d773585a, TypeM>, Enc_61f0b0 {
15603 let Inst{7-5} = 0b000;
15604 let Inst{13-13} = 0b0;
15605 let Inst{31-21} = 0b11100110001;
15606 let prefersSlot3 = 1;
15607 let Constraints = "$Rxx32 = $Rxx32in";
15608 }
15609 def M2_mpyd_nac_ll_s1 : HInst<
15610 (outs DoubleRegs:$Rxx32),
15611 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15612 "$Rxx32 -= mpy($Rs32.l,$Rt32.l):<<1",
15613 tc_d773585a, TypeM>, Enc_61f0b0 {
15614 let Inst{7-5} = 0b000;
15615 let Inst{13-13} = 0b0;
15616 let Inst{31-21} = 0b11100110101;
15617 let prefersSlot3 = 1;
15618 let Constraints = "$Rxx32 = $Rxx32in";
15619 }
15620 def M2_mpyd_rnd_hh_s0 : HInst<
15621 (outs DoubleRegs:$Rdd32),
15622 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15623 "$Rdd32 = mpy($Rs32.h,$Rt32.h):rnd",
15624 tc_bafaade3, TypeM>, Enc_be32a5 {
15625 let Inst{7-5} = 0b011;
15626 let Inst{13-13} = 0b0;
15627 let Inst{31-21} = 0b11100100001;
15628 let prefersSlot3 = 1;
15629 }
15630 def M2_mpyd_rnd_hh_s1 : HInst<
15631 (outs DoubleRegs:$Rdd32),
15632 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15633 "$Rdd32 = mpy($Rs32.h,$Rt32.h):<<1:rnd",
15634 tc_bafaade3, TypeM>, Enc_be32a5 {
15635 let Inst{7-5} = 0b011;
15636 let Inst{13-13} = 0b0;
15637 let Inst{31-21} = 0b11100100101;
15638 let prefersSlot3 = 1;
15639 }
15640 def M2_mpyd_rnd_hl_s0 : HInst<
15641 (outs DoubleRegs:$Rdd32),
15642 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15643 "$Rdd32 = mpy($Rs32.h,$Rt32.l):rnd",
15644 tc_bafaade3, TypeM>, Enc_be32a5 {
15645 let Inst{7-5} = 0b010;
15646 let Inst{13-13} = 0b0;
15647 let Inst{31-21} = 0b11100100001;
15648 let prefersSlot3 = 1;
15649 }
15650 def M2_mpyd_rnd_hl_s1 : HInst<
15651 (outs DoubleRegs:$Rdd32),
15652 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15653 "$Rdd32 = mpy($Rs32.h,$Rt32.l):<<1:rnd",
15654 tc_bafaade3, TypeM>, Enc_be32a5 {
15655 let Inst{7-5} = 0b010;
15656 let Inst{13-13} = 0b0;
15657 let Inst{31-21} = 0b11100100101;
15658 let prefersSlot3 = 1;
15659 }
15660 def M2_mpyd_rnd_lh_s0 : HInst<
15661 (outs DoubleRegs:$Rdd32),
15662 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15663 "$Rdd32 = mpy($Rs32.l,$Rt32.h):rnd",
15664 tc_bafaade3, TypeM>, Enc_be32a5 {
15665 let Inst{7-5} = 0b001;
15666 let Inst{13-13} = 0b0;
15667 let Inst{31-21} = 0b11100100001;
15668 let prefersSlot3 = 1;
15669 }
15670 def M2_mpyd_rnd_lh_s1 : HInst<
15671 (outs DoubleRegs:$Rdd32),
15672 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15673 "$Rdd32 = mpy($Rs32.l,$Rt32.h):<<1:rnd",
15674 tc_bafaade3, TypeM>, Enc_be32a5 {
15675 let Inst{7-5} = 0b001;
15676 let Inst{13-13} = 0b0;
15677 let Inst{31-21} = 0b11100100101;
15678 let prefersSlot3 = 1;
15679 }
15680 def M2_mpyd_rnd_ll_s0 : HInst<
15681 (outs DoubleRegs:$Rdd32),
15682 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15683 "$Rdd32 = mpy($Rs32.l,$Rt32.l):rnd",
15684 tc_bafaade3, TypeM>, Enc_be32a5 {
15685 let Inst{7-5} = 0b000;
15686 let Inst{13-13} = 0b0;
15687 let Inst{31-21} = 0b11100100001;
15688 let prefersSlot3 = 1;
15689 }
15690 def M2_mpyd_rnd_ll_s1 : HInst<
15691 (outs DoubleRegs:$Rdd32),
15692 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15693 "$Rdd32 = mpy($Rs32.l,$Rt32.l):<<1:rnd",
15694 tc_bafaade3, TypeM>, Enc_be32a5 {
15695 let Inst{7-5} = 0b000;
15696 let Inst{13-13} = 0b0;
15697 let Inst{31-21} = 0b11100100101;
15698 let prefersSlot3 = 1;
15699 }
15700 def M2_mpyi : HInst<
15701 (outs IntRegs:$Rd32),
15702 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15703 "$Rd32 = mpyi($Rs32,$Rt32)",
15704 tc_bafaade3, TypeM>, Enc_5ab2be, ImmRegRel {
15705 let Inst{7-5} = 0b000;
15706 let Inst{13-13} = 0b0;
15707 let Inst{31-21} = 0b11101101000;
15708 let hasNewValue = 1;
15709 let opNewValue = 0;
15710 let prefersSlot3 = 1;
15711 let CextOpcode = "M2_mpyi";
15712 let InputType = "reg";
15713 }
15714 def M2_mpysin : HInst<
15715 (outs IntRegs:$Rd32),
15716 (ins IntRegs:$Rs32, u8_0Imm:$Ii),
15717 "$Rd32 = -mpyi($Rs32,#$Ii)",
15718 tc_c8ce0b5c, TypeM>, Enc_b8c967 {
15719 let Inst{13-13} = 0b0;
15720 let Inst{31-21} = 0b11100000100;
15721 let hasNewValue = 1;
15722 let opNewValue = 0;
15723 let prefersSlot3 = 1;
15724 }
15725 def M2_mpysip : HInst<
15726 (outs IntRegs:$Rd32),
15727 (ins IntRegs:$Rs32, u32_0Imm:$Ii),
15728 "$Rd32 = +mpyi($Rs32,#$Ii)",
15729 tc_c8ce0b5c, TypeM>, Enc_b8c967 {
15730 let Inst{13-13} = 0b0;
15731 let Inst{31-21} = 0b11100000000;
15732 let hasNewValue = 1;
15733 let opNewValue = 0;
15734 let prefersSlot3 = 1;
15735 let isExtendable = 1;
15736 let opExtendable = 2;
15737 let isExtentSigned = 0;
15738 let opExtentBits = 8;
15739 let opExtentAlign = 0;
15740 }
15741 def M2_mpysmi : HInst<
15742 (outs IntRegs:$Rd32),
15743 (ins IntRegs:$Rs32, m32_0Imm:$Ii),
15744 "$Rd32 = mpyi($Rs32,#$Ii)",
15745 tc_c8ce0b5c, TypeM>, ImmRegRel {
15746 let hasNewValue = 1;
15747 let opNewValue = 0;
15748 let CextOpcode = "M2_mpyi";
15749 let InputType = "imm";
15750 let isPseudo = 1;
15751 let isExtendable = 1;
15752 let opExtendable = 2;
15753 let isExtentSigned = 1;
15754 let opExtentBits = 9;
15755 let opExtentAlign = 0;
15756 }
15757 def M2_mpysu_up : HInst<
15758 (outs IntRegs:$Rd32),
15759 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15760 "$Rd32 = mpysu($Rs32,$Rt32)",
15761 tc_bafaade3, TypeM>, Enc_5ab2be {
15762 let Inst{7-5} = 0b001;
15763 let Inst{13-13} = 0b0;
15764 let Inst{31-21} = 0b11101101011;
15765 let hasNewValue = 1;
15766 let opNewValue = 0;
15767 let prefersSlot3 = 1;
15768 }
15769 def M2_mpyu_acc_hh_s0 : HInst<
15770 (outs IntRegs:$Rx32),
15771 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15772 "$Rx32 += mpyu($Rs32.h,$Rt32.h)",
15773 tc_d773585a, TypeM>, Enc_2ae154 {
15774 let Inst{7-5} = 0b011;
15775 let Inst{13-13} = 0b0;
15776 let Inst{31-21} = 0b11101110010;
15777 let hasNewValue = 1;
15778 let opNewValue = 0;
15779 let prefersSlot3 = 1;
15780 let Constraints = "$Rx32 = $Rx32in";
15781 }
15782 def M2_mpyu_acc_hh_s1 : HInst<
15783 (outs IntRegs:$Rx32),
15784 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15785 "$Rx32 += mpyu($Rs32.h,$Rt32.h):<<1",
15786 tc_d773585a, TypeM>, Enc_2ae154 {
15787 let Inst{7-5} = 0b011;
15788 let Inst{13-13} = 0b0;
15789 let Inst{31-21} = 0b11101110110;
15790 let hasNewValue = 1;
15791 let opNewValue = 0;
15792 let prefersSlot3 = 1;
15793 let Constraints = "$Rx32 = $Rx32in";
15794 }
15795 def M2_mpyu_acc_hl_s0 : HInst<
15796 (outs IntRegs:$Rx32),
15797 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15798 "$Rx32 += mpyu($Rs32.h,$Rt32.l)",
15799 tc_d773585a, TypeM>, Enc_2ae154 {
15800 let Inst{7-5} = 0b010;
15801 let Inst{13-13} = 0b0;
15802 let Inst{31-21} = 0b11101110010;
15803 let hasNewValue = 1;
15804 let opNewValue = 0;
15805 let prefersSlot3 = 1;
15806 let Constraints = "$Rx32 = $Rx32in";
15807 }
15808 def M2_mpyu_acc_hl_s1 : HInst<
15809 (outs IntRegs:$Rx32),
15810 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15811 "$Rx32 += mpyu($Rs32.h,$Rt32.l):<<1",
15812 tc_d773585a, TypeM>, Enc_2ae154 {
15813 let Inst{7-5} = 0b010;
15814 let Inst{13-13} = 0b0;
15815 let Inst{31-21} = 0b11101110110;
15816 let hasNewValue = 1;
15817 let opNewValue = 0;
15818 let prefersSlot3 = 1;
15819 let Constraints = "$Rx32 = $Rx32in";
15820 }
15821 def M2_mpyu_acc_lh_s0 : HInst<
15822 (outs IntRegs:$Rx32),
15823 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15824 "$Rx32 += mpyu($Rs32.l,$Rt32.h)",
15825 tc_d773585a, TypeM>, Enc_2ae154 {
15826 let Inst{7-5} = 0b001;
15827 let Inst{13-13} = 0b0;
15828 let Inst{31-21} = 0b11101110010;
15829 let hasNewValue = 1;
15830 let opNewValue = 0;
15831 let prefersSlot3 = 1;
15832 let Constraints = "$Rx32 = $Rx32in";
15833 }
15834 def M2_mpyu_acc_lh_s1 : HInst<
15835 (outs IntRegs:$Rx32),
15836 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15837 "$Rx32 += mpyu($Rs32.l,$Rt32.h):<<1",
15838 tc_d773585a, TypeM>, Enc_2ae154 {
15839 let Inst{7-5} = 0b001;
15840 let Inst{13-13} = 0b0;
15841 let Inst{31-21} = 0b11101110110;
15842 let hasNewValue = 1;
15843 let opNewValue = 0;
15844 let prefersSlot3 = 1;
15845 let Constraints = "$Rx32 = $Rx32in";
15846 }
15847 def M2_mpyu_acc_ll_s0 : HInst<
15848 (outs IntRegs:$Rx32),
15849 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15850 "$Rx32 += mpyu($Rs32.l,$Rt32.l)",
15851 tc_d773585a, TypeM>, Enc_2ae154 {
15852 let Inst{7-5} = 0b000;
15853 let Inst{13-13} = 0b0;
15854 let Inst{31-21} = 0b11101110010;
15855 let hasNewValue = 1;
15856 let opNewValue = 0;
15857 let prefersSlot3 = 1;
15858 let Constraints = "$Rx32 = $Rx32in";
15859 }
15860 def M2_mpyu_acc_ll_s1 : HInst<
15861 (outs IntRegs:$Rx32),
15862 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15863 "$Rx32 += mpyu($Rs32.l,$Rt32.l):<<1",
15864 tc_d773585a, TypeM>, Enc_2ae154 {
15865 let Inst{7-5} = 0b000;
15866 let Inst{13-13} = 0b0;
15867 let Inst{31-21} = 0b11101110110;
15868 let hasNewValue = 1;
15869 let opNewValue = 0;
15870 let prefersSlot3 = 1;
15871 let Constraints = "$Rx32 = $Rx32in";
15872 }
15873 def M2_mpyu_hh_s0 : HInst<
15874 (outs IntRegs:$Rd32),
15875 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15876 "$Rd32 = mpyu($Rs32.h,$Rt32.h)",
15877 tc_bafaade3, TypeM>, Enc_5ab2be {
15878 let Inst{7-5} = 0b011;
15879 let Inst{13-13} = 0b0;
15880 let Inst{31-21} = 0b11101100010;
15881 let hasNewValue = 1;
15882 let opNewValue = 0;
15883 let prefersSlot3 = 1;
15884 }
15885 def M2_mpyu_hh_s1 : HInst<
15886 (outs IntRegs:$Rd32),
15887 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15888 "$Rd32 = mpyu($Rs32.h,$Rt32.h):<<1",
15889 tc_bafaade3, TypeM>, Enc_5ab2be {
15890 let Inst{7-5} = 0b011;
15891 let Inst{13-13} = 0b0;
15892 let Inst{31-21} = 0b11101100110;
15893 let hasNewValue = 1;
15894 let opNewValue = 0;
15895 let prefersSlot3 = 1;
15896 }
15897 def M2_mpyu_hl_s0 : HInst<
15898 (outs IntRegs:$Rd32),
15899 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15900 "$Rd32 = mpyu($Rs32.h,$Rt32.l)",
15901 tc_bafaade3, TypeM>, Enc_5ab2be {
15902 let Inst{7-5} = 0b010;
15903 let Inst{13-13} = 0b0;
15904 let Inst{31-21} = 0b11101100010;
15905 let hasNewValue = 1;
15906 let opNewValue = 0;
15907 let prefersSlot3 = 1;
15908 }
15909 def M2_mpyu_hl_s1 : HInst<
15910 (outs IntRegs:$Rd32),
15911 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15912 "$Rd32 = mpyu($Rs32.h,$Rt32.l):<<1",
15913 tc_bafaade3, TypeM>, Enc_5ab2be {
15914 let Inst{7-5} = 0b010;
15915 let Inst{13-13} = 0b0;
15916 let Inst{31-21} = 0b11101100110;
15917 let hasNewValue = 1;
15918 let opNewValue = 0;
15919 let prefersSlot3 = 1;
15920 }
15921 def M2_mpyu_lh_s0 : HInst<
15922 (outs IntRegs:$Rd32),
15923 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15924 "$Rd32 = mpyu($Rs32.l,$Rt32.h)",
15925 tc_bafaade3, TypeM>, Enc_5ab2be {
15926 let Inst{7-5} = 0b001;
15927 let Inst{13-13} = 0b0;
15928 let Inst{31-21} = 0b11101100010;
15929 let hasNewValue = 1;
15930 let opNewValue = 0;
15931 let prefersSlot3 = 1;
15932 }
15933 def M2_mpyu_lh_s1 : HInst<
15934 (outs IntRegs:$Rd32),
15935 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15936 "$Rd32 = mpyu($Rs32.l,$Rt32.h):<<1",
15937 tc_bafaade3, TypeM>, Enc_5ab2be {
15938 let Inst{7-5} = 0b001;
15939 let Inst{13-13} = 0b0;
15940 let Inst{31-21} = 0b11101100110;
15941 let hasNewValue = 1;
15942 let opNewValue = 0;
15943 let prefersSlot3 = 1;
15944 }
15945 def M2_mpyu_ll_s0 : HInst<
15946 (outs IntRegs:$Rd32),
15947 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15948 "$Rd32 = mpyu($Rs32.l,$Rt32.l)",
15949 tc_bafaade3, TypeM>, Enc_5ab2be {
15950 let Inst{7-5} = 0b000;
15951 let Inst{13-13} = 0b0;
15952 let Inst{31-21} = 0b11101100010;
15953 let hasNewValue = 1;
15954 let opNewValue = 0;
15955 let prefersSlot3 = 1;
15956 }
15957 def M2_mpyu_ll_s1 : HInst<
15958 (outs IntRegs:$Rd32),
15959 (ins IntRegs:$Rs32, IntRegs:$Rt32),
15960 "$Rd32 = mpyu($Rs32.l,$Rt32.l):<<1",
15961 tc_bafaade3, TypeM>, Enc_5ab2be {
15962 let Inst{7-5} = 0b000;
15963 let Inst{13-13} = 0b0;
15964 let Inst{31-21} = 0b11101100110;
15965 let hasNewValue = 1;
15966 let opNewValue = 0;
15967 let prefersSlot3 = 1;
15968 }
15969 def M2_mpyu_nac_hh_s0 : HInst<
15970 (outs IntRegs:$Rx32),
15971 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15972 "$Rx32 -= mpyu($Rs32.h,$Rt32.h)",
15973 tc_d773585a, TypeM>, Enc_2ae154 {
15974 let Inst{7-5} = 0b011;
15975 let Inst{13-13} = 0b0;
15976 let Inst{31-21} = 0b11101110011;
15977 let hasNewValue = 1;
15978 let opNewValue = 0;
15979 let prefersSlot3 = 1;
15980 let Constraints = "$Rx32 = $Rx32in";
15981 }
15982 def M2_mpyu_nac_hh_s1 : HInst<
15983 (outs IntRegs:$Rx32),
15984 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15985 "$Rx32 -= mpyu($Rs32.h,$Rt32.h):<<1",
15986 tc_d773585a, TypeM>, Enc_2ae154 {
15987 let Inst{7-5} = 0b011;
15988 let Inst{13-13} = 0b0;
15989 let Inst{31-21} = 0b11101110111;
15990 let hasNewValue = 1;
15991 let opNewValue = 0;
15992 let prefersSlot3 = 1;
15993 let Constraints = "$Rx32 = $Rx32in";
15994 }
15995 def M2_mpyu_nac_hl_s0 : HInst<
15996 (outs IntRegs:$Rx32),
15997 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
15998 "$Rx32 -= mpyu($Rs32.h,$Rt32.l)",
15999 tc_d773585a, TypeM>, Enc_2ae154 {
16000 let Inst{7-5} = 0b010;
16001 let Inst{13-13} = 0b0;
16002 let Inst{31-21} = 0b11101110011;
16003 let hasNewValue = 1;
16004 let opNewValue = 0;
16005 let prefersSlot3 = 1;
16006 let Constraints = "$Rx32 = $Rx32in";
16007 }
16008 def M2_mpyu_nac_hl_s1 : HInst<
16009 (outs IntRegs:$Rx32),
16010 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16011 "$Rx32 -= mpyu($Rs32.h,$Rt32.l):<<1",
16012 tc_d773585a, TypeM>, Enc_2ae154 {
16013 let Inst{7-5} = 0b010;
16014 let Inst{13-13} = 0b0;
16015 let Inst{31-21} = 0b11101110111;
16016 let hasNewValue = 1;
16017 let opNewValue = 0;
16018 let prefersSlot3 = 1;
16019 let Constraints = "$Rx32 = $Rx32in";
16020 }
16021 def M2_mpyu_nac_lh_s0 : HInst<
16022 (outs IntRegs:$Rx32),
16023 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16024 "$Rx32 -= mpyu($Rs32.l,$Rt32.h)",
16025 tc_d773585a, TypeM>, Enc_2ae154 {
16026 let Inst{7-5} = 0b001;
16027 let Inst{13-13} = 0b0;
16028 let Inst{31-21} = 0b11101110011;
16029 let hasNewValue = 1;
16030 let opNewValue = 0;
16031 let prefersSlot3 = 1;
16032 let Constraints = "$Rx32 = $Rx32in";
16033 }
16034 def M2_mpyu_nac_lh_s1 : HInst<
16035 (outs IntRegs:$Rx32),
16036 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16037 "$Rx32 -= mpyu($Rs32.l,$Rt32.h):<<1",
16038 tc_d773585a, TypeM>, Enc_2ae154 {
16039 let Inst{7-5} = 0b001;
16040 let Inst{13-13} = 0b0;
16041 let Inst{31-21} = 0b11101110111;
16042 let hasNewValue = 1;
16043 let opNewValue = 0;
16044 let prefersSlot3 = 1;
16045 let Constraints = "$Rx32 = $Rx32in";
16046 }
16047 def M2_mpyu_nac_ll_s0 : HInst<
16048 (outs IntRegs:$Rx32),
16049 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16050 "$Rx32 -= mpyu($Rs32.l,$Rt32.l)",
16051 tc_d773585a, TypeM>, Enc_2ae154 {
16052 let Inst{7-5} = 0b000;
16053 let Inst{13-13} = 0b0;
16054 let Inst{31-21} = 0b11101110011;
16055 let hasNewValue = 1;
16056 let opNewValue = 0;
16057 let prefersSlot3 = 1;
16058 let Constraints = "$Rx32 = $Rx32in";
16059 }
16060 def M2_mpyu_nac_ll_s1 : HInst<
16061 (outs IntRegs:$Rx32),
16062 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16063 "$Rx32 -= mpyu($Rs32.l,$Rt32.l):<<1",
16064 tc_d773585a, TypeM>, Enc_2ae154 {
16065 let Inst{7-5} = 0b000;
16066 let Inst{13-13} = 0b0;
16067 let Inst{31-21} = 0b11101110111;
16068 let hasNewValue = 1;
16069 let opNewValue = 0;
16070 let prefersSlot3 = 1;
16071 let Constraints = "$Rx32 = $Rx32in";
16072 }
16073 def M2_mpyu_up : HInst<
16074 (outs IntRegs:$Rd32),
16075 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16076 "$Rd32 = mpyu($Rs32,$Rt32)",
16077 tc_bafaade3, TypeM>, Enc_5ab2be {
16078 let Inst{7-5} = 0b001;
16079 let Inst{13-13} = 0b0;
16080 let Inst{31-21} = 0b11101101010;
16081 let hasNewValue = 1;
16082 let opNewValue = 0;
16083 let prefersSlot3 = 1;
16084 }
16085 def M2_mpyud_acc_hh_s0 : HInst<
16086 (outs DoubleRegs:$Rxx32),
16087 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16088 "$Rxx32 += mpyu($Rs32.h,$Rt32.h)",
16089 tc_d773585a, TypeM>, Enc_61f0b0 {
16090 let Inst{7-5} = 0b011;
16091 let Inst{13-13} = 0b0;
16092 let Inst{31-21} = 0b11100110010;
16093 let prefersSlot3 = 1;
16094 let Constraints = "$Rxx32 = $Rxx32in";
16095 }
16096 def M2_mpyud_acc_hh_s1 : HInst<
16097 (outs DoubleRegs:$Rxx32),
16098 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16099 "$Rxx32 += mpyu($Rs32.h,$Rt32.h):<<1",
16100 tc_d773585a, TypeM>, Enc_61f0b0 {
16101 let Inst{7-5} = 0b011;
16102 let Inst{13-13} = 0b0;
16103 let Inst{31-21} = 0b11100110110;
16104 let prefersSlot3 = 1;
16105 let Constraints = "$Rxx32 = $Rxx32in";
16106 }
16107 def M2_mpyud_acc_hl_s0 : HInst<
16108 (outs DoubleRegs:$Rxx32),
16109 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16110 "$Rxx32 += mpyu($Rs32.h,$Rt32.l)",
16111 tc_d773585a, TypeM>, Enc_61f0b0 {
16112 let Inst{7-5} = 0b010;
16113 let Inst{13-13} = 0b0;
16114 let Inst{31-21} = 0b11100110010;
16115 let prefersSlot3 = 1;
16116 let Constraints = "$Rxx32 = $Rxx32in";
16117 }
16118 def M2_mpyud_acc_hl_s1 : HInst<
16119 (outs DoubleRegs:$Rxx32),
16120 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16121 "$Rxx32 += mpyu($Rs32.h,$Rt32.l):<<1",
16122 tc_d773585a, TypeM>, Enc_61f0b0 {
16123 let Inst{7-5} = 0b010;
16124 let Inst{13-13} = 0b0;
16125 let Inst{31-21} = 0b11100110110;
16126 let prefersSlot3 = 1;
16127 let Constraints = "$Rxx32 = $Rxx32in";
16128 }
16129 def M2_mpyud_acc_lh_s0 : HInst<
16130 (outs DoubleRegs:$Rxx32),
16131 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16132 "$Rxx32 += mpyu($Rs32.l,$Rt32.h)",
16133 tc_d773585a, TypeM>, Enc_61f0b0 {
16134 let Inst{7-5} = 0b001;
16135 let Inst{13-13} = 0b0;
16136 let Inst{31-21} = 0b11100110010;
16137 let prefersSlot3 = 1;
16138 let Constraints = "$Rxx32 = $Rxx32in";
16139 }
16140 def M2_mpyud_acc_lh_s1 : HInst<
16141 (outs DoubleRegs:$Rxx32),
16142 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16143 "$Rxx32 += mpyu($Rs32.l,$Rt32.h):<<1",
16144 tc_d773585a, TypeM>, Enc_61f0b0 {
16145 let Inst{7-5} = 0b001;
16146 let Inst{13-13} = 0b0;
16147 let Inst{31-21} = 0b11100110110;
16148 let prefersSlot3 = 1;
16149 let Constraints = "$Rxx32 = $Rxx32in";
16150 }
16151 def M2_mpyud_acc_ll_s0 : HInst<
16152 (outs DoubleRegs:$Rxx32),
16153 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16154 "$Rxx32 += mpyu($Rs32.l,$Rt32.l)",
16155 tc_d773585a, TypeM>, Enc_61f0b0 {
16156 let Inst{7-5} = 0b000;
16157 let Inst{13-13} = 0b0;
16158 let Inst{31-21} = 0b11100110010;
16159 let prefersSlot3 = 1;
16160 let Constraints = "$Rxx32 = $Rxx32in";
16161 }
16162 def M2_mpyud_acc_ll_s1 : HInst<
16163 (outs DoubleRegs:$Rxx32),
16164 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16165 "$Rxx32 += mpyu($Rs32.l,$Rt32.l):<<1",
16166 tc_d773585a, TypeM>, Enc_61f0b0 {
16167 let Inst{7-5} = 0b000;
16168 let Inst{13-13} = 0b0;
16169 let Inst{31-21} = 0b11100110110;
16170 let prefersSlot3 = 1;
16171 let Constraints = "$Rxx32 = $Rxx32in";
16172 }
16173 def M2_mpyud_hh_s0 : HInst<
16174 (outs DoubleRegs:$Rdd32),
16175 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16176 "$Rdd32 = mpyu($Rs32.h,$Rt32.h)",
16177 tc_bafaade3, TypeM>, Enc_be32a5 {
16178 let Inst{7-5} = 0b011;
16179 let Inst{13-13} = 0b0;
16180 let Inst{31-21} = 0b11100100010;
16181 let prefersSlot3 = 1;
16182 }
16183 def M2_mpyud_hh_s1 : HInst<
16184 (outs DoubleRegs:$Rdd32),
16185 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16186 "$Rdd32 = mpyu($Rs32.h,$Rt32.h):<<1",
16187 tc_bafaade3, TypeM>, Enc_be32a5 {
16188 let Inst{7-5} = 0b011;
16189 let Inst{13-13} = 0b0;
16190 let Inst{31-21} = 0b11100100110;
16191 let prefersSlot3 = 1;
16192 }
16193 def M2_mpyud_hl_s0 : HInst<
16194 (outs DoubleRegs:$Rdd32),
16195 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16196 "$Rdd32 = mpyu($Rs32.h,$Rt32.l)",
16197 tc_bafaade3, TypeM>, Enc_be32a5 {
16198 let Inst{7-5} = 0b010;
16199 let Inst{13-13} = 0b0;
16200 let Inst{31-21} = 0b11100100010;
16201 let prefersSlot3 = 1;
16202 }
16203 def M2_mpyud_hl_s1 : HInst<
16204 (outs DoubleRegs:$Rdd32),
16205 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16206 "$Rdd32 = mpyu($Rs32.h,$Rt32.l):<<1",
16207 tc_bafaade3, TypeM>, Enc_be32a5 {
16208 let Inst{7-5} = 0b010;
16209 let Inst{13-13} = 0b0;
16210 let Inst{31-21} = 0b11100100110;
16211 let prefersSlot3 = 1;
16212 }
16213 def M2_mpyud_lh_s0 : HInst<
16214 (outs DoubleRegs:$Rdd32),
16215 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16216 "$Rdd32 = mpyu($Rs32.l,$Rt32.h)",
16217 tc_bafaade3, TypeM>, Enc_be32a5 {
16218 let Inst{7-5} = 0b001;
16219 let Inst{13-13} = 0b0;
16220 let Inst{31-21} = 0b11100100010;
16221 let prefersSlot3 = 1;
16222 }
16223 def M2_mpyud_lh_s1 : HInst<
16224 (outs DoubleRegs:$Rdd32),
16225 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16226 "$Rdd32 = mpyu($Rs32.l,$Rt32.h):<<1",
16227 tc_bafaade3, TypeM>, Enc_be32a5 {
16228 let Inst{7-5} = 0b001;
16229 let Inst{13-13} = 0b0;
16230 let Inst{31-21} = 0b11100100110;
16231 let prefersSlot3 = 1;
16232 }
16233 def M2_mpyud_ll_s0 : HInst<
16234 (outs DoubleRegs:$Rdd32),
16235 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16236 "$Rdd32 = mpyu($Rs32.l,$Rt32.l)",
16237 tc_bafaade3, TypeM>, Enc_be32a5 {
16238 let Inst{7-5} = 0b000;
16239 let Inst{13-13} = 0b0;
16240 let Inst{31-21} = 0b11100100010;
16241 let prefersSlot3 = 1;
16242 }
16243 def M2_mpyud_ll_s1 : HInst<
16244 (outs DoubleRegs:$Rdd32),
16245 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16246 "$Rdd32 = mpyu($Rs32.l,$Rt32.l):<<1",
16247 tc_bafaade3, TypeM>, Enc_be32a5 {
16248 let Inst{7-5} = 0b000;
16249 let Inst{13-13} = 0b0;
16250 let Inst{31-21} = 0b11100100110;
16251 let prefersSlot3 = 1;
16252 }
16253 def M2_mpyud_nac_hh_s0 : HInst<
16254 (outs DoubleRegs:$Rxx32),
16255 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16256 "$Rxx32 -= mpyu($Rs32.h,$Rt32.h)",
16257 tc_d773585a, TypeM>, Enc_61f0b0 {
16258 let Inst{7-5} = 0b011;
16259 let Inst{13-13} = 0b0;
16260 let Inst{31-21} = 0b11100110011;
16261 let prefersSlot3 = 1;
16262 let Constraints = "$Rxx32 = $Rxx32in";
16263 }
16264 def M2_mpyud_nac_hh_s1 : HInst<
16265 (outs DoubleRegs:$Rxx32),
16266 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16267 "$Rxx32 -= mpyu($Rs32.h,$Rt32.h):<<1",
16268 tc_d773585a, TypeM>, Enc_61f0b0 {
16269 let Inst{7-5} = 0b011;
16270 let Inst{13-13} = 0b0;
16271 let Inst{31-21} = 0b11100110111;
16272 let prefersSlot3 = 1;
16273 let Constraints = "$Rxx32 = $Rxx32in";
16274 }
16275 def M2_mpyud_nac_hl_s0 : HInst<
16276 (outs DoubleRegs:$Rxx32),
16277 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16278 "$Rxx32 -= mpyu($Rs32.h,$Rt32.l)",
16279 tc_d773585a, TypeM>, Enc_61f0b0 {
16280 let Inst{7-5} = 0b010;
16281 let Inst{13-13} = 0b0;
16282 let Inst{31-21} = 0b11100110011;
16283 let prefersSlot3 = 1;
16284 let Constraints = "$Rxx32 = $Rxx32in";
16285 }
16286 def M2_mpyud_nac_hl_s1 : HInst<
16287 (outs DoubleRegs:$Rxx32),
16288 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16289 "$Rxx32 -= mpyu($Rs32.h,$Rt32.l):<<1",
16290 tc_d773585a, TypeM>, Enc_61f0b0 {
16291 let Inst{7-5} = 0b010;
16292 let Inst{13-13} = 0b0;
16293 let Inst{31-21} = 0b11100110111;
16294 let prefersSlot3 = 1;
16295 let Constraints = "$Rxx32 = $Rxx32in";
16296 }
16297 def M2_mpyud_nac_lh_s0 : HInst<
16298 (outs DoubleRegs:$Rxx32),
16299 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16300 "$Rxx32 -= mpyu($Rs32.l,$Rt32.h)",
16301 tc_d773585a, TypeM>, Enc_61f0b0 {
16302 let Inst{7-5} = 0b001;
16303 let Inst{13-13} = 0b0;
16304 let Inst{31-21} = 0b11100110011;
16305 let prefersSlot3 = 1;
16306 let Constraints = "$Rxx32 = $Rxx32in";
16307 }
16308 def M2_mpyud_nac_lh_s1 : HInst<
16309 (outs DoubleRegs:$Rxx32),
16310 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16311 "$Rxx32 -= mpyu($Rs32.l,$Rt32.h):<<1",
16312 tc_d773585a, TypeM>, Enc_61f0b0 {
16313 let Inst{7-5} = 0b001;
16314 let Inst{13-13} = 0b0;
16315 let Inst{31-21} = 0b11100110111;
16316 let prefersSlot3 = 1;
16317 let Constraints = "$Rxx32 = $Rxx32in";
16318 }
16319 def M2_mpyud_nac_ll_s0 : HInst<
16320 (outs DoubleRegs:$Rxx32),
16321 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16322 "$Rxx32 -= mpyu($Rs32.l,$Rt32.l)",
16323 tc_d773585a, TypeM>, Enc_61f0b0 {
16324 let Inst{7-5} = 0b000;
16325 let Inst{13-13} = 0b0;
16326 let Inst{31-21} = 0b11100110011;
16327 let prefersSlot3 = 1;
16328 let Constraints = "$Rxx32 = $Rxx32in";
16329 }
16330 def M2_mpyud_nac_ll_s1 : HInst<
16331 (outs DoubleRegs:$Rxx32),
16332 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16333 "$Rxx32 -= mpyu($Rs32.l,$Rt32.l):<<1",
16334 tc_d773585a, TypeM>, Enc_61f0b0 {
16335 let Inst{7-5} = 0b000;
16336 let Inst{13-13} = 0b0;
16337 let Inst{31-21} = 0b11100110111;
16338 let prefersSlot3 = 1;
16339 let Constraints = "$Rxx32 = $Rxx32in";
16340 }
16341 def M2_mpyui : HInst<
16342 (outs IntRegs:$Rd32),
16343 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16344 "$Rd32 = mpyui($Rs32,$Rt32)",
16345 tc_bafaade3, TypeM> {
16346 let hasNewValue = 1;
16347 let opNewValue = 0;
16348 let isPseudo = 1;
16349 let isCodeGenOnly = 1;
16350 }
16351 def M2_nacci : HInst<
16352 (outs IntRegs:$Rx32),
16353 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16354 "$Rx32 -= add($Rs32,$Rt32)",
16355 tc_f675fee8, TypeM>, Enc_2ae154 {
16356 let Inst{7-5} = 0b001;
16357 let Inst{13-13} = 0b0;
16358 let Inst{31-21} = 0b11101111100;
16359 let hasNewValue = 1;
16360 let opNewValue = 0;
16361 let prefersSlot3 = 1;
16362 let InputType = "reg";
16363 let Constraints = "$Rx32 = $Rx32in";
16364 }
16365 def M2_naccii : HInst<
16366 (outs IntRegs:$Rx32),
16367 (ins IntRegs:$Rx32in, IntRegs:$Rs32, s32_0Imm:$Ii),
16368 "$Rx32 -= add($Rs32,#$Ii)",
16369 tc_f675fee8, TypeM>, Enc_c90aca {
16370 let Inst{13-13} = 0b0;
16371 let Inst{31-21} = 0b11100010100;
16372 let hasNewValue = 1;
16373 let opNewValue = 0;
16374 let prefersSlot3 = 1;
16375 let InputType = "imm";
16376 let isExtendable = 1;
16377 let opExtendable = 3;
16378 let isExtentSigned = 1;
16379 let opExtentBits = 8;
16380 let opExtentAlign = 0;
16381 let Constraints = "$Rx32 = $Rx32in";
16382 }
16383 def M2_subacc : HInst<
16384 (outs IntRegs:$Rx32),
16385 (ins IntRegs:$Rx32in, IntRegs:$Rt32, IntRegs:$Rs32),
16386 "$Rx32 += sub($Rt32,$Rs32)",
16387 tc_f675fee8, TypeM>, Enc_a568d4 {
16388 let Inst{7-5} = 0b011;
16389 let Inst{13-13} = 0b0;
16390 let Inst{31-21} = 0b11101111000;
16391 let hasNewValue = 1;
16392 let opNewValue = 0;
16393 let prefersSlot3 = 1;
16394 let InputType = "reg";
16395 let Constraints = "$Rx32 = $Rx32in";
16396 }
16397 def M2_vabsdiffh : HInst<
16398 (outs DoubleRegs:$Rdd32),
16399 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
16400 "$Rdd32 = vabsdiffh($Rtt32,$Rss32)",
16401 tc_002cb246, TypeM>, Enc_ea23e4 {
16402 let Inst{7-5} = 0b000;
16403 let Inst{13-13} = 0b0;
16404 let Inst{31-21} = 0b11101000011;
16405 let prefersSlot3 = 1;
16406 }
16407 def M2_vabsdiffw : HInst<
16408 (outs DoubleRegs:$Rdd32),
16409 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
16410 "$Rdd32 = vabsdiffw($Rtt32,$Rss32)",
16411 tc_002cb246, TypeM>, Enc_ea23e4 {
16412 let Inst{7-5} = 0b000;
16413 let Inst{13-13} = 0b0;
16414 let Inst{31-21} = 0b11101000001;
16415 let prefersSlot3 = 1;
16416 }
16417 def M2_vcmac_s0_sat_i : HInst<
16418 (outs DoubleRegs:$Rxx32),
16419 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16420 "$Rxx32 += vcmpyi($Rss32,$Rtt32):sat",
16421 tc_d773585a, TypeM>, Enc_88c16c {
16422 let Inst{7-5} = 0b100;
16423 let Inst{13-13} = 0b0;
16424 let Inst{31-21} = 0b11101010010;
16425 let prefersSlot3 = 1;
16426 let Defs = [USR_OVF];
16427 let Constraints = "$Rxx32 = $Rxx32in";
16428 }
16429 def M2_vcmac_s0_sat_r : HInst<
16430 (outs DoubleRegs:$Rxx32),
16431 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16432 "$Rxx32 += vcmpyr($Rss32,$Rtt32):sat",
16433 tc_d773585a, TypeM>, Enc_88c16c {
16434 let Inst{7-5} = 0b100;
16435 let Inst{13-13} = 0b0;
16436 let Inst{31-21} = 0b11101010001;
16437 let prefersSlot3 = 1;
16438 let Defs = [USR_OVF];
16439 let Constraints = "$Rxx32 = $Rxx32in";
16440 }
16441 def M2_vcmpy_s0_sat_i : HInst<
16442 (outs DoubleRegs:$Rdd32),
16443 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16444 "$Rdd32 = vcmpyi($Rss32,$Rtt32):sat",
16445 tc_bafaade3, TypeM>, Enc_a56825 {
16446 let Inst{7-5} = 0b110;
16447 let Inst{13-13} = 0b0;
16448 let Inst{31-21} = 0b11101000010;
16449 let prefersSlot3 = 1;
16450 let Defs = [USR_OVF];
16451 }
16452 def M2_vcmpy_s0_sat_r : HInst<
16453 (outs DoubleRegs:$Rdd32),
16454 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16455 "$Rdd32 = vcmpyr($Rss32,$Rtt32):sat",
16456 tc_bafaade3, TypeM>, Enc_a56825 {
16457 let Inst{7-5} = 0b110;
16458 let Inst{13-13} = 0b0;
16459 let Inst{31-21} = 0b11101000001;
16460 let prefersSlot3 = 1;
16461 let Defs = [USR_OVF];
16462 }
16463 def M2_vcmpy_s1_sat_i : HInst<
16464 (outs DoubleRegs:$Rdd32),
16465 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16466 "$Rdd32 = vcmpyi($Rss32,$Rtt32):<<1:sat",
16467 tc_bafaade3, TypeM>, Enc_a56825 {
16468 let Inst{7-5} = 0b110;
16469 let Inst{13-13} = 0b0;
16470 let Inst{31-21} = 0b11101000110;
16471 let prefersSlot3 = 1;
16472 let Defs = [USR_OVF];
16473 }
16474 def M2_vcmpy_s1_sat_r : HInst<
16475 (outs DoubleRegs:$Rdd32),
16476 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16477 "$Rdd32 = vcmpyr($Rss32,$Rtt32):<<1:sat",
16478 tc_bafaade3, TypeM>, Enc_a56825 {
16479 let Inst{7-5} = 0b110;
16480 let Inst{13-13} = 0b0;
16481 let Inst{31-21} = 0b11101000101;
16482 let prefersSlot3 = 1;
16483 let Defs = [USR_OVF];
16484 }
16485 def M2_vdmacs_s0 : HInst<
16486 (outs DoubleRegs:$Rxx32),
16487 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16488 "$Rxx32 += vdmpy($Rss32,$Rtt32):sat",
16489 tc_d773585a, TypeM>, Enc_88c16c {
16490 let Inst{7-5} = 0b100;
16491 let Inst{13-13} = 0b0;
16492 let Inst{31-21} = 0b11101010000;
16493 let prefersSlot3 = 1;
16494 let Defs = [USR_OVF];
16495 let Constraints = "$Rxx32 = $Rxx32in";
16496 }
16497 def M2_vdmacs_s1 : HInst<
16498 (outs DoubleRegs:$Rxx32),
16499 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16500 "$Rxx32 += vdmpy($Rss32,$Rtt32):<<1:sat",
16501 tc_d773585a, TypeM>, Enc_88c16c {
16502 let Inst{7-5} = 0b100;
16503 let Inst{13-13} = 0b0;
16504 let Inst{31-21} = 0b11101010100;
16505 let prefersSlot3 = 1;
16506 let Defs = [USR_OVF];
16507 let Constraints = "$Rxx32 = $Rxx32in";
16508 }
16509 def M2_vdmpyrs_s0 : HInst<
16510 (outs IntRegs:$Rd32),
16511 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16512 "$Rd32 = vdmpy($Rss32,$Rtt32):rnd:sat",
16513 tc_bafaade3, TypeM>, Enc_d2216a {
16514 let Inst{7-5} = 0b000;
16515 let Inst{13-13} = 0b0;
16516 let Inst{31-21} = 0b11101001000;
16517 let hasNewValue = 1;
16518 let opNewValue = 0;
16519 let prefersSlot3 = 1;
16520 let Defs = [USR_OVF];
16521 }
16522 def M2_vdmpyrs_s1 : HInst<
16523 (outs IntRegs:$Rd32),
16524 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16525 "$Rd32 = vdmpy($Rss32,$Rtt32):<<1:rnd:sat",
16526 tc_bafaade3, TypeM>, Enc_d2216a {
16527 let Inst{7-5} = 0b000;
16528 let Inst{13-13} = 0b0;
16529 let Inst{31-21} = 0b11101001100;
16530 let hasNewValue = 1;
16531 let opNewValue = 0;
16532 let prefersSlot3 = 1;
16533 let Defs = [USR_OVF];
16534 }
16535 def M2_vdmpys_s0 : HInst<
16536 (outs DoubleRegs:$Rdd32),
16537 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16538 "$Rdd32 = vdmpy($Rss32,$Rtt32):sat",
16539 tc_bafaade3, TypeM>, Enc_a56825 {
16540 let Inst{7-5} = 0b100;
16541 let Inst{13-13} = 0b0;
16542 let Inst{31-21} = 0b11101000000;
16543 let prefersSlot3 = 1;
16544 let Defs = [USR_OVF];
16545 }
16546 def M2_vdmpys_s1 : HInst<
16547 (outs DoubleRegs:$Rdd32),
16548 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16549 "$Rdd32 = vdmpy($Rss32,$Rtt32):<<1:sat",
16550 tc_bafaade3, TypeM>, Enc_a56825 {
16551 let Inst{7-5} = 0b100;
16552 let Inst{13-13} = 0b0;
16553 let Inst{31-21} = 0b11101000100;
16554 let prefersSlot3 = 1;
16555 let Defs = [USR_OVF];
16556 }
16557 def M2_vmac2 : HInst<
16558 (outs DoubleRegs:$Rxx32),
16559 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16560 "$Rxx32 += vmpyh($Rs32,$Rt32)",
16561 tc_d773585a, TypeM>, Enc_61f0b0 {
16562 let Inst{7-5} = 0b001;
16563 let Inst{13-13} = 0b0;
16564 let Inst{31-21} = 0b11100111001;
16565 let prefersSlot3 = 1;
16566 let Constraints = "$Rxx32 = $Rxx32in";
16567 }
16568 def M2_vmac2es : HInst<
16569 (outs DoubleRegs:$Rxx32),
16570 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16571 "$Rxx32 += vmpyeh($Rss32,$Rtt32)",
16572 tc_d773585a, TypeM>, Enc_88c16c {
16573 let Inst{7-5} = 0b010;
16574 let Inst{13-13} = 0b0;
16575 let Inst{31-21} = 0b11101010001;
16576 let prefersSlot3 = 1;
16577 let Constraints = "$Rxx32 = $Rxx32in";
16578 }
16579 def M2_vmac2es_s0 : HInst<
16580 (outs DoubleRegs:$Rxx32),
16581 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16582 "$Rxx32 += vmpyeh($Rss32,$Rtt32):sat",
16583 tc_d773585a, TypeM>, Enc_88c16c {
16584 let Inst{7-5} = 0b110;
16585 let Inst{13-13} = 0b0;
16586 let Inst{31-21} = 0b11101010000;
16587 let prefersSlot3 = 1;
16588 let Defs = [USR_OVF];
16589 let Constraints = "$Rxx32 = $Rxx32in";
16590 }
16591 def M2_vmac2es_s1 : HInst<
16592 (outs DoubleRegs:$Rxx32),
16593 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16594 "$Rxx32 += vmpyeh($Rss32,$Rtt32):<<1:sat",
16595 tc_d773585a, TypeM>, Enc_88c16c {
16596 let Inst{7-5} = 0b110;
16597 let Inst{13-13} = 0b0;
16598 let Inst{31-21} = 0b11101010100;
16599 let prefersSlot3 = 1;
16600 let Defs = [USR_OVF];
16601 let Constraints = "$Rxx32 = $Rxx32in";
16602 }
16603 def M2_vmac2s_s0 : HInst<
16604 (outs DoubleRegs:$Rxx32),
16605 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16606 "$Rxx32 += vmpyh($Rs32,$Rt32):sat",
16607 tc_d773585a, TypeM>, Enc_61f0b0 {
16608 let Inst{7-5} = 0b101;
16609 let Inst{13-13} = 0b0;
16610 let Inst{31-21} = 0b11100111000;
16611 let prefersSlot3 = 1;
16612 let Defs = [USR_OVF];
16613 let Constraints = "$Rxx32 = $Rxx32in";
16614 }
16615 def M2_vmac2s_s1 : HInst<
16616 (outs DoubleRegs:$Rxx32),
16617 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16618 "$Rxx32 += vmpyh($Rs32,$Rt32):<<1:sat",
16619 tc_d773585a, TypeM>, Enc_61f0b0 {
16620 let Inst{7-5} = 0b101;
16621 let Inst{13-13} = 0b0;
16622 let Inst{31-21} = 0b11100111100;
16623 let prefersSlot3 = 1;
16624 let Defs = [USR_OVF];
16625 let Constraints = "$Rxx32 = $Rxx32in";
16626 }
16627 def M2_vmac2su_s0 : HInst<
16628 (outs DoubleRegs:$Rxx32),
16629 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16630 "$Rxx32 += vmpyhsu($Rs32,$Rt32):sat",
16631 tc_d773585a, TypeM>, Enc_61f0b0 {
16632 let Inst{7-5} = 0b101;
16633 let Inst{13-13} = 0b0;
16634 let Inst{31-21} = 0b11100111011;
16635 let prefersSlot3 = 1;
16636 let Defs = [USR_OVF];
16637 let Constraints = "$Rxx32 = $Rxx32in";
16638 }
16639 def M2_vmac2su_s1 : HInst<
16640 (outs DoubleRegs:$Rxx32),
16641 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16642 "$Rxx32 += vmpyhsu($Rs32,$Rt32):<<1:sat",
16643 tc_d773585a, TypeM>, Enc_61f0b0 {
16644 let Inst{7-5} = 0b101;
16645 let Inst{13-13} = 0b0;
16646 let Inst{31-21} = 0b11100111111;
16647 let prefersSlot3 = 1;
16648 let Defs = [USR_OVF];
16649 let Constraints = "$Rxx32 = $Rxx32in";
16650 }
16651 def M2_vmpy2es_s0 : HInst<
16652 (outs DoubleRegs:$Rdd32),
16653 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16654 "$Rdd32 = vmpyeh($Rss32,$Rtt32):sat",
16655 tc_bafaade3, TypeM>, Enc_a56825 {
16656 let Inst{7-5} = 0b110;
16657 let Inst{13-13} = 0b0;
16658 let Inst{31-21} = 0b11101000000;
16659 let prefersSlot3 = 1;
16660 let Defs = [USR_OVF];
16661 }
16662 def M2_vmpy2es_s1 : HInst<
16663 (outs DoubleRegs:$Rdd32),
16664 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16665 "$Rdd32 = vmpyeh($Rss32,$Rtt32):<<1:sat",
16666 tc_bafaade3, TypeM>, Enc_a56825 {
16667 let Inst{7-5} = 0b110;
16668 let Inst{13-13} = 0b0;
16669 let Inst{31-21} = 0b11101000100;
16670 let prefersSlot3 = 1;
16671 let Defs = [USR_OVF];
16672 }
16673 def M2_vmpy2s_s0 : HInst<
16674 (outs DoubleRegs:$Rdd32),
16675 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16676 "$Rdd32 = vmpyh($Rs32,$Rt32):sat",
16677 tc_bafaade3, TypeM>, Enc_be32a5 {
16678 let Inst{7-5} = 0b101;
16679 let Inst{13-13} = 0b0;
16680 let Inst{31-21} = 0b11100101000;
16681 let prefersSlot3 = 1;
16682 let Defs = [USR_OVF];
16683 }
16684 def M2_vmpy2s_s0pack : HInst<
16685 (outs IntRegs:$Rd32),
16686 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16687 "$Rd32 = vmpyh($Rs32,$Rt32):rnd:sat",
16688 tc_bafaade3, TypeM>, Enc_5ab2be {
16689 let Inst{7-5} = 0b111;
16690 let Inst{13-13} = 0b0;
16691 let Inst{31-21} = 0b11101101001;
16692 let hasNewValue = 1;
16693 let opNewValue = 0;
16694 let prefersSlot3 = 1;
16695 let Defs = [USR_OVF];
16696 }
16697 def M2_vmpy2s_s1 : HInst<
16698 (outs DoubleRegs:$Rdd32),
16699 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16700 "$Rdd32 = vmpyh($Rs32,$Rt32):<<1:sat",
16701 tc_bafaade3, TypeM>, Enc_be32a5 {
16702 let Inst{7-5} = 0b101;
16703 let Inst{13-13} = 0b0;
16704 let Inst{31-21} = 0b11100101100;
16705 let prefersSlot3 = 1;
16706 let Defs = [USR_OVF];
16707 }
16708 def M2_vmpy2s_s1pack : HInst<
16709 (outs IntRegs:$Rd32),
16710 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16711 "$Rd32 = vmpyh($Rs32,$Rt32):<<1:rnd:sat",
16712 tc_bafaade3, TypeM>, Enc_5ab2be {
16713 let Inst{7-5} = 0b111;
16714 let Inst{13-13} = 0b0;
16715 let Inst{31-21} = 0b11101101101;
16716 let hasNewValue = 1;
16717 let opNewValue = 0;
16718 let prefersSlot3 = 1;
16719 let Defs = [USR_OVF];
16720 }
16721 def M2_vmpy2su_s0 : HInst<
16722 (outs DoubleRegs:$Rdd32),
16723 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16724 "$Rdd32 = vmpyhsu($Rs32,$Rt32):sat",
16725 tc_bafaade3, TypeM>, Enc_be32a5 {
16726 let Inst{7-5} = 0b111;
16727 let Inst{13-13} = 0b0;
16728 let Inst{31-21} = 0b11100101000;
16729 let prefersSlot3 = 1;
16730 let Defs = [USR_OVF];
16731 }
16732 def M2_vmpy2su_s1 : HInst<
16733 (outs DoubleRegs:$Rdd32),
16734 (ins IntRegs:$Rs32, IntRegs:$Rt32),
16735 "$Rdd32 = vmpyhsu($Rs32,$Rt32):<<1:sat",
16736 tc_bafaade3, TypeM>, Enc_be32a5 {
16737 let Inst{7-5} = 0b111;
16738 let Inst{13-13} = 0b0;
16739 let Inst{31-21} = 0b11100101100;
16740 let prefersSlot3 = 1;
16741 let Defs = [USR_OVF];
16742 }
16743 def M2_vraddh : HInst<
16744 (outs IntRegs:$Rd32),
16745 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16746 "$Rd32 = vraddh($Rss32,$Rtt32)",
16747 tc_bafaade3, TypeM>, Enc_d2216a {
16748 let Inst{7-5} = 0b111;
16749 let Inst{13-13} = 0b0;
16750 let Inst{31-21} = 0b11101001001;
16751 let hasNewValue = 1;
16752 let opNewValue = 0;
16753 let prefersSlot3 = 1;
16754 }
16755 def M2_vradduh : HInst<
16756 (outs IntRegs:$Rd32),
16757 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16758 "$Rd32 = vradduh($Rss32,$Rtt32)",
16759 tc_bafaade3, TypeM>, Enc_d2216a {
16760 let Inst{7-5} = 0b001;
16761 let Inst{13-13} = 0b0;
16762 let Inst{31-21} = 0b11101001000;
16763 let hasNewValue = 1;
16764 let opNewValue = 0;
16765 let prefersSlot3 = 1;
16766 }
16767 def M2_vrcmaci_s0 : HInst<
16768 (outs DoubleRegs:$Rxx32),
16769 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16770 "$Rxx32 += vrcmpyi($Rss32,$Rtt32)",
16771 tc_d773585a, TypeM>, Enc_88c16c {
16772 let Inst{7-5} = 0b000;
16773 let Inst{13-13} = 0b0;
16774 let Inst{31-21} = 0b11101010000;
16775 let prefersSlot3 = 1;
16776 let Constraints = "$Rxx32 = $Rxx32in";
16777 }
16778 def M2_vrcmaci_s0c : HInst<
16779 (outs DoubleRegs:$Rxx32),
16780 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16781 "$Rxx32 += vrcmpyi($Rss32,$Rtt32*)",
16782 tc_d773585a, TypeM>, Enc_88c16c {
16783 let Inst{7-5} = 0b000;
16784 let Inst{13-13} = 0b0;
16785 let Inst{31-21} = 0b11101010010;
16786 let prefersSlot3 = 1;
16787 let Constraints = "$Rxx32 = $Rxx32in";
16788 }
16789 def M2_vrcmacr_s0 : HInst<
16790 (outs DoubleRegs:$Rxx32),
16791 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16792 "$Rxx32 += vrcmpyr($Rss32,$Rtt32)",
16793 tc_d773585a, TypeM>, Enc_88c16c {
16794 let Inst{7-5} = 0b001;
16795 let Inst{13-13} = 0b0;
16796 let Inst{31-21} = 0b11101010000;
16797 let prefersSlot3 = 1;
16798 let Constraints = "$Rxx32 = $Rxx32in";
16799 }
16800 def M2_vrcmacr_s0c : HInst<
16801 (outs DoubleRegs:$Rxx32),
16802 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16803 "$Rxx32 += vrcmpyr($Rss32,$Rtt32*)",
16804 tc_d773585a, TypeM>, Enc_88c16c {
16805 let Inst{7-5} = 0b001;
16806 let Inst{13-13} = 0b0;
16807 let Inst{31-21} = 0b11101010011;
16808 let prefersSlot3 = 1;
16809 let Constraints = "$Rxx32 = $Rxx32in";
16810 }
16811 def M2_vrcmpyi_s0 : HInst<
16812 (outs DoubleRegs:$Rdd32),
16813 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16814 "$Rdd32 = vrcmpyi($Rss32,$Rtt32)",
16815 tc_bafaade3, TypeM>, Enc_a56825 {
16816 let Inst{7-5} = 0b000;
16817 let Inst{13-13} = 0b0;
16818 let Inst{31-21} = 0b11101000000;
16819 let prefersSlot3 = 1;
16820 }
16821 def M2_vrcmpyi_s0c : HInst<
16822 (outs DoubleRegs:$Rdd32),
16823 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16824 "$Rdd32 = vrcmpyi($Rss32,$Rtt32*)",
16825 tc_bafaade3, TypeM>, Enc_a56825 {
16826 let Inst{7-5} = 0b000;
16827 let Inst{13-13} = 0b0;
16828 let Inst{31-21} = 0b11101000010;
16829 let prefersSlot3 = 1;
16830 }
16831 def M2_vrcmpyr_s0 : HInst<
16832 (outs DoubleRegs:$Rdd32),
16833 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16834 "$Rdd32 = vrcmpyr($Rss32,$Rtt32)",
16835 tc_bafaade3, TypeM>, Enc_a56825 {
16836 let Inst{7-5} = 0b001;
16837 let Inst{13-13} = 0b0;
16838 let Inst{31-21} = 0b11101000000;
16839 let prefersSlot3 = 1;
16840 }
16841 def M2_vrcmpyr_s0c : HInst<
16842 (outs DoubleRegs:$Rdd32),
16843 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16844 "$Rdd32 = vrcmpyr($Rss32,$Rtt32*)",
16845 tc_bafaade3, TypeM>, Enc_a56825 {
16846 let Inst{7-5} = 0b001;
16847 let Inst{13-13} = 0b0;
16848 let Inst{31-21} = 0b11101000011;
16849 let prefersSlot3 = 1;
16850 }
16851 def M2_vrcmpys_acc_s1 : HInst<
16852 (outs DoubleRegs:$Rxx32),
16853 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
16854 "$Rxx32 += vrcmpys($Rss32,$Rt32):<<1:sat",
16855 tc_d773585a, TypeM> {
16856 let isPseudo = 1;
16857 let Constraints = "$Rxx32 = $Rxx32in";
16858 }
16859 def M2_vrcmpys_acc_s1_h : HInst<
16860 (outs DoubleRegs:$Rxx32),
16861 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16862 "$Rxx32 += vrcmpys($Rss32,$Rtt32):<<1:sat:raw:hi",
16863 tc_d773585a, TypeM>, Enc_88c16c {
16864 let Inst{7-5} = 0b100;
16865 let Inst{13-13} = 0b0;
16866 let Inst{31-21} = 0b11101010101;
16867 let prefersSlot3 = 1;
16868 let Defs = [USR_OVF];
16869 let Constraints = "$Rxx32 = $Rxx32in";
16870 }
16871 def M2_vrcmpys_acc_s1_l : HInst<
16872 (outs DoubleRegs:$Rxx32),
16873 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16874 "$Rxx32 += vrcmpys($Rss32,$Rtt32):<<1:sat:raw:lo",
16875 tc_d773585a, TypeM>, Enc_88c16c {
16876 let Inst{7-5} = 0b100;
16877 let Inst{13-13} = 0b0;
16878 let Inst{31-21} = 0b11101010111;
16879 let prefersSlot3 = 1;
16880 let Defs = [USR_OVF];
16881 let Constraints = "$Rxx32 = $Rxx32in";
16882 }
16883 def M2_vrcmpys_s1 : HInst<
16884 (outs DoubleRegs:$Rdd32),
16885 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
16886 "$Rdd32 = vrcmpys($Rss32,$Rt32):<<1:sat",
16887 tc_bafaade3, TypeM> {
16888 let isPseudo = 1;
16889 }
16890 def M2_vrcmpys_s1_h : HInst<
16891 (outs DoubleRegs:$Rdd32),
16892 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16893 "$Rdd32 = vrcmpys($Rss32,$Rtt32):<<1:sat:raw:hi",
16894 tc_bafaade3, TypeM>, Enc_a56825 {
16895 let Inst{7-5} = 0b100;
16896 let Inst{13-13} = 0b0;
16897 let Inst{31-21} = 0b11101000101;
16898 let prefersSlot3 = 1;
16899 let Defs = [USR_OVF];
16900 }
16901 def M2_vrcmpys_s1_l : HInst<
16902 (outs DoubleRegs:$Rdd32),
16903 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16904 "$Rdd32 = vrcmpys($Rss32,$Rtt32):<<1:sat:raw:lo",
16905 tc_bafaade3, TypeM>, Enc_a56825 {
16906 let Inst{7-5} = 0b100;
16907 let Inst{13-13} = 0b0;
16908 let Inst{31-21} = 0b11101000111;
16909 let prefersSlot3 = 1;
16910 let Defs = [USR_OVF];
16911 }
16912 def M2_vrcmpys_s1rp : HInst<
16913 (outs IntRegs:$Rd32),
16914 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
16915 "$Rd32 = vrcmpys($Rss32,$Rt32):<<1:rnd:sat",
16916 tc_bafaade3, TypeM> {
16917 let hasNewValue = 1;
16918 let opNewValue = 0;
16919 let isPseudo = 1;
16920 }
16921 def M2_vrcmpys_s1rp_h : HInst<
16922 (outs IntRegs:$Rd32),
16923 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16924 "$Rd32 = vrcmpys($Rss32,$Rtt32):<<1:rnd:sat:raw:hi",
16925 tc_bafaade3, TypeM>, Enc_d2216a {
16926 let Inst{7-5} = 0b110;
16927 let Inst{13-13} = 0b0;
16928 let Inst{31-21} = 0b11101001101;
16929 let hasNewValue = 1;
16930 let opNewValue = 0;
16931 let prefersSlot3 = 1;
16932 let Defs = [USR_OVF];
16933 }
16934 def M2_vrcmpys_s1rp_l : HInst<
16935 (outs IntRegs:$Rd32),
16936 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16937 "$Rd32 = vrcmpys($Rss32,$Rtt32):<<1:rnd:sat:raw:lo",
16938 tc_bafaade3, TypeM>, Enc_d2216a {
16939 let Inst{7-5} = 0b111;
16940 let Inst{13-13} = 0b0;
16941 let Inst{31-21} = 0b11101001101;
16942 let hasNewValue = 1;
16943 let opNewValue = 0;
16944 let prefersSlot3 = 1;
16945 let Defs = [USR_OVF];
16946 }
16947 def M2_vrmac_s0 : HInst<
16948 (outs DoubleRegs:$Rxx32),
16949 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16950 "$Rxx32 += vrmpyh($Rss32,$Rtt32)",
16951 tc_d773585a, TypeM>, Enc_88c16c {
16952 let Inst{7-5} = 0b010;
16953 let Inst{13-13} = 0b0;
16954 let Inst{31-21} = 0b11101010000;
16955 let prefersSlot3 = 1;
16956 let Constraints = "$Rxx32 = $Rxx32in";
16957 }
16958 def M2_vrmpy_s0 : HInst<
16959 (outs DoubleRegs:$Rdd32),
16960 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
16961 "$Rdd32 = vrmpyh($Rss32,$Rtt32)",
16962 tc_bafaade3, TypeM>, Enc_a56825 {
16963 let Inst{7-5} = 0b010;
16964 let Inst{13-13} = 0b0;
16965 let Inst{31-21} = 0b11101000000;
16966 let prefersSlot3 = 1;
16967 }
16968 def M2_xor_xacc : HInst<
16969 (outs IntRegs:$Rx32),
16970 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16971 "$Rx32 ^= xor($Rs32,$Rt32)",
16972 tc_f429765c, TypeM>, Enc_2ae154 {
16973 let Inst{7-5} = 0b011;
16974 let Inst{13-13} = 0b0;
16975 let Inst{31-21} = 0b11101111100;
16976 let hasNewValue = 1;
16977 let opNewValue = 0;
16978 let prefersSlot3 = 1;
16979 let InputType = "reg";
16980 let Constraints = "$Rx32 = $Rx32in";
16981 }
16982 def M4_and_and : HInst<
16983 (outs IntRegs:$Rx32),
16984 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16985 "$Rx32 &= and($Rs32,$Rt32)",
16986 tc_f429765c, TypeM>, Enc_2ae154 {
16987 let Inst{7-5} = 0b000;
16988 let Inst{13-13} = 0b0;
16989 let Inst{31-21} = 0b11101111010;
16990 let hasNewValue = 1;
16991 let opNewValue = 0;
16992 let prefersSlot3 = 1;
16993 let InputType = "reg";
16994 let Constraints = "$Rx32 = $Rx32in";
16995 }
16996 def M4_and_andn : HInst<
16997 (outs IntRegs:$Rx32),
16998 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
16999 "$Rx32 &= and($Rs32,~$Rt32)",
17000 tc_f429765c, TypeM>, Enc_2ae154 {
17001 let Inst{7-5} = 0b001;
17002 let Inst{13-13} = 0b0;
17003 let Inst{31-21} = 0b11101111001;
17004 let hasNewValue = 1;
17005 let opNewValue = 0;
17006 let prefersSlot3 = 1;
17007 let InputType = "reg";
17008 let Constraints = "$Rx32 = $Rx32in";
17009 }
17010 def M4_and_or : HInst<
17011 (outs IntRegs:$Rx32),
17012 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17013 "$Rx32 &= or($Rs32,$Rt32)",
17014 tc_f429765c, TypeM>, Enc_2ae154 {
17015 let Inst{7-5} = 0b001;
17016 let Inst{13-13} = 0b0;
17017 let Inst{31-21} = 0b11101111010;
17018 let hasNewValue = 1;
17019 let opNewValue = 0;
17020 let prefersSlot3 = 1;
17021 let InputType = "reg";
17022 let Constraints = "$Rx32 = $Rx32in";
17023 }
17024 def M4_and_xor : HInst<
17025 (outs IntRegs:$Rx32),
17026 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17027 "$Rx32 &= xor($Rs32,$Rt32)",
17028 tc_f429765c, TypeM>, Enc_2ae154 {
17029 let Inst{7-5} = 0b010;
17030 let Inst{13-13} = 0b0;
17031 let Inst{31-21} = 0b11101111010;
17032 let hasNewValue = 1;
17033 let opNewValue = 0;
17034 let prefersSlot3 = 1;
17035 let InputType = "reg";
17036 let Constraints = "$Rx32 = $Rx32in";
17037 }
17038 def M4_cmpyi_wh : HInst<
17039 (outs IntRegs:$Rd32),
17040 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
17041 "$Rd32 = cmpyiwh($Rss32,$Rt32):<<1:rnd:sat",
17042 tc_bafaade3, TypeS_3op>, Enc_3d5b28 {
17043 let Inst{7-5} = 0b100;
17044 let Inst{13-13} = 0b0;
17045 let Inst{31-21} = 0b11000101000;
17046 let hasNewValue = 1;
17047 let opNewValue = 0;
17048 let prefersSlot3 = 1;
17049 let Defs = [USR_OVF];
17050 }
17051 def M4_cmpyi_whc : HInst<
17052 (outs IntRegs:$Rd32),
17053 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
17054 "$Rd32 = cmpyiwh($Rss32,$Rt32*):<<1:rnd:sat",
17055 tc_bafaade3, TypeS_3op>, Enc_3d5b28 {
17056 let Inst{7-5} = 0b101;
17057 let Inst{13-13} = 0b0;
17058 let Inst{31-21} = 0b11000101000;
17059 let hasNewValue = 1;
17060 let opNewValue = 0;
17061 let prefersSlot3 = 1;
17062 let Defs = [USR_OVF];
17063 }
17064 def M4_cmpyr_wh : HInst<
17065 (outs IntRegs:$Rd32),
17066 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
17067 "$Rd32 = cmpyrwh($Rss32,$Rt32):<<1:rnd:sat",
17068 tc_bafaade3, TypeS_3op>, Enc_3d5b28 {
17069 let Inst{7-5} = 0b110;
17070 let Inst{13-13} = 0b0;
17071 let Inst{31-21} = 0b11000101000;
17072 let hasNewValue = 1;
17073 let opNewValue = 0;
17074 let prefersSlot3 = 1;
17075 let Defs = [USR_OVF];
17076 }
17077 def M4_cmpyr_whc : HInst<
17078 (outs IntRegs:$Rd32),
17079 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
17080 "$Rd32 = cmpyrwh($Rss32,$Rt32*):<<1:rnd:sat",
17081 tc_bafaade3, TypeS_3op>, Enc_3d5b28 {
17082 let Inst{7-5} = 0b111;
17083 let Inst{13-13} = 0b0;
17084 let Inst{31-21} = 0b11000101000;
17085 let hasNewValue = 1;
17086 let opNewValue = 0;
17087 let prefersSlot3 = 1;
17088 let Defs = [USR_OVF];
17089 }
17090 def M4_mac_up_s1_sat : HInst<
17091 (outs IntRegs:$Rx32),
17092 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17093 "$Rx32 += mpy($Rs32,$Rt32):<<1:sat",
17094 tc_d773585a, TypeM>, Enc_2ae154 {
17095 let Inst{7-5} = 0b000;
17096 let Inst{13-13} = 0b0;
17097 let Inst{31-21} = 0b11101111011;
17098 let hasNewValue = 1;
17099 let opNewValue = 0;
17100 let prefersSlot3 = 1;
17101 let Defs = [USR_OVF];
17102 let InputType = "reg";
17103 let Constraints = "$Rx32 = $Rx32in";
17104 }
17105 def M4_mpyri_addi : HInst<
17106 (outs IntRegs:$Rd32),
17107 (ins u32_0Imm:$Ii, IntRegs:$Rs32, u6_0Imm:$II),
17108 "$Rd32 = add(#$Ii,mpyi($Rs32,#$II))",
17109 tc_05d3a09b, TypeALU64>, Enc_322e1b, ImmRegRel {
17110 let Inst{31-24} = 0b11011000;
17111 let hasNewValue = 1;
17112 let opNewValue = 0;
17113 let prefersSlot3 = 1;
17114 let CextOpcode = "M4_mpyri_addr";
17115 let isExtendable = 1;
17116 let opExtendable = 1;
17117 let isExtentSigned = 0;
17118 let opExtentBits = 6;
17119 let opExtentAlign = 0;
17120 }
17121 def M4_mpyri_addr : HInst<
17122 (outs IntRegs:$Rd32),
17123 (ins IntRegs:$Ru32, IntRegs:$Rs32, u32_0Imm:$Ii),
17124 "$Rd32 = add($Ru32,mpyi($Rs32,#$Ii))",
17125 tc_05d3a09b, TypeALU64>, Enc_420cf3, ImmRegRel {
17126 let Inst{31-23} = 0b110111111;
17127 let hasNewValue = 1;
17128 let opNewValue = 0;
17129 let prefersSlot3 = 1;
17130 let CextOpcode = "M4_mpyri_addr";
17131 let InputType = "imm";
17132 let isExtendable = 1;
17133 let opExtendable = 3;
17134 let isExtentSigned = 0;
17135 let opExtentBits = 6;
17136 let opExtentAlign = 0;
17137 }
17138 def M4_mpyri_addr_u2 : HInst<
17139 (outs IntRegs:$Rd32),
17140 (ins IntRegs:$Ru32, u6_2Imm:$Ii, IntRegs:$Rs32),
17141 "$Rd32 = add($Ru32,mpyi(#$Ii,$Rs32))",
17142 tc_1a2fd869, TypeALU64>, Enc_277737 {
17143 let Inst{31-23} = 0b110111110;
17144 let hasNewValue = 1;
17145 let opNewValue = 0;
17146 let prefersSlot3 = 1;
17147 }
17148 def M4_mpyrr_addi : HInst<
17149 (outs IntRegs:$Rd32),
17150 (ins u32_0Imm:$Ii, IntRegs:$Rs32, IntRegs:$Rt32),
17151 "$Rd32 = add(#$Ii,mpyi($Rs32,$Rt32))",
17152 tc_d773585a, TypeALU64>, Enc_a7b8e8, ImmRegRel {
17153 let Inst{31-23} = 0b110101110;
17154 let hasNewValue = 1;
17155 let opNewValue = 0;
17156 let prefersSlot3 = 1;
17157 let CextOpcode = "M4_mpyrr_addr";
17158 let InputType = "imm";
17159 let isExtendable = 1;
17160 let opExtendable = 1;
17161 let isExtentSigned = 0;
17162 let opExtentBits = 6;
17163 let opExtentAlign = 0;
17164 }
17165 def M4_mpyrr_addr : HInst<
17166 (outs IntRegs:$Ry32),
17167 (ins IntRegs:$Ru32, IntRegs:$Ry32in, IntRegs:$Rs32),
17168 "$Ry32 = add($Ru32,mpyi($Ry32in,$Rs32))",
17169 tc_d773585a, TypeM>, Enc_7f1a05, ImmRegRel {
17170 let Inst{7-5} = 0b000;
17171 let Inst{13-13} = 0b0;
17172 let Inst{31-21} = 0b11100011000;
17173 let hasNewValue = 1;
17174 let opNewValue = 0;
17175 let prefersSlot3 = 1;
17176 let CextOpcode = "M4_mpyrr_addr";
17177 let InputType = "reg";
17178 let Constraints = "$Ry32 = $Ry32in";
17179 }
17180 def M4_nac_up_s1_sat : HInst<
17181 (outs IntRegs:$Rx32),
17182 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17183 "$Rx32 -= mpy($Rs32,$Rt32):<<1:sat",
17184 tc_d773585a, TypeM>, Enc_2ae154 {
17185 let Inst{7-5} = 0b001;
17186 let Inst{13-13} = 0b0;
17187 let Inst{31-21} = 0b11101111011;
17188 let hasNewValue = 1;
17189 let opNewValue = 0;
17190 let prefersSlot3 = 1;
17191 let Defs = [USR_OVF];
17192 let InputType = "reg";
17193 let Constraints = "$Rx32 = $Rx32in";
17194 }
17195 def M4_or_and : HInst<
17196 (outs IntRegs:$Rx32),
17197 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17198 "$Rx32 |= and($Rs32,$Rt32)",
17199 tc_f429765c, TypeM>, Enc_2ae154 {
17200 let Inst{7-5} = 0b011;
17201 let Inst{13-13} = 0b0;
17202 let Inst{31-21} = 0b11101111010;
17203 let hasNewValue = 1;
17204 let opNewValue = 0;
17205 let prefersSlot3 = 1;
17206 let InputType = "reg";
17207 let Constraints = "$Rx32 = $Rx32in";
17208 }
17209 def M4_or_andn : HInst<
17210 (outs IntRegs:$Rx32),
17211 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17212 "$Rx32 |= and($Rs32,~$Rt32)",
17213 tc_f429765c, TypeM>, Enc_2ae154 {
17214 let Inst{7-5} = 0b000;
17215 let Inst{13-13} = 0b0;
17216 let Inst{31-21} = 0b11101111001;
17217 let hasNewValue = 1;
17218 let opNewValue = 0;
17219 let prefersSlot3 = 1;
17220 let InputType = "reg";
17221 let Constraints = "$Rx32 = $Rx32in";
17222 }
17223 def M4_or_or : HInst<
17224 (outs IntRegs:$Rx32),
17225 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17226 "$Rx32 |= or($Rs32,$Rt32)",
17227 tc_f429765c, TypeM>, Enc_2ae154 {
17228 let Inst{7-5} = 0b000;
17229 let Inst{13-13} = 0b0;
17230 let Inst{31-21} = 0b11101111110;
17231 let hasNewValue = 1;
17232 let opNewValue = 0;
17233 let prefersSlot3 = 1;
17234 let InputType = "reg";
17235 let Constraints = "$Rx32 = $Rx32in";
17236 }
17237 def M4_or_xor : HInst<
17238 (outs IntRegs:$Rx32),
17239 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17240 "$Rx32 |= xor($Rs32,$Rt32)",
17241 tc_f429765c, TypeM>, Enc_2ae154 {
17242 let Inst{7-5} = 0b001;
17243 let Inst{13-13} = 0b0;
17244 let Inst{31-21} = 0b11101111110;
17245 let hasNewValue = 1;
17246 let opNewValue = 0;
17247 let prefersSlot3 = 1;
17248 let InputType = "reg";
17249 let Constraints = "$Rx32 = $Rx32in";
17250 }
17251 def M4_pmpyw : HInst<
17252 (outs DoubleRegs:$Rdd32),
17253 (ins IntRegs:$Rs32, IntRegs:$Rt32),
17254 "$Rdd32 = pmpyw($Rs32,$Rt32)",
17255 tc_bafaade3, TypeM>, Enc_be32a5 {
17256 let Inst{7-5} = 0b111;
17257 let Inst{13-13} = 0b0;
17258 let Inst{31-21} = 0b11100101010;
17259 let prefersSlot3 = 1;
17260 }
17261 def M4_pmpyw_acc : HInst<
17262 (outs DoubleRegs:$Rxx32),
17263 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17264 "$Rxx32 ^= pmpyw($Rs32,$Rt32)",
17265 tc_d773585a, TypeM>, Enc_61f0b0 {
17266 let Inst{7-5} = 0b111;
17267 let Inst{13-13} = 0b0;
17268 let Inst{31-21} = 0b11100111001;
17269 let prefersSlot3 = 1;
17270 let Constraints = "$Rxx32 = $Rxx32in";
17271 }
17272 def M4_vpmpyh : HInst<
17273 (outs DoubleRegs:$Rdd32),
17274 (ins IntRegs:$Rs32, IntRegs:$Rt32),
17275 "$Rdd32 = vpmpyh($Rs32,$Rt32)",
17276 tc_bafaade3, TypeM>, Enc_be32a5 {
17277 let Inst{7-5} = 0b111;
17278 let Inst{13-13} = 0b0;
17279 let Inst{31-21} = 0b11100101110;
17280 let prefersSlot3 = 1;
17281 }
17282 def M4_vpmpyh_acc : HInst<
17283 (outs DoubleRegs:$Rxx32),
17284 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17285 "$Rxx32 ^= vpmpyh($Rs32,$Rt32)",
17286 tc_d773585a, TypeM>, Enc_61f0b0 {
17287 let Inst{7-5} = 0b111;
17288 let Inst{13-13} = 0b0;
17289 let Inst{31-21} = 0b11100111101;
17290 let prefersSlot3 = 1;
17291 let Constraints = "$Rxx32 = $Rxx32in";
17292 }
17293 def M4_vrmpyeh_acc_s0 : HInst<
17294 (outs DoubleRegs:$Rxx32),
17295 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17296 "$Rxx32 += vrmpyweh($Rss32,$Rtt32)",
17297 tc_d773585a, TypeM>, Enc_88c16c {
17298 let Inst{7-5} = 0b110;
17299 let Inst{13-13} = 0b0;
17300 let Inst{31-21} = 0b11101010001;
17301 let prefersSlot3 = 1;
17302 let Constraints = "$Rxx32 = $Rxx32in";
17303 }
17304 def M4_vrmpyeh_acc_s1 : HInst<
17305 (outs DoubleRegs:$Rxx32),
17306 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17307 "$Rxx32 += vrmpyweh($Rss32,$Rtt32):<<1",
17308 tc_d773585a, TypeM>, Enc_88c16c {
17309 let Inst{7-5} = 0b110;
17310 let Inst{13-13} = 0b0;
17311 let Inst{31-21} = 0b11101010101;
17312 let prefersSlot3 = 1;
17313 let Constraints = "$Rxx32 = $Rxx32in";
17314 }
17315 def M4_vrmpyeh_s0 : HInst<
17316 (outs DoubleRegs:$Rdd32),
17317 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17318 "$Rdd32 = vrmpyweh($Rss32,$Rtt32)",
17319 tc_bafaade3, TypeM>, Enc_a56825 {
17320 let Inst{7-5} = 0b100;
17321 let Inst{13-13} = 0b0;
17322 let Inst{31-21} = 0b11101000010;
17323 let prefersSlot3 = 1;
17324 }
17325 def M4_vrmpyeh_s1 : HInst<
17326 (outs DoubleRegs:$Rdd32),
17327 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17328 "$Rdd32 = vrmpyweh($Rss32,$Rtt32):<<1",
17329 tc_bafaade3, TypeM>, Enc_a56825 {
17330 let Inst{7-5} = 0b100;
17331 let Inst{13-13} = 0b0;
17332 let Inst{31-21} = 0b11101000110;
17333 let prefersSlot3 = 1;
17334 }
17335 def M4_vrmpyoh_acc_s0 : HInst<
17336 (outs DoubleRegs:$Rxx32),
17337 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17338 "$Rxx32 += vrmpywoh($Rss32,$Rtt32)",
17339 tc_d773585a, TypeM>, Enc_88c16c {
17340 let Inst{7-5} = 0b110;
17341 let Inst{13-13} = 0b0;
17342 let Inst{31-21} = 0b11101010011;
17343 let prefersSlot3 = 1;
17344 let Constraints = "$Rxx32 = $Rxx32in";
17345 }
17346 def M4_vrmpyoh_acc_s1 : HInst<
17347 (outs DoubleRegs:$Rxx32),
17348 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17349 "$Rxx32 += vrmpywoh($Rss32,$Rtt32):<<1",
17350 tc_d773585a, TypeM>, Enc_88c16c {
17351 let Inst{7-5} = 0b110;
17352 let Inst{13-13} = 0b0;
17353 let Inst{31-21} = 0b11101010111;
17354 let prefersSlot3 = 1;
17355 let Constraints = "$Rxx32 = $Rxx32in";
17356 }
17357 def M4_vrmpyoh_s0 : HInst<
17358 (outs DoubleRegs:$Rdd32),
17359 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17360 "$Rdd32 = vrmpywoh($Rss32,$Rtt32)",
17361 tc_bafaade3, TypeM>, Enc_a56825 {
17362 let Inst{7-5} = 0b010;
17363 let Inst{13-13} = 0b0;
17364 let Inst{31-21} = 0b11101000001;
17365 let prefersSlot3 = 1;
17366 }
17367 def M4_vrmpyoh_s1 : HInst<
17368 (outs DoubleRegs:$Rdd32),
17369 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17370 "$Rdd32 = vrmpywoh($Rss32,$Rtt32):<<1",
17371 tc_bafaade3, TypeM>, Enc_a56825 {
17372 let Inst{7-5} = 0b010;
17373 let Inst{13-13} = 0b0;
17374 let Inst{31-21} = 0b11101000101;
17375 let prefersSlot3 = 1;
17376 }
17377 def M4_xor_and : HInst<
17378 (outs IntRegs:$Rx32),
17379 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17380 "$Rx32 ^= and($Rs32,$Rt32)",
17381 tc_f429765c, TypeM>, Enc_2ae154 {
17382 let Inst{7-5} = 0b010;
17383 let Inst{13-13} = 0b0;
17384 let Inst{31-21} = 0b11101111110;
17385 let hasNewValue = 1;
17386 let opNewValue = 0;
17387 let prefersSlot3 = 1;
17388 let InputType = "reg";
17389 let Constraints = "$Rx32 = $Rx32in";
17390 }
17391 def M4_xor_andn : HInst<
17392 (outs IntRegs:$Rx32),
17393 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17394 "$Rx32 ^= and($Rs32,~$Rt32)",
17395 tc_f429765c, TypeM>, Enc_2ae154 {
17396 let Inst{7-5} = 0b010;
17397 let Inst{13-13} = 0b0;
17398 let Inst{31-21} = 0b11101111001;
17399 let hasNewValue = 1;
17400 let opNewValue = 0;
17401 let prefersSlot3 = 1;
17402 let InputType = "reg";
17403 let Constraints = "$Rx32 = $Rx32in";
17404 }
17405 def M4_xor_or : HInst<
17406 (outs IntRegs:$Rx32),
17407 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17408 "$Rx32 ^= or($Rs32,$Rt32)",
17409 tc_f429765c, TypeM>, Enc_2ae154 {
17410 let Inst{7-5} = 0b011;
17411 let Inst{13-13} = 0b0;
17412 let Inst{31-21} = 0b11101111110;
17413 let hasNewValue = 1;
17414 let opNewValue = 0;
17415 let prefersSlot3 = 1;
17416 let InputType = "reg";
17417 let Constraints = "$Rx32 = $Rx32in";
17418 }
17419 def M4_xor_xacc : HInst<
17420 (outs DoubleRegs:$Rxx32),
17421 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17422 "$Rxx32 ^= xor($Rss32,$Rtt32)",
17423 tc_f429765c, TypeS_3op>, Enc_88c16c {
17424 let Inst{7-5} = 0b000;
17425 let Inst{13-13} = 0b0;
17426 let Inst{31-21} = 0b11001010100;
17427 let prefersSlot3 = 1;
17428 let Constraints = "$Rxx32 = $Rxx32in";
17429 }
17430 def M5_vdmacbsu : HInst<
17431 (outs DoubleRegs:$Rxx32),
17432 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17433 "$Rxx32 += vdmpybsu($Rss32,$Rtt32):sat",
17434 tc_d773585a, TypeM>, Enc_88c16c {
17435 let Inst{7-5} = 0b001;
17436 let Inst{13-13} = 0b0;
17437 let Inst{31-21} = 0b11101010001;
17438 let prefersSlot3 = 1;
17439 let Defs = [USR_OVF];
17440 let Constraints = "$Rxx32 = $Rxx32in";
17441 }
17442 def M5_vdmpybsu : HInst<
17443 (outs DoubleRegs:$Rdd32),
17444 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17445 "$Rdd32 = vdmpybsu($Rss32,$Rtt32):sat",
17446 tc_bafaade3, TypeM>, Enc_a56825 {
17447 let Inst{7-5} = 0b001;
17448 let Inst{13-13} = 0b0;
17449 let Inst{31-21} = 0b11101000101;
17450 let prefersSlot3 = 1;
17451 let Defs = [USR_OVF];
17452 }
17453 def M5_vmacbsu : HInst<
17454 (outs DoubleRegs:$Rxx32),
17455 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17456 "$Rxx32 += vmpybsu($Rs32,$Rt32)",
17457 tc_d773585a, TypeM>, Enc_61f0b0 {
17458 let Inst{7-5} = 0b001;
17459 let Inst{13-13} = 0b0;
17460 let Inst{31-21} = 0b11100111110;
17461 let prefersSlot3 = 1;
17462 let Constraints = "$Rxx32 = $Rxx32in";
17463 }
17464 def M5_vmacbuu : HInst<
17465 (outs DoubleRegs:$Rxx32),
17466 (ins DoubleRegs:$Rxx32in, IntRegs:$Rs32, IntRegs:$Rt32),
17467 "$Rxx32 += vmpybu($Rs32,$Rt32)",
17468 tc_d773585a, TypeM>, Enc_61f0b0 {
17469 let Inst{7-5} = 0b001;
17470 let Inst{13-13} = 0b0;
17471 let Inst{31-21} = 0b11100111100;
17472 let prefersSlot3 = 1;
17473 let Constraints = "$Rxx32 = $Rxx32in";
17474 }
17475 def M5_vmpybsu : HInst<
17476 (outs DoubleRegs:$Rdd32),
17477 (ins IntRegs:$Rs32, IntRegs:$Rt32),
17478 "$Rdd32 = vmpybsu($Rs32,$Rt32)",
17479 tc_bafaade3, TypeM>, Enc_be32a5 {
17480 let Inst{7-5} = 0b001;
17481 let Inst{13-13} = 0b0;
17482 let Inst{31-21} = 0b11100101010;
17483 let prefersSlot3 = 1;
17484 }
17485 def M5_vmpybuu : HInst<
17486 (outs DoubleRegs:$Rdd32),
17487 (ins IntRegs:$Rs32, IntRegs:$Rt32),
17488 "$Rdd32 = vmpybu($Rs32,$Rt32)",
17489 tc_bafaade3, TypeM>, Enc_be32a5 {
17490 let Inst{7-5} = 0b001;
17491 let Inst{13-13} = 0b0;
17492 let Inst{31-21} = 0b11100101100;
17493 let prefersSlot3 = 1;
17494 }
17495 def M5_vrmacbsu : HInst<
17496 (outs DoubleRegs:$Rxx32),
17497 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17498 "$Rxx32 += vrmpybsu($Rss32,$Rtt32)",
17499 tc_d773585a, TypeM>, Enc_88c16c {
17500 let Inst{7-5} = 0b001;
17501 let Inst{13-13} = 0b0;
17502 let Inst{31-21} = 0b11101010110;
17503 let prefersSlot3 = 1;
17504 let Constraints = "$Rxx32 = $Rxx32in";
17505 }
17506 def M5_vrmacbuu : HInst<
17507 (outs DoubleRegs:$Rxx32),
17508 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17509 "$Rxx32 += vrmpybu($Rss32,$Rtt32)",
17510 tc_d773585a, TypeM>, Enc_88c16c {
17511 let Inst{7-5} = 0b001;
17512 let Inst{13-13} = 0b0;
17513 let Inst{31-21} = 0b11101010100;
17514 let prefersSlot3 = 1;
17515 let Constraints = "$Rxx32 = $Rxx32in";
17516 }
17517 def M5_vrmpybsu : HInst<
17518 (outs DoubleRegs:$Rdd32),
17519 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17520 "$Rdd32 = vrmpybsu($Rss32,$Rtt32)",
17521 tc_bafaade3, TypeM>, Enc_a56825 {
17522 let Inst{7-5} = 0b001;
17523 let Inst{13-13} = 0b0;
17524 let Inst{31-21} = 0b11101000110;
17525 let prefersSlot3 = 1;
17526 }
17527 def M5_vrmpybuu : HInst<
17528 (outs DoubleRegs:$Rdd32),
17529 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
17530 "$Rdd32 = vrmpybu($Rss32,$Rtt32)",
17531 tc_bafaade3, TypeM>, Enc_a56825 {
17532 let Inst{7-5} = 0b001;
17533 let Inst{13-13} = 0b0;
17534 let Inst{31-21} = 0b11101000100;
17535 let prefersSlot3 = 1;
17536 }
17537 def M6_vabsdiffb : HInst<
17538 (outs DoubleRegs:$Rdd32),
17539 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
17540 "$Rdd32 = vabsdiffb($Rtt32,$Rss32)",
17541 tc_9461ff31, TypeM>, Enc_ea23e4, Requires<[HasV62]> {
17542 let Inst{7-5} = 0b000;
17543 let Inst{13-13} = 0b0;
17544 let Inst{31-21} = 0b11101000111;
17545 let prefersSlot3 = 1;
17546 }
17547 def M6_vabsdiffub : HInst<
17548 (outs DoubleRegs:$Rdd32),
17549 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
17550 "$Rdd32 = vabsdiffub($Rtt32,$Rss32)",
17551 tc_9461ff31, TypeM>, Enc_ea23e4, Requires<[HasV62]> {
17552 let Inst{7-5} = 0b000;
17553 let Inst{13-13} = 0b0;
17554 let Inst{31-21} = 0b11101000101;
17555 let prefersSlot3 = 1;
17556 }
17557 def PS_loadrbabs : HInst<
17558 (outs IntRegs:$Rd32),
17559 (ins u32_0Imm:$Ii),
17560 "$Rd32 = memb(#$Ii)",
17561 tc_c4db48cb, TypeV2LDST>, Enc_25bef0, AddrModeRel {
17562 let Inst{24-21} = 0b1000;
17563 let Inst{31-27} = 0b01001;
17564 let hasNewValue = 1;
17565 let opNewValue = 0;
17566 let addrMode = Absolute;
17567 let accessSize = ByteAccess;
17568 let mayLoad = 1;
17569 let isExtended = 1;
17570 let CextOpcode = "L2_loadrb";
17571 let BaseOpcode = "L4_loadrb_abs";
17572 let isPredicable = 1;
17573 let DecoderNamespace = "MustExtend";
17574 let isExtended = 1;
17575 let opExtendable = 1;
17576 let isExtentSigned = 0;
17577 let opExtentBits = 16;
17578 let opExtentAlign = 0;
17579 }
17580 def PS_loadrdabs : HInst<
17581 (outs DoubleRegs:$Rdd32),
17582 (ins u29_3Imm:$Ii),
17583 "$Rdd32 = memd(#$Ii)",
17584 tc_c4db48cb, TypeV2LDST>, Enc_509701, AddrModeRel {
17585 let Inst{24-21} = 0b1110;
17586 let Inst{31-27} = 0b01001;
17587 let addrMode = Absolute;
17588 let accessSize = DoubleWordAccess;
17589 let mayLoad = 1;
17590 let isExtended = 1;
17591 let CextOpcode = "L2_loadrd";
17592 let BaseOpcode = "L4_loadrd_abs";
17593 let isPredicable = 1;
17594 let DecoderNamespace = "MustExtend";
17595 let isExtended = 1;
17596 let opExtendable = 1;
17597 let isExtentSigned = 0;
17598 let opExtentBits = 19;
17599 let opExtentAlign = 3;
17600 }
17601 def PS_loadrhabs : HInst<
17602 (outs IntRegs:$Rd32),
17603 (ins u31_1Imm:$Ii),
17604 "$Rd32 = memh(#$Ii)",
17605 tc_c4db48cb, TypeV2LDST>, Enc_8df4be, AddrModeRel {
17606 let Inst{24-21} = 0b1010;
17607 let Inst{31-27} = 0b01001;
17608 let hasNewValue = 1;
17609 let opNewValue = 0;
17610 let addrMode = Absolute;
17611 let accessSize = HalfWordAccess;
17612 let mayLoad = 1;
17613 let isExtended = 1;
17614 let CextOpcode = "L2_loadrh";
17615 let BaseOpcode = "L4_loadrh_abs";
17616 let isPredicable = 1;
17617 let DecoderNamespace = "MustExtend";
17618 let isExtended = 1;
17619 let opExtendable = 1;
17620 let isExtentSigned = 0;
17621 let opExtentBits = 17;
17622 let opExtentAlign = 1;
17623 }
17624 def PS_loadriabs : HInst<
17625 (outs IntRegs:$Rd32),
17626 (ins u30_2Imm:$Ii),
17627 "$Rd32 = memw(#$Ii)",
17628 tc_c4db48cb, TypeV2LDST>, Enc_4f4ed7, AddrModeRel {
17629 let Inst{24-21} = 0b1100;
17630 let Inst{31-27} = 0b01001;
17631 let hasNewValue = 1;
17632 let opNewValue = 0;
17633 let addrMode = Absolute;
17634 let accessSize = WordAccess;
17635 let mayLoad = 1;
17636 let isExtended = 1;
17637 let CextOpcode = "L2_loadri";
17638 let BaseOpcode = "L4_loadri_abs";
17639 let isPredicable = 1;
17640 let DecoderNamespace = "MustExtend";
17641 let isExtended = 1;
17642 let opExtendable = 1;
17643 let isExtentSigned = 0;
17644 let opExtentBits = 18;
17645 let opExtentAlign = 2;
17646 }
17647 def PS_loadrubabs : HInst<
17648 (outs IntRegs:$Rd32),
17649 (ins u32_0Imm:$Ii),
17650 "$Rd32 = memub(#$Ii)",
17651 tc_c4db48cb, TypeV2LDST>, Enc_25bef0, AddrModeRel {
17652 let Inst{24-21} = 0b1001;
17653 let Inst{31-27} = 0b01001;
17654 let hasNewValue = 1;
17655 let opNewValue = 0;
17656 let addrMode = Absolute;
17657 let accessSize = ByteAccess;
17658 let mayLoad = 1;
17659 let isExtended = 1;
17660 let CextOpcode = "L2_loadrub";
17661 let BaseOpcode = "L4_loadrub_abs";
17662 let isPredicable = 1;
17663 let DecoderNamespace = "MustExtend";
17664 let isExtended = 1;
17665 let opExtendable = 1;
17666 let isExtentSigned = 0;
17667 let opExtentBits = 16;
17668 let opExtentAlign = 0;
17669 }
17670 def PS_loadruhabs : HInst<
17671 (outs IntRegs:$Rd32),
17672 (ins u31_1Imm:$Ii),
17673 "$Rd32 = memuh(#$Ii)",
17674 tc_c4db48cb, TypeV2LDST>, Enc_8df4be, AddrModeRel {
17675 let Inst{24-21} = 0b1011;
17676 let Inst{31-27} = 0b01001;
17677 let hasNewValue = 1;
17678 let opNewValue = 0;
17679 let addrMode = Absolute;
17680 let accessSize = HalfWordAccess;
17681 let mayLoad = 1;
17682 let isExtended = 1;
17683 let CextOpcode = "L2_loadruh";
17684 let BaseOpcode = "L4_loadruh_abs";
17685 let isPredicable = 1;
17686 let DecoderNamespace = "MustExtend";
17687 let isExtended = 1;
17688 let opExtendable = 1;
17689 let isExtentSigned = 0;
17690 let opExtentBits = 17;
17691 let opExtentAlign = 1;
17692 }
17693 def PS_storerbabs : HInst<
17694 (outs),
17695 (ins u32_0Imm:$Ii, IntRegs:$Rt32),
17696 "memb(#$Ii) = $Rt32",
17697 tc_0371abea, TypeV2LDST>, Enc_1b64fb, AddrModeRel {
17698 let Inst{24-21} = 0b0000;
17699 let Inst{31-27} = 0b01001;
17700 let addrMode = Absolute;
17701 let accessSize = ByteAccess;
17702 let isExtended = 1;
17703 let mayStore = 1;
17704 let CextOpcode = "S2_storerb";
17705 let BaseOpcode = "S2_storerbabs";
17706 let isPredicable = 1;
17707 let isNVStorable = 1;
17708 let DecoderNamespace = "MustExtend";
17709 let isExtended = 1;
17710 let opExtendable = 0;
17711 let isExtentSigned = 0;
17712 let opExtentBits = 16;
17713 let opExtentAlign = 0;
17714 }
17715 def PS_storerbnewabs : HInst<
17716 (outs),
17717 (ins u32_0Imm:$Ii, IntRegs:$Nt8),
17718 "memb(#$Ii) = $Nt8.new",
17719 tc_5bf126a6, TypeV2LDST>, Enc_ad1831, AddrModeRel {
17720 let Inst{12-11} = 0b00;
17721 let Inst{24-21} = 0b0101;
17722 let Inst{31-27} = 0b01001;
17723 let addrMode = Absolute;
17724 let accessSize = ByteAccess;
17725 let isNVStore = 1;
17726 let isNewValue = 1;
17727 let isExtended = 1;
17728 let isRestrictNoSlot1Store = 1;
17729 let mayStore = 1;
17730 let CextOpcode = "S2_storerb";
17731 let BaseOpcode = "S2_storerbabs";
17732 let isPredicable = 1;
17733 let DecoderNamespace = "MustExtend";
17734 let isExtended = 1;
17735 let opExtendable = 0;
17736 let isExtentSigned = 0;
17737 let opExtentBits = 16;
17738 let opExtentAlign = 0;
17739 let opNewValue = 1;
17740 }
17741 def PS_storerdabs : HInst<
17742 (outs),
17743 (ins u29_3Imm:$Ii, DoubleRegs:$Rtt32),
17744 "memd(#$Ii) = $Rtt32",
17745 tc_0371abea, TypeV2LDST>, Enc_5c124a, AddrModeRel {
17746 let Inst{24-21} = 0b0110;
17747 let Inst{31-27} = 0b01001;
17748 let addrMode = Absolute;
17749 let accessSize = DoubleWordAccess;
17750 let isExtended = 1;
17751 let mayStore = 1;
17752 let CextOpcode = "S2_storerd";
17753 let BaseOpcode = "S2_storerdabs";
17754 let isPredicable = 1;
17755 let DecoderNamespace = "MustExtend";
17756 let isExtended = 1;
17757 let opExtendable = 0;
17758 let isExtentSigned = 0;
17759 let opExtentBits = 19;
17760 let opExtentAlign = 3;
17761 }
17762 def PS_storerfabs : HInst<
17763 (outs),
17764 (ins u31_1Imm:$Ii, IntRegs:$Rt32),
17765 "memh(#$Ii) = $Rt32.h",
17766 tc_0371abea, TypeV2LDST>, Enc_fda92c, AddrModeRel {
17767 let Inst{24-21} = 0b0011;
17768 let Inst{31-27} = 0b01001;
17769 let addrMode = Absolute;
17770 let accessSize = HalfWordAccess;
17771 let isExtended = 1;
17772 let mayStore = 1;
17773 let CextOpcode = "S2_storerf";
17774 let BaseOpcode = "S2_storerfabs";
17775 let isPredicable = 1;
17776 let DecoderNamespace = "MustExtend";
17777 let isExtended = 1;
17778 let opExtendable = 0;
17779 let isExtentSigned = 0;
17780 let opExtentBits = 17;
17781 let opExtentAlign = 1;
17782 }
17783 def PS_storerhabs : HInst<
17784 (outs),
17785 (ins u31_1Imm:$Ii, IntRegs:$Rt32),
17786 "memh(#$Ii) = $Rt32",
17787 tc_0371abea, TypeV2LDST>, Enc_fda92c, AddrModeRel {
17788 let Inst{24-21} = 0b0010;
17789 let Inst{31-27} = 0b01001;
17790 let addrMode = Absolute;
17791 let accessSize = HalfWordAccess;
17792 let isExtended = 1;
17793 let mayStore = 1;
17794 let CextOpcode = "S2_storerh";
17795 let BaseOpcode = "S2_storerhabs";
17796 let isPredicable = 1;
17797 let isNVStorable = 1;
17798 let DecoderNamespace = "MustExtend";
17799 let isExtended = 1;
17800 let opExtendable = 0;
17801 let isExtentSigned = 0;
17802 let opExtentBits = 17;
17803 let opExtentAlign = 1;
17804 }
17805 def PS_storerhnewabs : HInst<
17806 (outs),
17807 (ins u31_1Imm:$Ii, IntRegs:$Nt8),
17808 "memh(#$Ii) = $Nt8.new",
17809 tc_5bf126a6, TypeV2LDST>, Enc_bc03e5, AddrModeRel {
17810 let Inst{12-11} = 0b01;
17811 let Inst{24-21} = 0b0101;
17812 let Inst{31-27} = 0b01001;
17813 let addrMode = Absolute;
17814 let accessSize = HalfWordAccess;
17815 let isNVStore = 1;
17816 let isNewValue = 1;
17817 let isExtended = 1;
17818 let isRestrictNoSlot1Store = 1;
17819 let mayStore = 1;
17820 let CextOpcode = "S2_storerh";
17821 let BaseOpcode = "S2_storerhabs";
17822 let isPredicable = 1;
17823 let DecoderNamespace = "MustExtend";
17824 let isExtended = 1;
17825 let opExtendable = 0;
17826 let isExtentSigned = 0;
17827 let opExtentBits = 17;
17828 let opExtentAlign = 1;
17829 let opNewValue = 1;
17830 }
17831 def PS_storeriabs : HInst<
17832 (outs),
17833 (ins u30_2Imm:$Ii, IntRegs:$Rt32),
17834 "memw(#$Ii) = $Rt32",
17835 tc_0371abea, TypeV2LDST>, Enc_541f26, AddrModeRel {
17836 let Inst{24-21} = 0b0100;
17837 let Inst{31-27} = 0b01001;
17838 let addrMode = Absolute;
17839 let accessSize = WordAccess;
17840 let isExtended = 1;
17841 let mayStore = 1;
17842 let CextOpcode = "S2_storeri";
17843 let BaseOpcode = "S2_storeriabs";
17844 let isPredicable = 1;
17845 let isNVStorable = 1;
17846 let DecoderNamespace = "MustExtend";
17847 let isExtended = 1;
17848 let opExtendable = 0;
17849 let isExtentSigned = 0;
17850 let opExtentBits = 18;
17851 let opExtentAlign = 2;
17852 }
17853 def PS_storerinewabs : HInst<
17854 (outs),
17855 (ins u30_2Imm:$Ii, IntRegs:$Nt8),
17856 "memw(#$Ii) = $Nt8.new",
17857 tc_5bf126a6, TypeV2LDST>, Enc_78cbf0, AddrModeRel {
17858 let Inst{12-11} = 0b10;
17859 let Inst{24-21} = 0b0101;
17860 let Inst{31-27} = 0b01001;
17861 let addrMode = Absolute;
17862 let accessSize = WordAccess;
17863 let isNVStore = 1;
17864 let isNewValue = 1;
17865 let isExtended = 1;
17866 let isRestrictNoSlot1Store = 1;
17867 let mayStore = 1;
17868 let CextOpcode = "S2_storeri";
17869 let BaseOpcode = "S2_storeriabs";
17870 let isPredicable = 1;
17871 let DecoderNamespace = "MustExtend";
17872 let isExtended = 1;
17873 let opExtendable = 0;
17874 let isExtentSigned = 0;
17875 let opExtentBits = 18;
17876 let opExtentAlign = 2;
17877 let opNewValue = 1;
17878 }
17879 def S2_addasl_rrri : HInst<
17880 (outs IntRegs:$Rd32),
17881 (ins IntRegs:$Rt32, IntRegs:$Rs32, u3_0Imm:$Ii),
17882 "$Rd32 = addasl($Rt32,$Rs32,#$Ii)",
17883 tc_f675fee8, TypeS_3op>, Enc_47ef61 {
17884 let Inst{13-13} = 0b0;
17885 let Inst{31-21} = 0b11000100000;
17886 let hasNewValue = 1;
17887 let opNewValue = 0;
17888 let prefersSlot3 = 1;
17889 }
17890 def S2_allocframe : HInst<
17891 (outs IntRegs:$Rx32),
17892 (ins IntRegs:$Rx32in, u11_3Imm:$Ii),
17893 "allocframe($Rx32,#$Ii):raw",
17894 tc_b44ecf75, TypeST>, Enc_22c845 {
17895 let Inst{13-11} = 0b000;
17896 let Inst{31-21} = 0b10100000100;
17897 let hasNewValue = 1;
17898 let opNewValue = 0;
17899 let addrMode = BaseImmOffset;
17900 let accessSize = DoubleWordAccess;
17901 let mayStore = 1;
17902 let Uses = [FRAMEKEY, FRAMELIMIT, R30, R31];
17903 let Defs = [R30];
17904 let Constraints = "$Rx32 = $Rx32in";
17905 }
17906 def S2_asl_i_p : HInst<
17907 (outs DoubleRegs:$Rdd32),
17908 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii),
17909 "$Rdd32 = asl($Rss32,#$Ii)",
17910 tc_946df596, TypeS_2op>, Enc_5eac98 {
17911 let Inst{7-5} = 0b010;
17912 let Inst{31-21} = 0b10000000000;
17913 }
17914 def S2_asl_i_p_acc : HInst<
17915 (outs DoubleRegs:$Rxx32),
17916 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
17917 "$Rxx32 += asl($Rss32,#$Ii)",
17918 tc_f675fee8, TypeS_2op>, Enc_70fb07 {
17919 let Inst{7-5} = 0b110;
17920 let Inst{31-21} = 0b10000010000;
17921 let prefersSlot3 = 1;
17922 let Constraints = "$Rxx32 = $Rxx32in";
17923 }
17924 def S2_asl_i_p_and : HInst<
17925 (outs DoubleRegs:$Rxx32),
17926 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
17927 "$Rxx32 &= asl($Rss32,#$Ii)",
17928 tc_f429765c, TypeS_2op>, Enc_70fb07 {
17929 let Inst{7-5} = 0b010;
17930 let Inst{31-21} = 0b10000010010;
17931 let prefersSlot3 = 1;
17932 let Constraints = "$Rxx32 = $Rxx32in";
17933 }
17934 def S2_asl_i_p_nac : HInst<
17935 (outs DoubleRegs:$Rxx32),
17936 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
17937 "$Rxx32 -= asl($Rss32,#$Ii)",
17938 tc_f675fee8, TypeS_2op>, Enc_70fb07 {
17939 let Inst{7-5} = 0b010;
17940 let Inst{31-21} = 0b10000010000;
17941 let prefersSlot3 = 1;
17942 let Constraints = "$Rxx32 = $Rxx32in";
17943 }
17944 def S2_asl_i_p_or : HInst<
17945 (outs DoubleRegs:$Rxx32),
17946 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
17947 "$Rxx32 |= asl($Rss32,#$Ii)",
17948 tc_f429765c, TypeS_2op>, Enc_70fb07 {
17949 let Inst{7-5} = 0b110;
17950 let Inst{31-21} = 0b10000010010;
17951 let prefersSlot3 = 1;
17952 let Constraints = "$Rxx32 = $Rxx32in";
17953 }
17954 def S2_asl_i_p_xacc : HInst<
17955 (outs DoubleRegs:$Rxx32),
17956 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
17957 "$Rxx32 ^= asl($Rss32,#$Ii)",
17958 tc_f429765c, TypeS_2op>, Enc_70fb07 {
17959 let Inst{7-5} = 0b010;
17960 let Inst{31-21} = 0b10000010100;
17961 let prefersSlot3 = 1;
17962 let Constraints = "$Rxx32 = $Rxx32in";
17963 }
17964 def S2_asl_i_r : HInst<
17965 (outs IntRegs:$Rd32),
17966 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
17967 "$Rd32 = asl($Rs32,#$Ii)",
17968 tc_946df596, TypeS_2op>, Enc_a05677 {
17969 let Inst{7-5} = 0b010;
17970 let Inst{13-13} = 0b0;
17971 let Inst{31-21} = 0b10001100000;
17972 let hasNewValue = 1;
17973 let opNewValue = 0;
17974 }
17975 def S2_asl_i_r_acc : HInst<
17976 (outs IntRegs:$Rx32),
17977 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
17978 "$Rx32 += asl($Rs32,#$Ii)",
17979 tc_f675fee8, TypeS_2op>, Enc_28a2dc {
17980 let Inst{7-5} = 0b110;
17981 let Inst{13-13} = 0b0;
17982 let Inst{31-21} = 0b10001110000;
17983 let hasNewValue = 1;
17984 let opNewValue = 0;
17985 let prefersSlot3 = 1;
17986 let Constraints = "$Rx32 = $Rx32in";
17987 }
17988 def S2_asl_i_r_and : HInst<
17989 (outs IntRegs:$Rx32),
17990 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
17991 "$Rx32 &= asl($Rs32,#$Ii)",
17992 tc_f429765c, TypeS_2op>, Enc_28a2dc {
17993 let Inst{7-5} = 0b010;
17994 let Inst{13-13} = 0b0;
17995 let Inst{31-21} = 0b10001110010;
17996 let hasNewValue = 1;
17997 let opNewValue = 0;
17998 let prefersSlot3 = 1;
17999 let Constraints = "$Rx32 = $Rx32in";
18000 }
18001 def S2_asl_i_r_nac : HInst<
18002 (outs IntRegs:$Rx32),
18003 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
18004 "$Rx32 -= asl($Rs32,#$Ii)",
18005 tc_f675fee8, TypeS_2op>, Enc_28a2dc {
18006 let Inst{7-5} = 0b010;
18007 let Inst{13-13} = 0b0;
18008 let Inst{31-21} = 0b10001110000;
18009 let hasNewValue = 1;
18010 let opNewValue = 0;
18011 let prefersSlot3 = 1;
18012 let Constraints = "$Rx32 = $Rx32in";
18013 }
18014 def S2_asl_i_r_or : HInst<
18015 (outs IntRegs:$Rx32),
18016 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
18017 "$Rx32 |= asl($Rs32,#$Ii)",
18018 tc_f429765c, TypeS_2op>, Enc_28a2dc {
18019 let Inst{7-5} = 0b110;
18020 let Inst{13-13} = 0b0;
18021 let Inst{31-21} = 0b10001110010;
18022 let hasNewValue = 1;
18023 let opNewValue = 0;
18024 let prefersSlot3 = 1;
18025 let Constraints = "$Rx32 = $Rx32in";
18026 }
18027 def S2_asl_i_r_sat : HInst<
18028 (outs IntRegs:$Rd32),
18029 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
18030 "$Rd32 = asl($Rs32,#$Ii):sat",
18031 tc_779080bf, TypeS_2op>, Enc_a05677 {
18032 let Inst{7-5} = 0b010;
18033 let Inst{13-13} = 0b0;
18034 let Inst{31-21} = 0b10001100010;
18035 let hasNewValue = 1;
18036 let opNewValue = 0;
18037 let prefersSlot3 = 1;
18038 let Defs = [USR_OVF];
18039 }
18040 def S2_asl_i_r_xacc : HInst<
18041 (outs IntRegs:$Rx32),
18042 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
18043 "$Rx32 ^= asl($Rs32,#$Ii)",
18044 tc_f429765c, TypeS_2op>, Enc_28a2dc {
18045 let Inst{7-5} = 0b010;
18046 let Inst{13-13} = 0b0;
18047 let Inst{31-21} = 0b10001110100;
18048 let hasNewValue = 1;
18049 let opNewValue = 0;
18050 let prefersSlot3 = 1;
18051 let Constraints = "$Rx32 = $Rx32in";
18052 }
18053 def S2_asl_i_vh : HInst<
18054 (outs DoubleRegs:$Rdd32),
18055 (ins DoubleRegs:$Rss32, u4_0Imm:$Ii),
18056 "$Rdd32 = vaslh($Rss32,#$Ii)",
18057 tc_946df596, TypeS_2op>, Enc_12b6e9 {
18058 let Inst{7-5} = 0b010;
18059 let Inst{13-12} = 0b00;
18060 let Inst{31-21} = 0b10000000100;
18061 }
18062 def S2_asl_i_vw : HInst<
18063 (outs DoubleRegs:$Rdd32),
18064 (ins DoubleRegs:$Rss32, u5_0Imm:$Ii),
18065 "$Rdd32 = vaslw($Rss32,#$Ii)",
18066 tc_946df596, TypeS_2op>, Enc_7e5a82 {
18067 let Inst{7-5} = 0b010;
18068 let Inst{13-13} = 0b0;
18069 let Inst{31-21} = 0b10000000010;
18070 }
18071 def S2_asl_r_p : HInst<
18072 (outs DoubleRegs:$Rdd32),
18073 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18074 "$Rdd32 = asl($Rss32,$Rt32)",
18075 tc_946df596, TypeS_3op>, Enc_927852 {
18076 let Inst{7-5} = 0b100;
18077 let Inst{13-13} = 0b0;
18078 let Inst{31-21} = 0b11000011100;
18079 }
18080 def S2_asl_r_p_acc : HInst<
18081 (outs DoubleRegs:$Rxx32),
18082 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18083 "$Rxx32 += asl($Rss32,$Rt32)",
18084 tc_f675fee8, TypeS_3op>, Enc_1aa186 {
18085 let Inst{7-5} = 0b100;
18086 let Inst{13-13} = 0b0;
18087 let Inst{31-21} = 0b11001011110;
18088 let prefersSlot3 = 1;
18089 let Constraints = "$Rxx32 = $Rxx32in";
18090 }
18091 def S2_asl_r_p_and : HInst<
18092 (outs DoubleRegs:$Rxx32),
18093 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18094 "$Rxx32 &= asl($Rss32,$Rt32)",
18095 tc_f429765c, TypeS_3op>, Enc_1aa186 {
18096 let Inst{7-5} = 0b100;
18097 let Inst{13-13} = 0b0;
18098 let Inst{31-21} = 0b11001011010;
18099 let prefersSlot3 = 1;
18100 let Constraints = "$Rxx32 = $Rxx32in";
18101 }
18102 def S2_asl_r_p_nac : HInst<
18103 (outs DoubleRegs:$Rxx32),
18104 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18105 "$Rxx32 -= asl($Rss32,$Rt32)",
18106 tc_f675fee8, TypeS_3op>, Enc_1aa186 {
18107 let Inst{7-5} = 0b100;
18108 let Inst{13-13} = 0b0;
18109 let Inst{31-21} = 0b11001011100;
18110 let prefersSlot3 = 1;
18111 let Constraints = "$Rxx32 = $Rxx32in";
18112 }
18113 def S2_asl_r_p_or : HInst<
18114 (outs DoubleRegs:$Rxx32),
18115 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18116 "$Rxx32 |= asl($Rss32,$Rt32)",
18117 tc_f429765c, TypeS_3op>, Enc_1aa186 {
18118 let Inst{7-5} = 0b100;
18119 let Inst{13-13} = 0b0;
18120 let Inst{31-21} = 0b11001011000;
18121 let prefersSlot3 = 1;
18122 let Constraints = "$Rxx32 = $Rxx32in";
18123 }
18124 def S2_asl_r_p_xor : HInst<
18125 (outs DoubleRegs:$Rxx32),
18126 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18127 "$Rxx32 ^= asl($Rss32,$Rt32)",
18128 tc_f429765c, TypeS_3op>, Enc_1aa186 {
18129 let Inst{7-5} = 0b100;
18130 let Inst{13-13} = 0b0;
18131 let Inst{31-21} = 0b11001011011;
18132 let prefersSlot3 = 1;
18133 let Constraints = "$Rxx32 = $Rxx32in";
18134 }
18135 def S2_asl_r_r : HInst<
18136 (outs IntRegs:$Rd32),
18137 (ins IntRegs:$Rs32, IntRegs:$Rt32),
18138 "$Rd32 = asl($Rs32,$Rt32)",
18139 tc_946df596, TypeS_3op>, Enc_5ab2be {
18140 let Inst{7-5} = 0b100;
18141 let Inst{13-13} = 0b0;
18142 let Inst{31-21} = 0b11000110010;
18143 let hasNewValue = 1;
18144 let opNewValue = 0;
18145 }
18146 def S2_asl_r_r_acc : HInst<
18147 (outs IntRegs:$Rx32),
18148 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18149 "$Rx32 += asl($Rs32,$Rt32)",
18150 tc_f675fee8, TypeS_3op>, Enc_2ae154 {
18151 let Inst{7-5} = 0b100;
18152 let Inst{13-13} = 0b0;
18153 let Inst{31-21} = 0b11001100110;
18154 let hasNewValue = 1;
18155 let opNewValue = 0;
18156 let prefersSlot3 = 1;
18157 let Constraints = "$Rx32 = $Rx32in";
18158 }
18159 def S2_asl_r_r_and : HInst<
18160 (outs IntRegs:$Rx32),
18161 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18162 "$Rx32 &= asl($Rs32,$Rt32)",
18163 tc_f429765c, TypeS_3op>, Enc_2ae154 {
18164 let Inst{7-5} = 0b100;
18165 let Inst{13-13} = 0b0;
18166 let Inst{31-21} = 0b11001100010;
18167 let hasNewValue = 1;
18168 let opNewValue = 0;
18169 let prefersSlot3 = 1;
18170 let Constraints = "$Rx32 = $Rx32in";
18171 }
18172 def S2_asl_r_r_nac : HInst<
18173 (outs IntRegs:$Rx32),
18174 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18175 "$Rx32 -= asl($Rs32,$Rt32)",
18176 tc_f675fee8, TypeS_3op>, Enc_2ae154 {
18177 let Inst{7-5} = 0b100;
18178 let Inst{13-13} = 0b0;
18179 let Inst{31-21} = 0b11001100100;
18180 let hasNewValue = 1;
18181 let opNewValue = 0;
18182 let prefersSlot3 = 1;
18183 let Constraints = "$Rx32 = $Rx32in";
18184 }
18185 def S2_asl_r_r_or : HInst<
18186 (outs IntRegs:$Rx32),
18187 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18188 "$Rx32 |= asl($Rs32,$Rt32)",
18189 tc_f429765c, TypeS_3op>, Enc_2ae154 {
18190 let Inst{7-5} = 0b100;
18191 let Inst{13-13} = 0b0;
18192 let Inst{31-21} = 0b11001100000;
18193 let hasNewValue = 1;
18194 let opNewValue = 0;
18195 let prefersSlot3 = 1;
18196 let Constraints = "$Rx32 = $Rx32in";
18197 }
18198 def S2_asl_r_r_sat : HInst<
18199 (outs IntRegs:$Rd32),
18200 (ins IntRegs:$Rs32, IntRegs:$Rt32),
18201 "$Rd32 = asl($Rs32,$Rt32):sat",
18202 tc_779080bf, TypeS_3op>, Enc_5ab2be {
18203 let Inst{7-5} = 0b100;
18204 let Inst{13-13} = 0b0;
18205 let Inst{31-21} = 0b11000110000;
18206 let hasNewValue = 1;
18207 let opNewValue = 0;
18208 let prefersSlot3 = 1;
18209 let Defs = [USR_OVF];
18210 }
18211 def S2_asl_r_vh : HInst<
18212 (outs DoubleRegs:$Rdd32),
18213 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18214 "$Rdd32 = vaslh($Rss32,$Rt32)",
18215 tc_946df596, TypeS_3op>, Enc_927852 {
18216 let Inst{7-5} = 0b100;
18217 let Inst{13-13} = 0b0;
18218 let Inst{31-21} = 0b11000011010;
18219 }
18220 def S2_asl_r_vw : HInst<
18221 (outs DoubleRegs:$Rdd32),
18222 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18223 "$Rdd32 = vaslw($Rss32,$Rt32)",
18224 tc_946df596, TypeS_3op>, Enc_927852 {
18225 let Inst{7-5} = 0b100;
18226 let Inst{13-13} = 0b0;
18227 let Inst{31-21} = 0b11000011000;
18228 }
18229 def S2_asr_i_p : HInst<
18230 (outs DoubleRegs:$Rdd32),
18231 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii),
18232 "$Rdd32 = asr($Rss32,#$Ii)",
18233 tc_946df596, TypeS_2op>, Enc_5eac98 {
18234 let Inst{7-5} = 0b000;
18235 let Inst{31-21} = 0b10000000000;
18236 }
18237 def S2_asr_i_p_acc : HInst<
18238 (outs DoubleRegs:$Rxx32),
18239 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
18240 "$Rxx32 += asr($Rss32,#$Ii)",
18241 tc_f675fee8, TypeS_2op>, Enc_70fb07 {
18242 let Inst{7-5} = 0b100;
18243 let Inst{31-21} = 0b10000010000;
18244 let prefersSlot3 = 1;
18245 let Constraints = "$Rxx32 = $Rxx32in";
18246 }
18247 def S2_asr_i_p_and : HInst<
18248 (outs DoubleRegs:$Rxx32),
18249 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
18250 "$Rxx32 &= asr($Rss32,#$Ii)",
18251 tc_f429765c, TypeS_2op>, Enc_70fb07 {
18252 let Inst{7-5} = 0b000;
18253 let Inst{31-21} = 0b10000010010;
18254 let prefersSlot3 = 1;
18255 let Constraints = "$Rxx32 = $Rxx32in";
18256 }
18257 def S2_asr_i_p_nac : HInst<
18258 (outs DoubleRegs:$Rxx32),
18259 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
18260 "$Rxx32 -= asr($Rss32,#$Ii)",
18261 tc_f675fee8, TypeS_2op>, Enc_70fb07 {
18262 let Inst{7-5} = 0b000;
18263 let Inst{31-21} = 0b10000010000;
18264 let prefersSlot3 = 1;
18265 let Constraints = "$Rxx32 = $Rxx32in";
18266 }
18267 def S2_asr_i_p_or : HInst<
18268 (outs DoubleRegs:$Rxx32),
18269 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
18270 "$Rxx32 |= asr($Rss32,#$Ii)",
18271 tc_f429765c, TypeS_2op>, Enc_70fb07 {
18272 let Inst{7-5} = 0b100;
18273 let Inst{31-21} = 0b10000010010;
18274 let prefersSlot3 = 1;
18275 let Constraints = "$Rxx32 = $Rxx32in";
18276 }
18277 def S2_asr_i_p_rnd : HInst<
18278 (outs DoubleRegs:$Rdd32),
18279 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii),
18280 "$Rdd32 = asr($Rss32,#$Ii):rnd",
18281 tc_002cb246, TypeS_2op>, Enc_5eac98 {
18282 let Inst{7-5} = 0b111;
18283 let Inst{31-21} = 0b10000000110;
18284 let prefersSlot3 = 1;
18285 }
18286 def S2_asr_i_p_rnd_goodsyntax : HInst<
18287 (outs DoubleRegs:$Rdd32),
18288 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii),
18289 "$Rdd32 = asrrnd($Rss32,#$Ii)",
18290 tc_002cb246, TypeS_2op> {
18291 let isPseudo = 1;
18292 }
18293 def S2_asr_i_r : HInst<
18294 (outs IntRegs:$Rd32),
18295 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
18296 "$Rd32 = asr($Rs32,#$Ii)",
18297 tc_946df596, TypeS_2op>, Enc_a05677 {
18298 let Inst{7-5} = 0b000;
18299 let Inst{13-13} = 0b0;
18300 let Inst{31-21} = 0b10001100000;
18301 let hasNewValue = 1;
18302 let opNewValue = 0;
18303 }
18304 def S2_asr_i_r_acc : HInst<
18305 (outs IntRegs:$Rx32),
18306 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
18307 "$Rx32 += asr($Rs32,#$Ii)",
18308 tc_f675fee8, TypeS_2op>, Enc_28a2dc {
18309 let Inst{7-5} = 0b100;
18310 let Inst{13-13} = 0b0;
18311 let Inst{31-21} = 0b10001110000;
18312 let hasNewValue = 1;
18313 let opNewValue = 0;
18314 let prefersSlot3 = 1;
18315 let Constraints = "$Rx32 = $Rx32in";
18316 }
18317 def S2_asr_i_r_and : HInst<
18318 (outs IntRegs:$Rx32),
18319 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
18320 "$Rx32 &= asr($Rs32,#$Ii)",
18321 tc_f429765c, TypeS_2op>, Enc_28a2dc {
18322 let Inst{7-5} = 0b000;
18323 let Inst{13-13} = 0b0;
18324 let Inst{31-21} = 0b10001110010;
18325 let hasNewValue = 1;
18326 let opNewValue = 0;
18327 let prefersSlot3 = 1;
18328 let Constraints = "$Rx32 = $Rx32in";
18329 }
18330 def S2_asr_i_r_nac : HInst<
18331 (outs IntRegs:$Rx32),
18332 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
18333 "$Rx32 -= asr($Rs32,#$Ii)",
18334 tc_f675fee8, TypeS_2op>, Enc_28a2dc {
18335 let Inst{7-5} = 0b000;
18336 let Inst{13-13} = 0b0;
18337 let Inst{31-21} = 0b10001110000;
18338 let hasNewValue = 1;
18339 let opNewValue = 0;
18340 let prefersSlot3 = 1;
18341 let Constraints = "$Rx32 = $Rx32in";
18342 }
18343 def S2_asr_i_r_or : HInst<
18344 (outs IntRegs:$Rx32),
18345 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
18346 "$Rx32 |= asr($Rs32,#$Ii)",
18347 tc_f429765c, TypeS_2op>, Enc_28a2dc {
18348 let Inst{7-5} = 0b100;
18349 let Inst{13-13} = 0b0;
18350 let Inst{31-21} = 0b10001110010;
18351 let hasNewValue = 1;
18352 let opNewValue = 0;
18353 let prefersSlot3 = 1;
18354 let Constraints = "$Rx32 = $Rx32in";
18355 }
18356 def S2_asr_i_r_rnd : HInst<
18357 (outs IntRegs:$Rd32),
18358 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
18359 "$Rd32 = asr($Rs32,#$Ii):rnd",
18360 tc_002cb246, TypeS_2op>, Enc_a05677 {
18361 let Inst{7-5} = 0b000;
18362 let Inst{13-13} = 0b0;
18363 let Inst{31-21} = 0b10001100010;
18364 let hasNewValue = 1;
18365 let opNewValue = 0;
18366 let prefersSlot3 = 1;
18367 }
18368 def S2_asr_i_r_rnd_goodsyntax : HInst<
18369 (outs IntRegs:$Rd32),
18370 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
18371 "$Rd32 = asrrnd($Rs32,#$Ii)",
18372 tc_002cb246, TypeS_2op> {
18373 let hasNewValue = 1;
18374 let opNewValue = 0;
18375 let isPseudo = 1;
18376 }
18377 def S2_asr_i_svw_trun : HInst<
18378 (outs IntRegs:$Rd32),
18379 (ins DoubleRegs:$Rss32, u5_0Imm:$Ii),
18380 "$Rd32 = vasrw($Rss32,#$Ii)",
18381 tc_4414d8b1, TypeS_2op>, Enc_8dec2e {
18382 let Inst{7-5} = 0b010;
18383 let Inst{13-13} = 0b0;
18384 let Inst{31-21} = 0b10001000110;
18385 let hasNewValue = 1;
18386 let opNewValue = 0;
18387 let prefersSlot3 = 1;
18388 }
18389 def S2_asr_i_vh : HInst<
18390 (outs DoubleRegs:$Rdd32),
18391 (ins DoubleRegs:$Rss32, u4_0Imm:$Ii),
18392 "$Rdd32 = vasrh($Rss32,#$Ii)",
18393 tc_946df596, TypeS_2op>, Enc_12b6e9 {
18394 let Inst{7-5} = 0b000;
18395 let Inst{13-12} = 0b00;
18396 let Inst{31-21} = 0b10000000100;
18397 }
18398 def S2_asr_i_vw : HInst<
18399 (outs DoubleRegs:$Rdd32),
18400 (ins DoubleRegs:$Rss32, u5_0Imm:$Ii),
18401 "$Rdd32 = vasrw($Rss32,#$Ii)",
18402 tc_946df596, TypeS_2op>, Enc_7e5a82 {
18403 let Inst{7-5} = 0b000;
18404 let Inst{13-13} = 0b0;
18405 let Inst{31-21} = 0b10000000010;
18406 }
18407 def S2_asr_r_p : HInst<
18408 (outs DoubleRegs:$Rdd32),
18409 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18410 "$Rdd32 = asr($Rss32,$Rt32)",
18411 tc_946df596, TypeS_3op>, Enc_927852 {
18412 let Inst{7-5} = 0b000;
18413 let Inst{13-13} = 0b0;
18414 let Inst{31-21} = 0b11000011100;
18415 }
18416 def S2_asr_r_p_acc : HInst<
18417 (outs DoubleRegs:$Rxx32),
18418 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18419 "$Rxx32 += asr($Rss32,$Rt32)",
18420 tc_f675fee8, TypeS_3op>, Enc_1aa186 {
18421 let Inst{7-5} = 0b000;
18422 let Inst{13-13} = 0b0;
18423 let Inst{31-21} = 0b11001011110;
18424 let prefersSlot3 = 1;
18425 let Constraints = "$Rxx32 = $Rxx32in";
18426 }
18427 def S2_asr_r_p_and : HInst<
18428 (outs DoubleRegs:$Rxx32),
18429 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18430 "$Rxx32 &= asr($Rss32,$Rt32)",
18431 tc_f429765c, TypeS_3op>, Enc_1aa186 {
18432 let Inst{7-5} = 0b000;
18433 let Inst{13-13} = 0b0;
18434 let Inst{31-21} = 0b11001011010;
18435 let prefersSlot3 = 1;
18436 let Constraints = "$Rxx32 = $Rxx32in";
18437 }
18438 def S2_asr_r_p_nac : HInst<
18439 (outs DoubleRegs:$Rxx32),
18440 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18441 "$Rxx32 -= asr($Rss32,$Rt32)",
18442 tc_f675fee8, TypeS_3op>, Enc_1aa186 {
18443 let Inst{7-5} = 0b000;
18444 let Inst{13-13} = 0b0;
18445 let Inst{31-21} = 0b11001011100;
18446 let prefersSlot3 = 1;
18447 let Constraints = "$Rxx32 = $Rxx32in";
18448 }
18449 def S2_asr_r_p_or : HInst<
18450 (outs DoubleRegs:$Rxx32),
18451 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18452 "$Rxx32 |= asr($Rss32,$Rt32)",
18453 tc_f429765c, TypeS_3op>, Enc_1aa186 {
18454 let Inst{7-5} = 0b000;
18455 let Inst{13-13} = 0b0;
18456 let Inst{31-21} = 0b11001011000;
18457 let prefersSlot3 = 1;
18458 let Constraints = "$Rxx32 = $Rxx32in";
18459 }
18460 def S2_asr_r_p_xor : HInst<
18461 (outs DoubleRegs:$Rxx32),
18462 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18463 "$Rxx32 ^= asr($Rss32,$Rt32)",
18464 tc_f429765c, TypeS_3op>, Enc_1aa186 {
18465 let Inst{7-5} = 0b000;
18466 let Inst{13-13} = 0b0;
18467 let Inst{31-21} = 0b11001011011;
18468 let prefersSlot3 = 1;
18469 let Constraints = "$Rxx32 = $Rxx32in";
18470 }
18471 def S2_asr_r_r : HInst<
18472 (outs IntRegs:$Rd32),
18473 (ins IntRegs:$Rs32, IntRegs:$Rt32),
18474 "$Rd32 = asr($Rs32,$Rt32)",
18475 tc_946df596, TypeS_3op>, Enc_5ab2be {
18476 let Inst{7-5} = 0b000;
18477 let Inst{13-13} = 0b0;
18478 let Inst{31-21} = 0b11000110010;
18479 let hasNewValue = 1;
18480 let opNewValue = 0;
18481 }
18482 def S2_asr_r_r_acc : HInst<
18483 (outs IntRegs:$Rx32),
18484 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18485 "$Rx32 += asr($Rs32,$Rt32)",
18486 tc_f675fee8, TypeS_3op>, Enc_2ae154 {
18487 let Inst{7-5} = 0b000;
18488 let Inst{13-13} = 0b0;
18489 let Inst{31-21} = 0b11001100110;
18490 let hasNewValue = 1;
18491 let opNewValue = 0;
18492 let prefersSlot3 = 1;
18493 let Constraints = "$Rx32 = $Rx32in";
18494 }
18495 def S2_asr_r_r_and : HInst<
18496 (outs IntRegs:$Rx32),
18497 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18498 "$Rx32 &= asr($Rs32,$Rt32)",
18499 tc_f429765c, TypeS_3op>, Enc_2ae154 {
18500 let Inst{7-5} = 0b000;
18501 let Inst{13-13} = 0b0;
18502 let Inst{31-21} = 0b11001100010;
18503 let hasNewValue = 1;
18504 let opNewValue = 0;
18505 let prefersSlot3 = 1;
18506 let Constraints = "$Rx32 = $Rx32in";
18507 }
18508 def S2_asr_r_r_nac : HInst<
18509 (outs IntRegs:$Rx32),
18510 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18511 "$Rx32 -= asr($Rs32,$Rt32)",
18512 tc_f675fee8, TypeS_3op>, Enc_2ae154 {
18513 let Inst{7-5} = 0b000;
18514 let Inst{13-13} = 0b0;
18515 let Inst{31-21} = 0b11001100100;
18516 let hasNewValue = 1;
18517 let opNewValue = 0;
18518 let prefersSlot3 = 1;
18519 let Constraints = "$Rx32 = $Rx32in";
18520 }
18521 def S2_asr_r_r_or : HInst<
18522 (outs IntRegs:$Rx32),
18523 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18524 "$Rx32 |= asr($Rs32,$Rt32)",
18525 tc_f429765c, TypeS_3op>, Enc_2ae154 {
18526 let Inst{7-5} = 0b000;
18527 let Inst{13-13} = 0b0;
18528 let Inst{31-21} = 0b11001100000;
18529 let hasNewValue = 1;
18530 let opNewValue = 0;
18531 let prefersSlot3 = 1;
18532 let Constraints = "$Rx32 = $Rx32in";
18533 }
18534 def S2_asr_r_r_sat : HInst<
18535 (outs IntRegs:$Rd32),
18536 (ins IntRegs:$Rs32, IntRegs:$Rt32),
18537 "$Rd32 = asr($Rs32,$Rt32):sat",
18538 tc_779080bf, TypeS_3op>, Enc_5ab2be {
18539 let Inst{7-5} = 0b000;
18540 let Inst{13-13} = 0b0;
18541 let Inst{31-21} = 0b11000110000;
18542 let hasNewValue = 1;
18543 let opNewValue = 0;
18544 let prefersSlot3 = 1;
18545 let Defs = [USR_OVF];
18546 }
18547 def S2_asr_r_svw_trun : HInst<
18548 (outs IntRegs:$Rd32),
18549 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18550 "$Rd32 = vasrw($Rss32,$Rt32)",
18551 tc_4414d8b1, TypeS_3op>, Enc_3d5b28 {
18552 let Inst{7-5} = 0b010;
18553 let Inst{13-13} = 0b0;
18554 let Inst{31-21} = 0b11000101000;
18555 let hasNewValue = 1;
18556 let opNewValue = 0;
18557 let prefersSlot3 = 1;
18558 }
18559 def S2_asr_r_vh : HInst<
18560 (outs DoubleRegs:$Rdd32),
18561 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18562 "$Rdd32 = vasrh($Rss32,$Rt32)",
18563 tc_946df596, TypeS_3op>, Enc_927852 {
18564 let Inst{7-5} = 0b000;
18565 let Inst{13-13} = 0b0;
18566 let Inst{31-21} = 0b11000011010;
18567 }
18568 def S2_asr_r_vw : HInst<
18569 (outs DoubleRegs:$Rdd32),
18570 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18571 "$Rdd32 = vasrw($Rss32,$Rt32)",
18572 tc_946df596, TypeS_3op>, Enc_927852 {
18573 let Inst{7-5} = 0b000;
18574 let Inst{13-13} = 0b0;
18575 let Inst{31-21} = 0b11000011000;
18576 }
18577 def S2_brev : HInst<
18578 (outs IntRegs:$Rd32),
18579 (ins IntRegs:$Rs32),
18580 "$Rd32 = brev($Rs32)",
18581 tc_14b5c689, TypeS_2op>, Enc_5e2823 {
18582 let Inst{13-5} = 0b000000110;
18583 let Inst{31-21} = 0b10001100010;
18584 let hasNewValue = 1;
18585 let opNewValue = 0;
18586 let prefersSlot3 = 1;
18587 }
18588 def S2_brevp : HInst<
18589 (outs DoubleRegs:$Rdd32),
18590 (ins DoubleRegs:$Rss32),
18591 "$Rdd32 = brev($Rss32)",
18592 tc_14b5c689, TypeS_2op>, Enc_b9c5fb {
18593 let Inst{13-5} = 0b000000110;
18594 let Inst{31-21} = 0b10000000110;
18595 let prefersSlot3 = 1;
18596 }
18597 def S2_cabacdecbin : HInst<
18598 (outs DoubleRegs:$Rdd32),
18599 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
18600 "$Rdd32 = decbin($Rss32,$Rtt32)",
18601 tc_76851da1, TypeS_3op>, Enc_a56825 {
18602 let Inst{7-5} = 0b110;
18603 let Inst{13-13} = 0b0;
18604 let Inst{31-21} = 0b11000001110;
18605 let isPredicateLate = 1;
18606 let prefersSlot3 = 1;
18607 let Defs = [P0];
18608 }
18609 def S2_cl0 : HInst<
18610 (outs IntRegs:$Rd32),
18611 (ins IntRegs:$Rs32),
18612 "$Rd32 = cl0($Rs32)",
18613 tc_14b5c689, TypeS_2op>, Enc_5e2823 {
18614 let Inst{13-5} = 0b000000101;
18615 let Inst{31-21} = 0b10001100000;
18616 let hasNewValue = 1;
18617 let opNewValue = 0;
18618 let prefersSlot3 = 1;
18619 }
18620 def S2_cl0p : HInst<
18621 (outs IntRegs:$Rd32),
18622 (ins DoubleRegs:$Rss32),
18623 "$Rd32 = cl0($Rss32)",
18624 tc_14b5c689, TypeS_2op>, Enc_90cd8b {
18625 let Inst{13-5} = 0b000000010;
18626 let Inst{31-21} = 0b10001000010;
18627 let hasNewValue = 1;
18628 let opNewValue = 0;
18629 let prefersSlot3 = 1;
18630 }
18631 def S2_cl1 : HInst<
18632 (outs IntRegs:$Rd32),
18633 (ins IntRegs:$Rs32),
18634 "$Rd32 = cl1($Rs32)",
18635 tc_14b5c689, TypeS_2op>, Enc_5e2823 {
18636 let Inst{13-5} = 0b000000110;
18637 let Inst{31-21} = 0b10001100000;
18638 let hasNewValue = 1;
18639 let opNewValue = 0;
18640 let prefersSlot3 = 1;
18641 }
18642 def S2_cl1p : HInst<
18643 (outs IntRegs:$Rd32),
18644 (ins DoubleRegs:$Rss32),
18645 "$Rd32 = cl1($Rss32)",
18646 tc_14b5c689, TypeS_2op>, Enc_90cd8b {
18647 let Inst{13-5} = 0b000000100;
18648 let Inst{31-21} = 0b10001000010;
18649 let hasNewValue = 1;
18650 let opNewValue = 0;
18651 let prefersSlot3 = 1;
18652 }
18653 def S2_clb : HInst<
18654 (outs IntRegs:$Rd32),
18655 (ins IntRegs:$Rs32),
18656 "$Rd32 = clb($Rs32)",
18657 tc_14b5c689, TypeS_2op>, Enc_5e2823 {
18658 let Inst{13-5} = 0b000000100;
18659 let Inst{31-21} = 0b10001100000;
18660 let hasNewValue = 1;
18661 let opNewValue = 0;
18662 let prefersSlot3 = 1;
18663 }
18664 def S2_clbnorm : HInst<
18665 (outs IntRegs:$Rd32),
18666 (ins IntRegs:$Rs32),
18667 "$Rd32 = normamt($Rs32)",
18668 tc_14b5c689, TypeS_2op>, Enc_5e2823 {
18669 let Inst{13-5} = 0b000000111;
18670 let Inst{31-21} = 0b10001100000;
18671 let hasNewValue = 1;
18672 let opNewValue = 0;
18673 let prefersSlot3 = 1;
18674 }
18675 def S2_clbp : HInst<
18676 (outs IntRegs:$Rd32),
18677 (ins DoubleRegs:$Rss32),
18678 "$Rd32 = clb($Rss32)",
18679 tc_14b5c689, TypeS_2op>, Enc_90cd8b {
18680 let Inst{13-5} = 0b000000000;
18681 let Inst{31-21} = 0b10001000010;
18682 let hasNewValue = 1;
18683 let opNewValue = 0;
18684 let prefersSlot3 = 1;
18685 }
18686 def S2_clrbit_i : HInst<
18687 (outs IntRegs:$Rd32),
18688 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
18689 "$Rd32 = clrbit($Rs32,#$Ii)",
18690 tc_946df596, TypeS_2op>, Enc_a05677 {
18691 let Inst{7-5} = 0b001;
18692 let Inst{13-13} = 0b0;
18693 let Inst{31-21} = 0b10001100110;
18694 let hasNewValue = 1;
18695 let opNewValue = 0;
18696 }
18697 def S2_clrbit_r : HInst<
18698 (outs IntRegs:$Rd32),
18699 (ins IntRegs:$Rs32, IntRegs:$Rt32),
18700 "$Rd32 = clrbit($Rs32,$Rt32)",
18701 tc_946df596, TypeS_3op>, Enc_5ab2be {
18702 let Inst{7-5} = 0b010;
18703 let Inst{13-13} = 0b0;
18704 let Inst{31-21} = 0b11000110100;
18705 let hasNewValue = 1;
18706 let opNewValue = 0;
18707 }
18708 def S2_ct0 : HInst<
18709 (outs IntRegs:$Rd32),
18710 (ins IntRegs:$Rs32),
18711 "$Rd32 = ct0($Rs32)",
18712 tc_14b5c689, TypeS_2op>, Enc_5e2823 {
18713 let Inst{13-5} = 0b000000100;
18714 let Inst{31-21} = 0b10001100010;
18715 let hasNewValue = 1;
18716 let opNewValue = 0;
18717 let prefersSlot3 = 1;
18718 }
18719 def S2_ct0p : HInst<
18720 (outs IntRegs:$Rd32),
18721 (ins DoubleRegs:$Rss32),
18722 "$Rd32 = ct0($Rss32)",
18723 tc_14b5c689, TypeS_2op>, Enc_90cd8b {
18724 let Inst{13-5} = 0b000000010;
18725 let Inst{31-21} = 0b10001000111;
18726 let hasNewValue = 1;
18727 let opNewValue = 0;
18728 let prefersSlot3 = 1;
18729 }
18730 def S2_ct1 : HInst<
18731 (outs IntRegs:$Rd32),
18732 (ins IntRegs:$Rs32),
18733 "$Rd32 = ct1($Rs32)",
18734 tc_14b5c689, TypeS_2op>, Enc_5e2823 {
18735 let Inst{13-5} = 0b000000101;
18736 let Inst{31-21} = 0b10001100010;
18737 let hasNewValue = 1;
18738 let opNewValue = 0;
18739 let prefersSlot3 = 1;
18740 }
18741 def S2_ct1p : HInst<
18742 (outs IntRegs:$Rd32),
18743 (ins DoubleRegs:$Rss32),
18744 "$Rd32 = ct1($Rss32)",
18745 tc_14b5c689, TypeS_2op>, Enc_90cd8b {
18746 let Inst{13-5} = 0b000000100;
18747 let Inst{31-21} = 0b10001000111;
18748 let hasNewValue = 1;
18749 let opNewValue = 0;
18750 let prefersSlot3 = 1;
18751 }
18752 def S2_deinterleave : HInst<
18753 (outs DoubleRegs:$Rdd32),
18754 (ins DoubleRegs:$Rss32),
18755 "$Rdd32 = deinterleave($Rss32)",
18756 tc_14b5c689, TypeS_2op>, Enc_b9c5fb {
18757 let Inst{13-5} = 0b000000100;
18758 let Inst{31-21} = 0b10000000110;
18759 let prefersSlot3 = 1;
18760 }
18761 def S2_extractu : HInst<
18762 (outs IntRegs:$Rd32),
18763 (ins IntRegs:$Rs32, u5_0Imm:$Ii, u5_0Imm:$II),
18764 "$Rd32 = extractu($Rs32,#$Ii,#$II)",
18765 tc_f675fee8, TypeS_2op>, Enc_b388cf {
18766 let Inst{13-13} = 0b0;
18767 let Inst{31-23} = 0b100011010;
18768 let hasNewValue = 1;
18769 let opNewValue = 0;
18770 let prefersSlot3 = 1;
18771 }
18772 def S2_extractu_rp : HInst<
18773 (outs IntRegs:$Rd32),
18774 (ins IntRegs:$Rs32, DoubleRegs:$Rtt32),
18775 "$Rd32 = extractu($Rs32,$Rtt32)",
18776 tc_002cb246, TypeS_3op>, Enc_e07374 {
18777 let Inst{7-5} = 0b000;
18778 let Inst{13-13} = 0b0;
18779 let Inst{31-21} = 0b11001001000;
18780 let hasNewValue = 1;
18781 let opNewValue = 0;
18782 let prefersSlot3 = 1;
18783 }
18784 def S2_extractup : HInst<
18785 (outs DoubleRegs:$Rdd32),
18786 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii, u6_0Imm:$II),
18787 "$Rdd32 = extractu($Rss32,#$Ii,#$II)",
18788 tc_f675fee8, TypeS_2op>, Enc_b84c4c {
18789 let Inst{31-24} = 0b10000001;
18790 let prefersSlot3 = 1;
18791 }
18792 def S2_extractup_rp : HInst<
18793 (outs DoubleRegs:$Rdd32),
18794 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
18795 "$Rdd32 = extractu($Rss32,$Rtt32)",
18796 tc_002cb246, TypeS_3op>, Enc_a56825 {
18797 let Inst{7-5} = 0b000;
18798 let Inst{13-13} = 0b0;
18799 let Inst{31-21} = 0b11000001000;
18800 let prefersSlot3 = 1;
18801 }
18802 def S2_insert : HInst<
18803 (outs IntRegs:$Rx32),
18804 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii, u5_0Imm:$II),
18805 "$Rx32 = insert($Rs32,#$Ii,#$II)",
18806 tc_bfec0f01, TypeS_2op>, Enc_a1e29d {
18807 let Inst{13-13} = 0b0;
18808 let Inst{31-23} = 0b100011110;
18809 let hasNewValue = 1;
18810 let opNewValue = 0;
18811 let prefersSlot3 = 1;
18812 let Constraints = "$Rx32 = $Rx32in";
18813 }
18814 def S2_insert_rp : HInst<
18815 (outs IntRegs:$Rx32),
18816 (ins IntRegs:$Rx32in, IntRegs:$Rs32, DoubleRegs:$Rtt32),
18817 "$Rx32 = insert($Rs32,$Rtt32)",
18818 tc_f429765c, TypeS_3op>, Enc_179b35 {
18819 let Inst{7-5} = 0b000;
18820 let Inst{13-13} = 0b0;
18821 let Inst{31-21} = 0b11001000000;
18822 let hasNewValue = 1;
18823 let opNewValue = 0;
18824 let prefersSlot3 = 1;
18825 let Constraints = "$Rx32 = $Rx32in";
18826 }
18827 def S2_insertp : HInst<
18828 (outs DoubleRegs:$Rxx32),
18829 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii, u6_0Imm:$II),
18830 "$Rxx32 = insert($Rss32,#$Ii,#$II)",
18831 tc_bfec0f01, TypeS_2op>, Enc_143a3c {
18832 let Inst{31-24} = 0b10000011;
18833 let prefersSlot3 = 1;
18834 let Constraints = "$Rxx32 = $Rxx32in";
18835 }
18836 def S2_insertp_rp : HInst<
18837 (outs DoubleRegs:$Rxx32),
18838 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
18839 "$Rxx32 = insert($Rss32,$Rtt32)",
18840 tc_f429765c, TypeS_3op>, Enc_88c16c {
18841 let Inst{7-5} = 0b000;
18842 let Inst{13-13} = 0b0;
18843 let Inst{31-21} = 0b11001010000;
18844 let prefersSlot3 = 1;
18845 let Constraints = "$Rxx32 = $Rxx32in";
18846 }
18847 def S2_interleave : HInst<
18848 (outs DoubleRegs:$Rdd32),
18849 (ins DoubleRegs:$Rss32),
18850 "$Rdd32 = interleave($Rss32)",
18851 tc_14b5c689, TypeS_2op>, Enc_b9c5fb {
18852 let Inst{13-5} = 0b000000101;
18853 let Inst{31-21} = 0b10000000110;
18854 let prefersSlot3 = 1;
18855 }
18856 def S2_lfsp : HInst<
18857 (outs DoubleRegs:$Rdd32),
18858 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
18859 "$Rdd32 = lfs($Rss32,$Rtt32)",
18860 tc_002cb246, TypeS_3op>, Enc_a56825 {
18861 let Inst{7-5} = 0b110;
18862 let Inst{13-13} = 0b0;
18863 let Inst{31-21} = 0b11000001100;
18864 let prefersSlot3 = 1;
18865 }
18866 def S2_lsl_r_p : HInst<
18867 (outs DoubleRegs:$Rdd32),
18868 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18869 "$Rdd32 = lsl($Rss32,$Rt32)",
18870 tc_946df596, TypeS_3op>, Enc_927852 {
18871 let Inst{7-5} = 0b110;
18872 let Inst{13-13} = 0b0;
18873 let Inst{31-21} = 0b11000011100;
18874 }
18875 def S2_lsl_r_p_acc : HInst<
18876 (outs DoubleRegs:$Rxx32),
18877 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18878 "$Rxx32 += lsl($Rss32,$Rt32)",
18879 tc_f675fee8, TypeS_3op>, Enc_1aa186 {
18880 let Inst{7-5} = 0b110;
18881 let Inst{13-13} = 0b0;
18882 let Inst{31-21} = 0b11001011110;
18883 let prefersSlot3 = 1;
18884 let Constraints = "$Rxx32 = $Rxx32in";
18885 }
18886 def S2_lsl_r_p_and : HInst<
18887 (outs DoubleRegs:$Rxx32),
18888 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18889 "$Rxx32 &= lsl($Rss32,$Rt32)",
18890 tc_f429765c, TypeS_3op>, Enc_1aa186 {
18891 let Inst{7-5} = 0b110;
18892 let Inst{13-13} = 0b0;
18893 let Inst{31-21} = 0b11001011010;
18894 let prefersSlot3 = 1;
18895 let Constraints = "$Rxx32 = $Rxx32in";
18896 }
18897 def S2_lsl_r_p_nac : HInst<
18898 (outs DoubleRegs:$Rxx32),
18899 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18900 "$Rxx32 -= lsl($Rss32,$Rt32)",
18901 tc_f675fee8, TypeS_3op>, Enc_1aa186 {
18902 let Inst{7-5} = 0b110;
18903 let Inst{13-13} = 0b0;
18904 let Inst{31-21} = 0b11001011100;
18905 let prefersSlot3 = 1;
18906 let Constraints = "$Rxx32 = $Rxx32in";
18907 }
18908 def S2_lsl_r_p_or : HInst<
18909 (outs DoubleRegs:$Rxx32),
18910 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18911 "$Rxx32 |= lsl($Rss32,$Rt32)",
18912 tc_f429765c, TypeS_3op>, Enc_1aa186 {
18913 let Inst{7-5} = 0b110;
18914 let Inst{13-13} = 0b0;
18915 let Inst{31-21} = 0b11001011000;
18916 let prefersSlot3 = 1;
18917 let Constraints = "$Rxx32 = $Rxx32in";
18918 }
18919 def S2_lsl_r_p_xor : HInst<
18920 (outs DoubleRegs:$Rxx32),
18921 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
18922 "$Rxx32 ^= lsl($Rss32,$Rt32)",
18923 tc_f429765c, TypeS_3op>, Enc_1aa186 {
18924 let Inst{7-5} = 0b110;
18925 let Inst{13-13} = 0b0;
18926 let Inst{31-21} = 0b11001011011;
18927 let prefersSlot3 = 1;
18928 let Constraints = "$Rxx32 = $Rxx32in";
18929 }
18930 def S2_lsl_r_r : HInst<
18931 (outs IntRegs:$Rd32),
18932 (ins IntRegs:$Rs32, IntRegs:$Rt32),
18933 "$Rd32 = lsl($Rs32,$Rt32)",
18934 tc_946df596, TypeS_3op>, Enc_5ab2be {
18935 let Inst{7-5} = 0b110;
18936 let Inst{13-13} = 0b0;
18937 let Inst{31-21} = 0b11000110010;
18938 let hasNewValue = 1;
18939 let opNewValue = 0;
18940 }
18941 def S2_lsl_r_r_acc : HInst<
18942 (outs IntRegs:$Rx32),
18943 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18944 "$Rx32 += lsl($Rs32,$Rt32)",
18945 tc_f675fee8, TypeS_3op>, Enc_2ae154 {
18946 let Inst{7-5} = 0b110;
18947 let Inst{13-13} = 0b0;
18948 let Inst{31-21} = 0b11001100110;
18949 let hasNewValue = 1;
18950 let opNewValue = 0;
18951 let prefersSlot3 = 1;
18952 let Constraints = "$Rx32 = $Rx32in";
18953 }
18954 def S2_lsl_r_r_and : HInst<
18955 (outs IntRegs:$Rx32),
18956 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18957 "$Rx32 &= lsl($Rs32,$Rt32)",
18958 tc_f429765c, TypeS_3op>, Enc_2ae154 {
18959 let Inst{7-5} = 0b110;
18960 let Inst{13-13} = 0b0;
18961 let Inst{31-21} = 0b11001100010;
18962 let hasNewValue = 1;
18963 let opNewValue = 0;
18964 let prefersSlot3 = 1;
18965 let Constraints = "$Rx32 = $Rx32in";
18966 }
18967 def S2_lsl_r_r_nac : HInst<
18968 (outs IntRegs:$Rx32),
18969 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18970 "$Rx32 -= lsl($Rs32,$Rt32)",
18971 tc_f675fee8, TypeS_3op>, Enc_2ae154 {
18972 let Inst{7-5} = 0b110;
18973 let Inst{13-13} = 0b0;
18974 let Inst{31-21} = 0b11001100100;
18975 let hasNewValue = 1;
18976 let opNewValue = 0;
18977 let prefersSlot3 = 1;
18978 let Constraints = "$Rx32 = $Rx32in";
18979 }
18980 def S2_lsl_r_r_or : HInst<
18981 (outs IntRegs:$Rx32),
18982 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
18983 "$Rx32 |= lsl($Rs32,$Rt32)",
18984 tc_f429765c, TypeS_3op>, Enc_2ae154 {
18985 let Inst{7-5} = 0b110;
18986 let Inst{13-13} = 0b0;
18987 let Inst{31-21} = 0b11001100000;
18988 let hasNewValue = 1;
18989 let opNewValue = 0;
18990 let prefersSlot3 = 1;
18991 let Constraints = "$Rx32 = $Rx32in";
18992 }
18993 def S2_lsl_r_vh : HInst<
18994 (outs DoubleRegs:$Rdd32),
18995 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
18996 "$Rdd32 = vlslh($Rss32,$Rt32)",
18997 tc_946df596, TypeS_3op>, Enc_927852 {
18998 let Inst{7-5} = 0b110;
18999 let Inst{13-13} = 0b0;
19000 let Inst{31-21} = 0b11000011010;
19001 }
19002 def S2_lsl_r_vw : HInst<
19003 (outs DoubleRegs:$Rdd32),
19004 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
19005 "$Rdd32 = vlslw($Rss32,$Rt32)",
19006 tc_946df596, TypeS_3op>, Enc_927852 {
19007 let Inst{7-5} = 0b110;
19008 let Inst{13-13} = 0b0;
19009 let Inst{31-21} = 0b11000011000;
19010 }
19011 def S2_lsr_i_p : HInst<
19012 (outs DoubleRegs:$Rdd32),
19013 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii),
19014 "$Rdd32 = lsr($Rss32,#$Ii)",
19015 tc_946df596, TypeS_2op>, Enc_5eac98 {
19016 let Inst{7-5} = 0b001;
19017 let Inst{31-21} = 0b10000000000;
19018 }
19019 def S2_lsr_i_p_acc : HInst<
19020 (outs DoubleRegs:$Rxx32),
19021 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
19022 "$Rxx32 += lsr($Rss32,#$Ii)",
19023 tc_f675fee8, TypeS_2op>, Enc_70fb07 {
19024 let Inst{7-5} = 0b101;
19025 let Inst{31-21} = 0b10000010000;
19026 let prefersSlot3 = 1;
19027 let Constraints = "$Rxx32 = $Rxx32in";
19028 }
19029 def S2_lsr_i_p_and : HInst<
19030 (outs DoubleRegs:$Rxx32),
19031 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
19032 "$Rxx32 &= lsr($Rss32,#$Ii)",
19033 tc_f429765c, TypeS_2op>, Enc_70fb07 {
19034 let Inst{7-5} = 0b001;
19035 let Inst{31-21} = 0b10000010010;
19036 let prefersSlot3 = 1;
19037 let Constraints = "$Rxx32 = $Rxx32in";
19038 }
19039 def S2_lsr_i_p_nac : HInst<
19040 (outs DoubleRegs:$Rxx32),
19041 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
19042 "$Rxx32 -= lsr($Rss32,#$Ii)",
19043 tc_f675fee8, TypeS_2op>, Enc_70fb07 {
19044 let Inst{7-5} = 0b001;
19045 let Inst{31-21} = 0b10000010000;
19046 let prefersSlot3 = 1;
19047 let Constraints = "$Rxx32 = $Rxx32in";
19048 }
19049 def S2_lsr_i_p_or : HInst<
19050 (outs DoubleRegs:$Rxx32),
19051 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
19052 "$Rxx32 |= lsr($Rss32,#$Ii)",
19053 tc_f429765c, TypeS_2op>, Enc_70fb07 {
19054 let Inst{7-5} = 0b101;
19055 let Inst{31-21} = 0b10000010010;
19056 let prefersSlot3 = 1;
19057 let Constraints = "$Rxx32 = $Rxx32in";
19058 }
19059 def S2_lsr_i_p_xacc : HInst<
19060 (outs DoubleRegs:$Rxx32),
19061 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
19062 "$Rxx32 ^= lsr($Rss32,#$Ii)",
19063 tc_f429765c, TypeS_2op>, Enc_70fb07 {
19064 let Inst{7-5} = 0b001;
19065 let Inst{31-21} = 0b10000010100;
19066 let prefersSlot3 = 1;
19067 let Constraints = "$Rxx32 = $Rxx32in";
19068 }
19069 def S2_lsr_i_r : HInst<
19070 (outs IntRegs:$Rd32),
19071 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
19072 "$Rd32 = lsr($Rs32,#$Ii)",
19073 tc_946df596, TypeS_2op>, Enc_a05677 {
19074 let Inst{7-5} = 0b001;
19075 let Inst{13-13} = 0b0;
19076 let Inst{31-21} = 0b10001100000;
19077 let hasNewValue = 1;
19078 let opNewValue = 0;
19079 }
19080 def S2_lsr_i_r_acc : HInst<
19081 (outs IntRegs:$Rx32),
19082 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
19083 "$Rx32 += lsr($Rs32,#$Ii)",
19084 tc_f675fee8, TypeS_2op>, Enc_28a2dc {
19085 let Inst{7-5} = 0b101;
19086 let Inst{13-13} = 0b0;
19087 let Inst{31-21} = 0b10001110000;
19088 let hasNewValue = 1;
19089 let opNewValue = 0;
19090 let prefersSlot3 = 1;
19091 let Constraints = "$Rx32 = $Rx32in";
19092 }
19093 def S2_lsr_i_r_and : HInst<
19094 (outs IntRegs:$Rx32),
19095 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
19096 "$Rx32 &= lsr($Rs32,#$Ii)",
19097 tc_f429765c, TypeS_2op>, Enc_28a2dc {
19098 let Inst{7-5} = 0b001;
19099 let Inst{13-13} = 0b0;
19100 let Inst{31-21} = 0b10001110010;
19101 let hasNewValue = 1;
19102 let opNewValue = 0;
19103 let prefersSlot3 = 1;
19104 let Constraints = "$Rx32 = $Rx32in";
19105 }
19106 def S2_lsr_i_r_nac : HInst<
19107 (outs IntRegs:$Rx32),
19108 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
19109 "$Rx32 -= lsr($Rs32,#$Ii)",
19110 tc_f675fee8, TypeS_2op>, Enc_28a2dc {
19111 let Inst{7-5} = 0b001;
19112 let Inst{13-13} = 0b0;
19113 let Inst{31-21} = 0b10001110000;
19114 let hasNewValue = 1;
19115 let opNewValue = 0;
19116 let prefersSlot3 = 1;
19117 let Constraints = "$Rx32 = $Rx32in";
19118 }
19119 def S2_lsr_i_r_or : HInst<
19120 (outs IntRegs:$Rx32),
19121 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
19122 "$Rx32 |= lsr($Rs32,#$Ii)",
19123 tc_f429765c, TypeS_2op>, Enc_28a2dc {
19124 let Inst{7-5} = 0b101;
19125 let Inst{13-13} = 0b0;
19126 let Inst{31-21} = 0b10001110010;
19127 let hasNewValue = 1;
19128 let opNewValue = 0;
19129 let prefersSlot3 = 1;
19130 let Constraints = "$Rx32 = $Rx32in";
19131 }
19132 def S2_lsr_i_r_xacc : HInst<
19133 (outs IntRegs:$Rx32),
19134 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
19135 "$Rx32 ^= lsr($Rs32,#$Ii)",
19136 tc_f429765c, TypeS_2op>, Enc_28a2dc {
19137 let Inst{7-5} = 0b001;
19138 let Inst{13-13} = 0b0;
19139 let Inst{31-21} = 0b10001110100;
19140 let hasNewValue = 1;
19141 let opNewValue = 0;
19142 let prefersSlot3 = 1;
19143 let Constraints = "$Rx32 = $Rx32in";
19144 }
19145 def S2_lsr_i_vh : HInst<
19146 (outs DoubleRegs:$Rdd32),
19147 (ins DoubleRegs:$Rss32, u4_0Imm:$Ii),
19148 "$Rdd32 = vlsrh($Rss32,#$Ii)",
19149 tc_946df596, TypeS_2op>, Enc_12b6e9 {
19150 let Inst{7-5} = 0b001;
19151 let Inst{13-12} = 0b00;
19152 let Inst{31-21} = 0b10000000100;
19153 }
19154 def S2_lsr_i_vw : HInst<
19155 (outs DoubleRegs:$Rdd32),
19156 (ins DoubleRegs:$Rss32, u5_0Imm:$Ii),
19157 "$Rdd32 = vlsrw($Rss32,#$Ii)",
19158 tc_946df596, TypeS_2op>, Enc_7e5a82 {
19159 let Inst{7-5} = 0b001;
19160 let Inst{13-13} = 0b0;
19161 let Inst{31-21} = 0b10000000010;
19162 }
19163 def S2_lsr_r_p : HInst<
19164 (outs DoubleRegs:$Rdd32),
19165 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
19166 "$Rdd32 = lsr($Rss32,$Rt32)",
19167 tc_946df596, TypeS_3op>, Enc_927852 {
19168 let Inst{7-5} = 0b010;
19169 let Inst{13-13} = 0b0;
19170 let Inst{31-21} = 0b11000011100;
19171 }
19172 def S2_lsr_r_p_acc : HInst<
19173 (outs DoubleRegs:$Rxx32),
19174 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
19175 "$Rxx32 += lsr($Rss32,$Rt32)",
19176 tc_f675fee8, TypeS_3op>, Enc_1aa186 {
19177 let Inst{7-5} = 0b010;
19178 let Inst{13-13} = 0b0;
19179 let Inst{31-21} = 0b11001011110;
19180 let prefersSlot3 = 1;
19181 let Constraints = "$Rxx32 = $Rxx32in";
19182 }
19183 def S2_lsr_r_p_and : HInst<
19184 (outs DoubleRegs:$Rxx32),
19185 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
19186 "$Rxx32 &= lsr($Rss32,$Rt32)",
19187 tc_f429765c, TypeS_3op>, Enc_1aa186 {
19188 let Inst{7-5} = 0b010;
19189 let Inst{13-13} = 0b0;
19190 let Inst{31-21} = 0b11001011010;
19191 let prefersSlot3 = 1;
19192 let Constraints = "$Rxx32 = $Rxx32in";
19193 }
19194 def S2_lsr_r_p_nac : HInst<
19195 (outs DoubleRegs:$Rxx32),
19196 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
19197 "$Rxx32 -= lsr($Rss32,$Rt32)",
19198 tc_f675fee8, TypeS_3op>, Enc_1aa186 {
19199 let Inst{7-5} = 0b010;
19200 let Inst{13-13} = 0b0;
19201 let Inst{31-21} = 0b11001011100;
19202 let prefersSlot3 = 1;
19203 let Constraints = "$Rxx32 = $Rxx32in";
19204 }
19205 def S2_lsr_r_p_or : HInst<
19206 (outs DoubleRegs:$Rxx32),
19207 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
19208 "$Rxx32 |= lsr($Rss32,$Rt32)",
19209 tc_f429765c, TypeS_3op>, Enc_1aa186 {
19210 let Inst{7-5} = 0b010;
19211 let Inst{13-13} = 0b0;
19212 let Inst{31-21} = 0b11001011000;
19213 let prefersSlot3 = 1;
19214 let Constraints = "$Rxx32 = $Rxx32in";
19215 }
19216 def S2_lsr_r_p_xor : HInst<
19217 (outs DoubleRegs:$Rxx32),
19218 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
19219 "$Rxx32 ^= lsr($Rss32,$Rt32)",
19220 tc_f429765c, TypeS_3op>, Enc_1aa186 {
19221 let Inst{7-5} = 0b010;
19222 let Inst{13-13} = 0b0;
19223 let Inst{31-21} = 0b11001011011;
19224 let prefersSlot3 = 1;
19225 let Constraints = "$Rxx32 = $Rxx32in";
19226 }
19227 def S2_lsr_r_r : HInst<
19228 (outs IntRegs:$Rd32),
19229 (ins IntRegs:$Rs32, IntRegs:$Rt32),
19230 "$Rd32 = lsr($Rs32,$Rt32)",
19231 tc_946df596, TypeS_3op>, Enc_5ab2be {
19232 let Inst{7-5} = 0b010;
19233 let Inst{13-13} = 0b0;
19234 let Inst{31-21} = 0b11000110010;
19235 let hasNewValue = 1;
19236 let opNewValue = 0;
19237 }
19238 def S2_lsr_r_r_acc : HInst<
19239 (outs IntRegs:$Rx32),
19240 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
19241 "$Rx32 += lsr($Rs32,$Rt32)",
19242 tc_f675fee8, TypeS_3op>, Enc_2ae154 {
19243 let Inst{7-5} = 0b010;
19244 let Inst{13-13} = 0b0;
19245 let Inst{31-21} = 0b11001100110;
19246 let hasNewValue = 1;
19247 let opNewValue = 0;
19248 let prefersSlot3 = 1;
19249 let Constraints = "$Rx32 = $Rx32in";
19250 }
19251 def S2_lsr_r_r_and : HInst<
19252 (outs IntRegs:$Rx32),
19253 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
19254 "$Rx32 &= lsr($Rs32,$Rt32)",
19255 tc_f429765c, TypeS_3op>, Enc_2ae154 {
19256 let Inst{7-5} = 0b010;
19257 let Inst{13-13} = 0b0;
19258 let Inst{31-21} = 0b11001100010;
19259 let hasNewValue = 1;
19260 let opNewValue = 0;
19261 let prefersSlot3 = 1;
19262 let Constraints = "$Rx32 = $Rx32in";
19263 }
19264 def S2_lsr_r_r_nac : HInst<
19265 (outs IntRegs:$Rx32),
19266 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
19267 "$Rx32 -= lsr($Rs32,$Rt32)",
19268 tc_f675fee8, TypeS_3op>, Enc_2ae154 {
19269 let Inst{7-5} = 0b010;
19270 let Inst{13-13} = 0b0;
19271 let Inst{31-21} = 0b11001100100;
19272 let hasNewValue = 1;
19273 let opNewValue = 0;
19274 let prefersSlot3 = 1;
19275 let Constraints = "$Rx32 = $Rx32in";
19276 }
19277 def S2_lsr_r_r_or : HInst<
19278 (outs IntRegs:$Rx32),
19279 (ins IntRegs:$Rx32in, IntRegs:$Rs32, IntRegs:$Rt32),
19280 "$Rx32 |= lsr($Rs32,$Rt32)",
19281 tc_f429765c, TypeS_3op>, Enc_2ae154 {
19282 let Inst{7-5} = 0b010;
19283 let Inst{13-13} = 0b0;
19284 let Inst{31-21} = 0b11001100000;
19285 let hasNewValue = 1;
19286 let opNewValue = 0;
19287 let prefersSlot3 = 1;
19288 let Constraints = "$Rx32 = $Rx32in";
19289 }
19290 def S2_lsr_r_vh : HInst<
19291 (outs DoubleRegs:$Rdd32),
19292 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
19293 "$Rdd32 = vlsrh($Rss32,$Rt32)",
19294 tc_946df596, TypeS_3op>, Enc_927852 {
19295 let Inst{7-5} = 0b010;
19296 let Inst{13-13} = 0b0;
19297 let Inst{31-21} = 0b11000011010;
19298 }
19299 def S2_lsr_r_vw : HInst<
19300 (outs DoubleRegs:$Rdd32),
19301 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
19302 "$Rdd32 = vlsrw($Rss32,$Rt32)",
19303 tc_946df596, TypeS_3op>, Enc_927852 {
19304 let Inst{7-5} = 0b010;
19305 let Inst{13-13} = 0b0;
19306 let Inst{31-21} = 0b11000011000;
19307 }
19308 def S2_mask : HInst<
19309 (outs IntRegs:$Rd32),
19310 (ins u5_0Imm:$Ii, u5_0Imm:$II),
19311 "$Rd32 = mask(#$Ii,#$II)",
19312 tc_9461ff31, TypeS_2op>, Enc_c85e2a, Requires<[HasV66]> {
19313 let Inst{13-13} = 0b1;
19314 let Inst{20-16} = 0b00000;
19315 let Inst{31-23} = 0b100011010;
19316 let hasNewValue = 1;
19317 let opNewValue = 0;
19318 let prefersSlot3 = 1;
19319 }
19320 def S2_packhl : HInst<
19321 (outs DoubleRegs:$Rdd32),
19322 (ins IntRegs:$Rs32, IntRegs:$Rt32),
19323 "$Rdd32 = packhl($Rs32,$Rt32)",
19324 tc_5a2711e5, TypeALU32_3op>, Enc_be32a5 {
19325 let Inst{7-5} = 0b000;
19326 let Inst{13-13} = 0b0;
19327 let Inst{31-21} = 0b11110101100;
19328 let InputType = "reg";
19329 }
19330 def S2_parityp : HInst<
19331 (outs IntRegs:$Rd32),
19332 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
19333 "$Rd32 = parity($Rss32,$Rtt32)",
19334 tc_002cb246, TypeALU64>, Enc_d2216a {
19335 let Inst{7-5} = 0b000;
19336 let Inst{13-13} = 0b0;
19337 let Inst{31-21} = 0b11010000000;
19338 let hasNewValue = 1;
19339 let opNewValue = 0;
19340 let prefersSlot3 = 1;
19341 }
19342 def S2_pstorerbf_io : HInst<
19343 (outs),
19344 (ins PredRegs:$Pv4, IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
19345 "if (!$Pv4) memb($Rs32+#$Ii) = $Rt32",
19346 tc_f8e23f0b, TypeV2LDST>, Enc_da8d43, AddrModeRel {
19347 let Inst{2-2} = 0b0;
19348 let Inst{31-21} = 0b01000100000;
19349 let isPredicated = 1;
19350 let isPredicatedFalse = 1;
19351 let addrMode = BaseImmOffset;
19352 let accessSize = ByteAccess;
19353 let mayStore = 1;
19354 let CextOpcode = "S2_storerb";
19355 let InputType = "imm";
19356 let BaseOpcode = "S2_storerb_io";
19357 let isNVStorable = 1;
19358 let isExtendable = 1;
19359 let opExtendable = 2;
19360 let isExtentSigned = 0;
19361 let opExtentBits = 6;
19362 let opExtentAlign = 0;
19363 }
19364 def S2_pstorerbf_pi : HInst<
19365 (outs IntRegs:$Rx32),
19366 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Rt32),
19367 "if (!$Pv4) memb($Rx32++#$Ii) = $Rt32",
19368 tc_24b66c99, TypeST>, Enc_cc449f, AddrModeRel {
19369 let Inst{2-2} = 0b1;
19370 let Inst{7-7} = 0b0;
19371 let Inst{13-13} = 0b1;
19372 let Inst{31-21} = 0b10101011000;
19373 let isPredicated = 1;
19374 let isPredicatedFalse = 1;
19375 let addrMode = PostInc;
19376 let accessSize = ByteAccess;
19377 let mayStore = 1;
19378 let BaseOpcode = "S2_storerb_pi";
19379 let isNVStorable = 1;
19380 let Constraints = "$Rx32 = $Rx32in";
19381 }
19382 def S2_pstorerbf_zomap : HInst<
19383 (outs),
19384 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
19385 "if (!$Pv4) memb($Rs32) = $Rt32",
19386 tc_f8e23f0b, TypeMAPPING> {
19387 let isPseudo = 1;
19388 let isCodeGenOnly = 1;
19389 }
19390 def S2_pstorerbfnew_pi : HInst<
19391 (outs IntRegs:$Rx32),
19392 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Rt32),
19393 "if (!$Pv4.new) memb($Rx32++#$Ii) = $Rt32",
19394 tc_53559e35, TypeST>, Enc_cc449f, AddrModeRel {
19395 let Inst{2-2} = 0b1;
19396 let Inst{7-7} = 0b1;
19397 let Inst{13-13} = 0b1;
19398 let Inst{31-21} = 0b10101011000;
19399 let isPredicated = 1;
19400 let isPredicatedFalse = 1;
19401 let addrMode = PostInc;
19402 let accessSize = ByteAccess;
19403 let isPredicatedNew = 1;
19404 let mayStore = 1;
19405 let BaseOpcode = "S2_storerb_pi";
19406 let isNVStorable = 1;
19407 let Constraints = "$Rx32 = $Rx32in";
19408 }
19409 def S2_pstorerbnewf_io : HInst<
19410 (outs),
19411 (ins PredRegs:$Pv4, IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Nt8),
19412 "if (!$Pv4) memb($Rs32+#$Ii) = $Nt8.new",
19413 tc_8fb7ab1b, TypeV2LDST>, Enc_585242, AddrModeRel {
19414 let Inst{2-2} = 0b0;
19415 let Inst{12-11} = 0b00;
19416 let Inst{31-21} = 0b01000100101;
19417 let isPredicated = 1;
19418 let isPredicatedFalse = 1;
19419 let addrMode = BaseImmOffset;
19420 let accessSize = ByteAccess;
19421 let isNVStore = 1;
19422 let isNewValue = 1;
19423 let isRestrictNoSlot1Store = 1;
19424 let mayStore = 1;
19425 let CextOpcode = "S2_storerb";
19426 let InputType = "imm";
19427 let BaseOpcode = "S2_storerb_io";
19428 let isExtendable = 1;
19429 let opExtendable = 2;
19430 let isExtentSigned = 0;
19431 let opExtentBits = 6;
19432 let opExtentAlign = 0;
19433 let opNewValue = 3;
19434 }
19435 def S2_pstorerbnewf_pi : HInst<
19436 (outs IntRegs:$Rx32),
19437 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Nt8),
19438 "if (!$Pv4) memb($Rx32++#$Ii) = $Nt8.new",
19439 tc_838b34ea, TypeST>, Enc_52a5dd, AddrModeRel {
19440 let Inst{2-2} = 0b1;
19441 let Inst{7-7} = 0b0;
19442 let Inst{13-11} = 0b100;
19443 let Inst{31-21} = 0b10101011101;
19444 let isPredicated = 1;
19445 let isPredicatedFalse = 1;
19446 let addrMode = PostInc;
19447 let accessSize = ByteAccess;
19448 let isNVStore = 1;
19449 let isNewValue = 1;
19450 let isRestrictNoSlot1Store = 1;
19451 let mayStore = 1;
19452 let CextOpcode = "S2_storerb";
19453 let BaseOpcode = "S2_storerb_pi";
19454 let opNewValue = 4;
19455 let Constraints = "$Rx32 = $Rx32in";
19456 }
19457 def S2_pstorerbnewf_zomap : HInst<
19458 (outs),
19459 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
19460 "if (!$Pv4) memb($Rs32) = $Nt8.new",
19461 tc_8fb7ab1b, TypeMAPPING> {
19462 let isPseudo = 1;
19463 let isCodeGenOnly = 1;
19464 let opNewValue = 2;
19465 }
19466 def S2_pstorerbnewfnew_pi : HInst<
19467 (outs IntRegs:$Rx32),
19468 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Nt8),
19469 "if (!$Pv4.new) memb($Rx32++#$Ii) = $Nt8.new",
19470 tc_d65dbf51, TypeST>, Enc_52a5dd, AddrModeRel {
19471 let Inst{2-2} = 0b1;
19472 let Inst{7-7} = 0b1;
19473 let Inst{13-11} = 0b100;
19474 let Inst{31-21} = 0b10101011101;
19475 let isPredicated = 1;
19476 let isPredicatedFalse = 1;
19477 let addrMode = PostInc;
19478 let accessSize = ByteAccess;
19479 let isNVStore = 1;
19480 let isPredicatedNew = 1;
19481 let isNewValue = 1;
19482 let isRestrictNoSlot1Store = 1;
19483 let mayStore = 1;
19484 let CextOpcode = "S2_storerb";
19485 let BaseOpcode = "S2_storerb_pi";
19486 let opNewValue = 4;
19487 let Constraints = "$Rx32 = $Rx32in";
19488 }
19489 def S2_pstorerbnewt_io : HInst<
19490 (outs),
19491 (ins PredRegs:$Pv4, IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Nt8),
19492 "if ($Pv4) memb($Rs32+#$Ii) = $Nt8.new",
19493 tc_8fb7ab1b, TypeV2LDST>, Enc_585242, AddrModeRel {
19494 let Inst{2-2} = 0b0;
19495 let Inst{12-11} = 0b00;
19496 let Inst{31-21} = 0b01000000101;
19497 let isPredicated = 1;
19498 let addrMode = BaseImmOffset;
19499 let accessSize = ByteAccess;
19500 let isNVStore = 1;
19501 let isNewValue = 1;
19502 let isRestrictNoSlot1Store = 1;
19503 let mayStore = 1;
19504 let CextOpcode = "S2_storerb";
19505 let InputType = "imm";
19506 let BaseOpcode = "S2_storerb_io";
19507 let isExtendable = 1;
19508 let opExtendable = 2;
19509 let isExtentSigned = 0;
19510 let opExtentBits = 6;
19511 let opExtentAlign = 0;
19512 let opNewValue = 3;
19513 }
19514 def S2_pstorerbnewt_pi : HInst<
19515 (outs IntRegs:$Rx32),
19516 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Nt8),
19517 "if ($Pv4) memb($Rx32++#$Ii) = $Nt8.new",
19518 tc_838b34ea, TypeST>, Enc_52a5dd, AddrModeRel {
19519 let Inst{2-2} = 0b0;
19520 let Inst{7-7} = 0b0;
19521 let Inst{13-11} = 0b100;
19522 let Inst{31-21} = 0b10101011101;
19523 let isPredicated = 1;
19524 let addrMode = PostInc;
19525 let accessSize = ByteAccess;
19526 let isNVStore = 1;
19527 let isNewValue = 1;
19528 let isRestrictNoSlot1Store = 1;
19529 let mayStore = 1;
19530 let CextOpcode = "S2_storerb";
19531 let BaseOpcode = "S2_storerb_pi";
19532 let opNewValue = 4;
19533 let Constraints = "$Rx32 = $Rx32in";
19534 }
19535 def S2_pstorerbnewt_zomap : HInst<
19536 (outs),
19537 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
19538 "if ($Pv4) memb($Rs32) = $Nt8.new",
19539 tc_8fb7ab1b, TypeMAPPING> {
19540 let isPseudo = 1;
19541 let isCodeGenOnly = 1;
19542 let opNewValue = 2;
19543 }
19544 def S2_pstorerbnewtnew_pi : HInst<
19545 (outs IntRegs:$Rx32),
19546 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Nt8),
19547 "if ($Pv4.new) memb($Rx32++#$Ii) = $Nt8.new",
19548 tc_d65dbf51, TypeST>, Enc_52a5dd, AddrModeRel {
19549 let Inst{2-2} = 0b0;
19550 let Inst{7-7} = 0b1;
19551 let Inst{13-11} = 0b100;
19552 let Inst{31-21} = 0b10101011101;
19553 let isPredicated = 1;
19554 let addrMode = PostInc;
19555 let accessSize = ByteAccess;
19556 let isNVStore = 1;
19557 let isPredicatedNew = 1;
19558 let isNewValue = 1;
19559 let isRestrictNoSlot1Store = 1;
19560 let mayStore = 1;
19561 let CextOpcode = "S2_storerb";
19562 let BaseOpcode = "S2_storerb_pi";
19563 let opNewValue = 4;
19564 let Constraints = "$Rx32 = $Rx32in";
19565 }
19566 def S2_pstorerbt_io : HInst<
19567 (outs),
19568 (ins PredRegs:$Pv4, IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
19569 "if ($Pv4) memb($Rs32+#$Ii) = $Rt32",
19570 tc_f8e23f0b, TypeV2LDST>, Enc_da8d43, AddrModeRel {
19571 let Inst{2-2} = 0b0;
19572 let Inst{31-21} = 0b01000000000;
19573 let isPredicated = 1;
19574 let addrMode = BaseImmOffset;
19575 let accessSize = ByteAccess;
19576 let mayStore = 1;
19577 let CextOpcode = "S2_storerb";
19578 let InputType = "imm";
19579 let BaseOpcode = "S2_storerb_io";
19580 let isNVStorable = 1;
19581 let isExtendable = 1;
19582 let opExtendable = 2;
19583 let isExtentSigned = 0;
19584 let opExtentBits = 6;
19585 let opExtentAlign = 0;
19586 }
19587 def S2_pstorerbt_pi : HInst<
19588 (outs IntRegs:$Rx32),
19589 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Rt32),
19590 "if ($Pv4) memb($Rx32++#$Ii) = $Rt32",
19591 tc_24b66c99, TypeST>, Enc_cc449f, AddrModeRel {
19592 let Inst{2-2} = 0b0;
19593 let Inst{7-7} = 0b0;
19594 let Inst{13-13} = 0b1;
19595 let Inst{31-21} = 0b10101011000;
19596 let isPredicated = 1;
19597 let addrMode = PostInc;
19598 let accessSize = ByteAccess;
19599 let mayStore = 1;
19600 let BaseOpcode = "S2_storerb_pi";
19601 let isNVStorable = 1;
19602 let Constraints = "$Rx32 = $Rx32in";
19603 }
19604 def S2_pstorerbt_zomap : HInst<
19605 (outs),
19606 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
19607 "if ($Pv4) memb($Rs32) = $Rt32",
19608 tc_f8e23f0b, TypeMAPPING> {
19609 let isPseudo = 1;
19610 let isCodeGenOnly = 1;
19611 }
19612 def S2_pstorerbtnew_pi : HInst<
19613 (outs IntRegs:$Rx32),
19614 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Rt32),
19615 "if ($Pv4.new) memb($Rx32++#$Ii) = $Rt32",
19616 tc_53559e35, TypeST>, Enc_cc449f, AddrModeRel {
19617 let Inst{2-2} = 0b0;
19618 let Inst{7-7} = 0b1;
19619 let Inst{13-13} = 0b1;
19620 let Inst{31-21} = 0b10101011000;
19621 let isPredicated = 1;
19622 let addrMode = PostInc;
19623 let accessSize = ByteAccess;
19624 let isPredicatedNew = 1;
19625 let mayStore = 1;
19626 let BaseOpcode = "S2_storerb_pi";
19627 let isNVStorable = 1;
19628 let Constraints = "$Rx32 = $Rx32in";
19629 }
19630 def S2_pstorerdf_io : HInst<
19631 (outs),
19632 (ins PredRegs:$Pv4, IntRegs:$Rs32, u29_3Imm:$Ii, DoubleRegs:$Rtt32),
19633 "if (!$Pv4) memd($Rs32+#$Ii) = $Rtt32",
19634 tc_f8e23f0b, TypeV2LDST>, Enc_57a33e, AddrModeRel {
19635 let Inst{2-2} = 0b0;
19636 let Inst{31-21} = 0b01000100110;
19637 let isPredicated = 1;
19638 let isPredicatedFalse = 1;
19639 let addrMode = BaseImmOffset;
19640 let accessSize = DoubleWordAccess;
19641 let mayStore = 1;
19642 let CextOpcode = "S2_storerd";
19643 let InputType = "imm";
19644 let BaseOpcode = "S2_storerd_io";
19645 let isExtendable = 1;
19646 let opExtendable = 2;
19647 let isExtentSigned = 0;
19648 let opExtentBits = 9;
19649 let opExtentAlign = 3;
19650 }
19651 def S2_pstorerdf_pi : HInst<
19652 (outs IntRegs:$Rx32),
19653 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_3Imm:$Ii, DoubleRegs:$Rtt32),
19654 "if (!$Pv4) memd($Rx32++#$Ii) = $Rtt32",
19655 tc_24b66c99, TypeST>, Enc_9a33d5, AddrModeRel {
19656 let Inst{2-2} = 0b1;
19657 let Inst{7-7} = 0b0;
19658 let Inst{13-13} = 0b1;
19659 let Inst{31-21} = 0b10101011110;
19660 let isPredicated = 1;
19661 let isPredicatedFalse = 1;
19662 let addrMode = PostInc;
19663 let accessSize = DoubleWordAccess;
19664 let mayStore = 1;
19665 let CextOpcode = "S2_storerd";
19666 let BaseOpcode = "S2_storerd_pi";
19667 let Constraints = "$Rx32 = $Rx32in";
19668 }
19669 def S2_pstorerdf_zomap : HInst<
19670 (outs),
19671 (ins PredRegs:$Pv4, IntRegs:$Rs32, DoubleRegs:$Rtt32),
19672 "if (!$Pv4) memd($Rs32) = $Rtt32",
19673 tc_f8e23f0b, TypeMAPPING> {
19674 let isPseudo = 1;
19675 let isCodeGenOnly = 1;
19676 }
19677 def S2_pstorerdfnew_pi : HInst<
19678 (outs IntRegs:$Rx32),
19679 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_3Imm:$Ii, DoubleRegs:$Rtt32),
19680 "if (!$Pv4.new) memd($Rx32++#$Ii) = $Rtt32",
19681 tc_53559e35, TypeST>, Enc_9a33d5, AddrModeRel {
19682 let Inst{2-2} = 0b1;
19683 let Inst{7-7} = 0b1;
19684 let Inst{13-13} = 0b1;
19685 let Inst{31-21} = 0b10101011110;
19686 let isPredicated = 1;
19687 let isPredicatedFalse = 1;
19688 let addrMode = PostInc;
19689 let accessSize = DoubleWordAccess;
19690 let isPredicatedNew = 1;
19691 let mayStore = 1;
19692 let CextOpcode = "S2_storerd";
19693 let BaseOpcode = "S2_storerd_pi";
19694 let Constraints = "$Rx32 = $Rx32in";
19695 }
19696 def S2_pstorerdt_io : HInst<
19697 (outs),
19698 (ins PredRegs:$Pv4, IntRegs:$Rs32, u29_3Imm:$Ii, DoubleRegs:$Rtt32),
19699 "if ($Pv4) memd($Rs32+#$Ii) = $Rtt32",
19700 tc_f8e23f0b, TypeV2LDST>, Enc_57a33e, AddrModeRel {
19701 let Inst{2-2} = 0b0;
19702 let Inst{31-21} = 0b01000000110;
19703 let isPredicated = 1;
19704 let addrMode = BaseImmOffset;
19705 let accessSize = DoubleWordAccess;
19706 let mayStore = 1;
19707 let CextOpcode = "S2_storerd";
19708 let InputType = "imm";
19709 let BaseOpcode = "S2_storerd_io";
19710 let isExtendable = 1;
19711 let opExtendable = 2;
19712 let isExtentSigned = 0;
19713 let opExtentBits = 9;
19714 let opExtentAlign = 3;
19715 }
19716 def S2_pstorerdt_pi : HInst<
19717 (outs IntRegs:$Rx32),
19718 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_3Imm:$Ii, DoubleRegs:$Rtt32),
19719 "if ($Pv4) memd($Rx32++#$Ii) = $Rtt32",
19720 tc_24b66c99, TypeST>, Enc_9a33d5, AddrModeRel {
19721 let Inst{2-2} = 0b0;
19722 let Inst{7-7} = 0b0;
19723 let Inst{13-13} = 0b1;
19724 let Inst{31-21} = 0b10101011110;
19725 let isPredicated = 1;
19726 let addrMode = PostInc;
19727 let accessSize = DoubleWordAccess;
19728 let mayStore = 1;
19729 let CextOpcode = "S2_storerd";
19730 let BaseOpcode = "S2_storerd_pi";
19731 let Constraints = "$Rx32 = $Rx32in";
19732 }
19733 def S2_pstorerdt_zomap : HInst<
19734 (outs),
19735 (ins PredRegs:$Pv4, IntRegs:$Rs32, DoubleRegs:$Rtt32),
19736 "if ($Pv4) memd($Rs32) = $Rtt32",
19737 tc_f8e23f0b, TypeMAPPING> {
19738 let isPseudo = 1;
19739 let isCodeGenOnly = 1;
19740 }
19741 def S2_pstorerdtnew_pi : HInst<
19742 (outs IntRegs:$Rx32),
19743 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_3Imm:$Ii, DoubleRegs:$Rtt32),
19744 "if ($Pv4.new) memd($Rx32++#$Ii) = $Rtt32",
19745 tc_53559e35, TypeST>, Enc_9a33d5, AddrModeRel {
19746 let Inst{2-2} = 0b0;
19747 let Inst{7-7} = 0b1;
19748 let Inst{13-13} = 0b1;
19749 let Inst{31-21} = 0b10101011110;
19750 let isPredicated = 1;
19751 let addrMode = PostInc;
19752 let accessSize = DoubleWordAccess;
19753 let isPredicatedNew = 1;
19754 let mayStore = 1;
19755 let CextOpcode = "S2_storerd";
19756 let BaseOpcode = "S2_storerd_pi";
19757 let Constraints = "$Rx32 = $Rx32in";
19758 }
19759 def S2_pstorerff_io : HInst<
19760 (outs),
19761 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
19762 "if (!$Pv4) memh($Rs32+#$Ii) = $Rt32.h",
19763 tc_f8e23f0b, TypeV2LDST>, Enc_e8c45e, AddrModeRel {
19764 let Inst{2-2} = 0b0;
19765 let Inst{31-21} = 0b01000100011;
19766 let isPredicated = 1;
19767 let isPredicatedFalse = 1;
19768 let addrMode = BaseImmOffset;
19769 let accessSize = HalfWordAccess;
19770 let mayStore = 1;
19771 let CextOpcode = "S2_storerf";
19772 let InputType = "imm";
19773 let BaseOpcode = "S2_storerf_io";
19774 let isExtendable = 1;
19775 let opExtendable = 2;
19776 let isExtentSigned = 0;
19777 let opExtentBits = 7;
19778 let opExtentAlign = 1;
19779 }
19780 def S2_pstorerff_pi : HInst<
19781 (outs IntRegs:$Rx32),
19782 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
19783 "if (!$Pv4) memh($Rx32++#$Ii) = $Rt32.h",
19784 tc_24b66c99, TypeST>, Enc_b886fd, AddrModeRel {
19785 let Inst{2-2} = 0b1;
19786 let Inst{7-7} = 0b0;
19787 let Inst{13-13} = 0b1;
19788 let Inst{31-21} = 0b10101011011;
19789 let isPredicated = 1;
19790 let isPredicatedFalse = 1;
19791 let addrMode = PostInc;
19792 let accessSize = HalfWordAccess;
19793 let mayStore = 1;
19794 let CextOpcode = "S2_storerf";
19795 let BaseOpcode = "S2_storerf_pi";
19796 let Constraints = "$Rx32 = $Rx32in";
19797 }
19798 def S2_pstorerff_zomap : HInst<
19799 (outs),
19800 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
19801 "if (!$Pv4) memh($Rs32) = $Rt32.h",
19802 tc_f8e23f0b, TypeMAPPING> {
19803 let isPseudo = 1;
19804 let isCodeGenOnly = 1;
19805 }
19806 def S2_pstorerffnew_pi : HInst<
19807 (outs IntRegs:$Rx32),
19808 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
19809 "if (!$Pv4.new) memh($Rx32++#$Ii) = $Rt32.h",
19810 tc_53559e35, TypeST>, Enc_b886fd, AddrModeRel {
19811 let Inst{2-2} = 0b1;
19812 let Inst{7-7} = 0b1;
19813 let Inst{13-13} = 0b1;
19814 let Inst{31-21} = 0b10101011011;
19815 let isPredicated = 1;
19816 let isPredicatedFalse = 1;
19817 let addrMode = PostInc;
19818 let accessSize = HalfWordAccess;
19819 let isPredicatedNew = 1;
19820 let mayStore = 1;
19821 let CextOpcode = "S2_storerf";
19822 let BaseOpcode = "S2_storerf_pi";
19823 let Constraints = "$Rx32 = $Rx32in";
19824 }
19825 def S2_pstorerft_io : HInst<
19826 (outs),
19827 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
19828 "if ($Pv4) memh($Rs32+#$Ii) = $Rt32.h",
19829 tc_f8e23f0b, TypeV2LDST>, Enc_e8c45e, AddrModeRel {
19830 let Inst{2-2} = 0b0;
19831 let Inst{31-21} = 0b01000000011;
19832 let isPredicated = 1;
19833 let addrMode = BaseImmOffset;
19834 let accessSize = HalfWordAccess;
19835 let mayStore = 1;
19836 let CextOpcode = "S2_storerf";
19837 let InputType = "imm";
19838 let BaseOpcode = "S2_storerf_io";
19839 let isExtendable = 1;
19840 let opExtendable = 2;
19841 let isExtentSigned = 0;
19842 let opExtentBits = 7;
19843 let opExtentAlign = 1;
19844 }
19845 def S2_pstorerft_pi : HInst<
19846 (outs IntRegs:$Rx32),
19847 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
19848 "if ($Pv4) memh($Rx32++#$Ii) = $Rt32.h",
19849 tc_24b66c99, TypeST>, Enc_b886fd, AddrModeRel {
19850 let Inst{2-2} = 0b0;
19851 let Inst{7-7} = 0b0;
19852 let Inst{13-13} = 0b1;
19853 let Inst{31-21} = 0b10101011011;
19854 let isPredicated = 1;
19855 let addrMode = PostInc;
19856 let accessSize = HalfWordAccess;
19857 let mayStore = 1;
19858 let CextOpcode = "S2_storerf";
19859 let BaseOpcode = "S2_storerf_pi";
19860 let Constraints = "$Rx32 = $Rx32in";
19861 }
19862 def S2_pstorerft_zomap : HInst<
19863 (outs),
19864 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
19865 "if ($Pv4) memh($Rs32) = $Rt32.h",
19866 tc_f8e23f0b, TypeMAPPING> {
19867 let isPseudo = 1;
19868 let isCodeGenOnly = 1;
19869 }
19870 def S2_pstorerftnew_pi : HInst<
19871 (outs IntRegs:$Rx32),
19872 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
19873 "if ($Pv4.new) memh($Rx32++#$Ii) = $Rt32.h",
19874 tc_53559e35, TypeST>, Enc_b886fd, AddrModeRel {
19875 let Inst{2-2} = 0b0;
19876 let Inst{7-7} = 0b1;
19877 let Inst{13-13} = 0b1;
19878 let Inst{31-21} = 0b10101011011;
19879 let isPredicated = 1;
19880 let addrMode = PostInc;
19881 let accessSize = HalfWordAccess;
19882 let isPredicatedNew = 1;
19883 let mayStore = 1;
19884 let CextOpcode = "S2_storerf";
19885 let BaseOpcode = "S2_storerf_pi";
19886 let Constraints = "$Rx32 = $Rx32in";
19887 }
19888 def S2_pstorerhf_io : HInst<
19889 (outs),
19890 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
19891 "if (!$Pv4) memh($Rs32+#$Ii) = $Rt32",
19892 tc_f8e23f0b, TypeV2LDST>, Enc_e8c45e, AddrModeRel {
19893 let Inst{2-2} = 0b0;
19894 let Inst{31-21} = 0b01000100010;
19895 let isPredicated = 1;
19896 let isPredicatedFalse = 1;
19897 let addrMode = BaseImmOffset;
19898 let accessSize = HalfWordAccess;
19899 let mayStore = 1;
19900 let CextOpcode = "S2_storerh";
19901 let InputType = "imm";
19902 let BaseOpcode = "S2_storerh_io";
19903 let isNVStorable = 1;
19904 let isExtendable = 1;
19905 let opExtendable = 2;
19906 let isExtentSigned = 0;
19907 let opExtentBits = 7;
19908 let opExtentAlign = 1;
19909 }
19910 def S2_pstorerhf_pi : HInst<
19911 (outs IntRegs:$Rx32),
19912 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
19913 "if (!$Pv4) memh($Rx32++#$Ii) = $Rt32",
19914 tc_24b66c99, TypeST>, Enc_b886fd, AddrModeRel {
19915 let Inst{2-2} = 0b1;
19916 let Inst{7-7} = 0b0;
19917 let Inst{13-13} = 0b1;
19918 let Inst{31-21} = 0b10101011010;
19919 let isPredicated = 1;
19920 let isPredicatedFalse = 1;
19921 let addrMode = PostInc;
19922 let accessSize = HalfWordAccess;
19923 let mayStore = 1;
19924 let BaseOpcode = "S2_storerh_pi";
19925 let isNVStorable = 1;
19926 let Constraints = "$Rx32 = $Rx32in";
19927 }
19928 def S2_pstorerhf_zomap : HInst<
19929 (outs),
19930 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
19931 "if (!$Pv4) memh($Rs32) = $Rt32",
19932 tc_f8e23f0b, TypeMAPPING> {
19933 let isPseudo = 1;
19934 let isCodeGenOnly = 1;
19935 }
19936 def S2_pstorerhfnew_pi : HInst<
19937 (outs IntRegs:$Rx32),
19938 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
19939 "if (!$Pv4.new) memh($Rx32++#$Ii) = $Rt32",
19940 tc_53559e35, TypeST>, Enc_b886fd, AddrModeRel {
19941 let Inst{2-2} = 0b1;
19942 let Inst{7-7} = 0b1;
19943 let Inst{13-13} = 0b1;
19944 let Inst{31-21} = 0b10101011010;
19945 let isPredicated = 1;
19946 let isPredicatedFalse = 1;
19947 let addrMode = PostInc;
19948 let accessSize = HalfWordAccess;
19949 let isPredicatedNew = 1;
19950 let mayStore = 1;
19951 let BaseOpcode = "S2_storerh_pi";
19952 let isNVStorable = 1;
19953 let Constraints = "$Rx32 = $Rx32in";
19954 }
19955 def S2_pstorerhnewf_io : HInst<
19956 (outs),
19957 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Nt8),
19958 "if (!$Pv4) memh($Rs32+#$Ii) = $Nt8.new",
19959 tc_8fb7ab1b, TypeV2LDST>, Enc_f44229, AddrModeRel {
19960 let Inst{2-2} = 0b0;
19961 let Inst{12-11} = 0b01;
19962 let Inst{31-21} = 0b01000100101;
19963 let isPredicated = 1;
19964 let isPredicatedFalse = 1;
19965 let addrMode = BaseImmOffset;
19966 let accessSize = HalfWordAccess;
19967 let isNVStore = 1;
19968 let isNewValue = 1;
19969 let isRestrictNoSlot1Store = 1;
19970 let mayStore = 1;
19971 let CextOpcode = "S2_storerh";
19972 let InputType = "imm";
19973 let BaseOpcode = "S2_storerh_io";
19974 let isExtendable = 1;
19975 let opExtendable = 2;
19976 let isExtentSigned = 0;
19977 let opExtentBits = 7;
19978 let opExtentAlign = 1;
19979 let opNewValue = 3;
19980 }
19981 def S2_pstorerhnewf_pi : HInst<
19982 (outs IntRegs:$Rx32),
19983 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Nt8),
19984 "if (!$Pv4) memh($Rx32++#$Ii) = $Nt8.new",
19985 tc_838b34ea, TypeST>, Enc_31aa6a, AddrModeRel {
19986 let Inst{2-2} = 0b1;
19987 let Inst{7-7} = 0b0;
19988 let Inst{13-11} = 0b101;
19989 let Inst{31-21} = 0b10101011101;
19990 let isPredicated = 1;
19991 let isPredicatedFalse = 1;
19992 let addrMode = PostInc;
19993 let accessSize = HalfWordAccess;
19994 let isNVStore = 1;
19995 let isNewValue = 1;
19996 let isRestrictNoSlot1Store = 1;
19997 let mayStore = 1;
19998 let CextOpcode = "S2_storerh";
19999 let BaseOpcode = "S2_storerh_pi";
20000 let opNewValue = 4;
20001 let Constraints = "$Rx32 = $Rx32in";
20002 }
20003 def S2_pstorerhnewf_zomap : HInst<
20004 (outs),
20005 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
20006 "if (!$Pv4) memh($Rs32) = $Nt8.new",
20007 tc_8fb7ab1b, TypeMAPPING> {
20008 let isPseudo = 1;
20009 let isCodeGenOnly = 1;
20010 let opNewValue = 2;
20011 }
20012 def S2_pstorerhnewfnew_pi : HInst<
20013 (outs IntRegs:$Rx32),
20014 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Nt8),
20015 "if (!$Pv4.new) memh($Rx32++#$Ii) = $Nt8.new",
20016 tc_d65dbf51, TypeST>, Enc_31aa6a, AddrModeRel {
20017 let Inst{2-2} = 0b1;
20018 let Inst{7-7} = 0b1;
20019 let Inst{13-11} = 0b101;
20020 let Inst{31-21} = 0b10101011101;
20021 let isPredicated = 1;
20022 let isPredicatedFalse = 1;
20023 let addrMode = PostInc;
20024 let accessSize = HalfWordAccess;
20025 let isNVStore = 1;
20026 let isPredicatedNew = 1;
20027 let isNewValue = 1;
20028 let isRestrictNoSlot1Store = 1;
20029 let mayStore = 1;
20030 let CextOpcode = "S2_storerh";
20031 let BaseOpcode = "S2_storerh_pi";
20032 let opNewValue = 4;
20033 let Constraints = "$Rx32 = $Rx32in";
20034 }
20035 def S2_pstorerhnewt_io : HInst<
20036 (outs),
20037 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Nt8),
20038 "if ($Pv4) memh($Rs32+#$Ii) = $Nt8.new",
20039 tc_8fb7ab1b, TypeV2LDST>, Enc_f44229, AddrModeRel {
20040 let Inst{2-2} = 0b0;
20041 let Inst{12-11} = 0b01;
20042 let Inst{31-21} = 0b01000000101;
20043 let isPredicated = 1;
20044 let addrMode = BaseImmOffset;
20045 let accessSize = HalfWordAccess;
20046 let isNVStore = 1;
20047 let isNewValue = 1;
20048 let isRestrictNoSlot1Store = 1;
20049 let mayStore = 1;
20050 let CextOpcode = "S2_storerh";
20051 let InputType = "imm";
20052 let BaseOpcode = "S2_storerh_io";
20053 let isExtendable = 1;
20054 let opExtendable = 2;
20055 let isExtentSigned = 0;
20056 let opExtentBits = 7;
20057 let opExtentAlign = 1;
20058 let opNewValue = 3;
20059 }
20060 def S2_pstorerhnewt_pi : HInst<
20061 (outs IntRegs:$Rx32),
20062 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Nt8),
20063 "if ($Pv4) memh($Rx32++#$Ii) = $Nt8.new",
20064 tc_838b34ea, TypeST>, Enc_31aa6a, AddrModeRel {
20065 let Inst{2-2} = 0b0;
20066 let Inst{7-7} = 0b0;
20067 let Inst{13-11} = 0b101;
20068 let Inst{31-21} = 0b10101011101;
20069 let isPredicated = 1;
20070 let addrMode = PostInc;
20071 let accessSize = HalfWordAccess;
20072 let isNVStore = 1;
20073 let isNewValue = 1;
20074 let isRestrictNoSlot1Store = 1;
20075 let mayStore = 1;
20076 let CextOpcode = "S2_storerh";
20077 let BaseOpcode = "S2_storerh_pi";
20078 let opNewValue = 4;
20079 let Constraints = "$Rx32 = $Rx32in";
20080 }
20081 def S2_pstorerhnewt_zomap : HInst<
20082 (outs),
20083 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
20084 "if ($Pv4) memh($Rs32) = $Nt8.new",
20085 tc_8fb7ab1b, TypeMAPPING> {
20086 let isPseudo = 1;
20087 let isCodeGenOnly = 1;
20088 let opNewValue = 2;
20089 }
20090 def S2_pstorerhnewtnew_pi : HInst<
20091 (outs IntRegs:$Rx32),
20092 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Nt8),
20093 "if ($Pv4.new) memh($Rx32++#$Ii) = $Nt8.new",
20094 tc_d65dbf51, TypeST>, Enc_31aa6a, AddrModeRel {
20095 let Inst{2-2} = 0b0;
20096 let Inst{7-7} = 0b1;
20097 let Inst{13-11} = 0b101;
20098 let Inst{31-21} = 0b10101011101;
20099 let isPredicated = 1;
20100 let addrMode = PostInc;
20101 let accessSize = HalfWordAccess;
20102 let isNVStore = 1;
20103 let isPredicatedNew = 1;
20104 let isNewValue = 1;
20105 let isRestrictNoSlot1Store = 1;
20106 let mayStore = 1;
20107 let CextOpcode = "S2_storerh";
20108 let BaseOpcode = "S2_storerh_pi";
20109 let opNewValue = 4;
20110 let Constraints = "$Rx32 = $Rx32in";
20111 }
20112 def S2_pstorerht_io : HInst<
20113 (outs),
20114 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
20115 "if ($Pv4) memh($Rs32+#$Ii) = $Rt32",
20116 tc_f8e23f0b, TypeV2LDST>, Enc_e8c45e, AddrModeRel {
20117 let Inst{2-2} = 0b0;
20118 let Inst{31-21} = 0b01000000010;
20119 let isPredicated = 1;
20120 let addrMode = BaseImmOffset;
20121 let accessSize = HalfWordAccess;
20122 let mayStore = 1;
20123 let CextOpcode = "S2_storerh";
20124 let InputType = "imm";
20125 let BaseOpcode = "S2_storerh_io";
20126 let isNVStorable = 1;
20127 let isExtendable = 1;
20128 let opExtendable = 2;
20129 let isExtentSigned = 0;
20130 let opExtentBits = 7;
20131 let opExtentAlign = 1;
20132 }
20133 def S2_pstorerht_pi : HInst<
20134 (outs IntRegs:$Rx32),
20135 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
20136 "if ($Pv4) memh($Rx32++#$Ii) = $Rt32",
20137 tc_24b66c99, TypeST>, Enc_b886fd, AddrModeRel {
20138 let Inst{2-2} = 0b0;
20139 let Inst{7-7} = 0b0;
20140 let Inst{13-13} = 0b1;
20141 let Inst{31-21} = 0b10101011010;
20142 let isPredicated = 1;
20143 let addrMode = PostInc;
20144 let accessSize = HalfWordAccess;
20145 let mayStore = 1;
20146 let BaseOpcode = "S2_storerh_pi";
20147 let isNVStorable = 1;
20148 let Constraints = "$Rx32 = $Rx32in";
20149 }
20150 def S2_pstorerht_zomap : HInst<
20151 (outs),
20152 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
20153 "if ($Pv4) memh($Rs32) = $Rt32",
20154 tc_f8e23f0b, TypeMAPPING> {
20155 let isPseudo = 1;
20156 let isCodeGenOnly = 1;
20157 }
20158 def S2_pstorerhtnew_pi : HInst<
20159 (outs IntRegs:$Rx32),
20160 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
20161 "if ($Pv4.new) memh($Rx32++#$Ii) = $Rt32",
20162 tc_53559e35, TypeST>, Enc_b886fd, AddrModeRel {
20163 let Inst{2-2} = 0b0;
20164 let Inst{7-7} = 0b1;
20165 let Inst{13-13} = 0b1;
20166 let Inst{31-21} = 0b10101011010;
20167 let isPredicated = 1;
20168 let addrMode = PostInc;
20169 let accessSize = HalfWordAccess;
20170 let isPredicatedNew = 1;
20171 let mayStore = 1;
20172 let BaseOpcode = "S2_storerh_pi";
20173 let isNVStorable = 1;
20174 let Constraints = "$Rx32 = $Rx32in";
20175 }
20176 def S2_pstorerif_io : HInst<
20177 (outs),
20178 (ins PredRegs:$Pv4, IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Rt32),
20179 "if (!$Pv4) memw($Rs32+#$Ii) = $Rt32",
20180 tc_f8e23f0b, TypeV2LDST>, Enc_397f23, AddrModeRel {
20181 let Inst{2-2} = 0b0;
20182 let Inst{31-21} = 0b01000100100;
20183 let isPredicated = 1;
20184 let isPredicatedFalse = 1;
20185 let addrMode = BaseImmOffset;
20186 let accessSize = WordAccess;
20187 let mayStore = 1;
20188 let CextOpcode = "S2_storeri";
20189 let InputType = "imm";
20190 let BaseOpcode = "S2_storeri_io";
20191 let isNVStorable = 1;
20192 let isExtendable = 1;
20193 let opExtendable = 2;
20194 let isExtentSigned = 0;
20195 let opExtentBits = 8;
20196 let opExtentAlign = 2;
20197 }
20198 def S2_pstorerif_pi : HInst<
20199 (outs IntRegs:$Rx32),
20200 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Rt32),
20201 "if (!$Pv4) memw($Rx32++#$Ii) = $Rt32",
20202 tc_24b66c99, TypeST>, Enc_7eaeb6, AddrModeRel {
20203 let Inst{2-2} = 0b1;
20204 let Inst{7-7} = 0b0;
20205 let Inst{13-13} = 0b1;
20206 let Inst{31-21} = 0b10101011100;
20207 let isPredicated = 1;
20208 let isPredicatedFalse = 1;
20209 let addrMode = PostInc;
20210 let accessSize = WordAccess;
20211 let mayStore = 1;
20212 let BaseOpcode = "S2_storeri_pi";
20213 let isNVStorable = 1;
20214 let Constraints = "$Rx32 = $Rx32in";
20215 }
20216 def S2_pstorerif_zomap : HInst<
20217 (outs),
20218 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
20219 "if (!$Pv4) memw($Rs32) = $Rt32",
20220 tc_f8e23f0b, TypeMAPPING> {
20221 let isPseudo = 1;
20222 let isCodeGenOnly = 1;
20223 }
20224 def S2_pstorerifnew_pi : HInst<
20225 (outs IntRegs:$Rx32),
20226 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Rt32),
20227 "if (!$Pv4.new) memw($Rx32++#$Ii) = $Rt32",
20228 tc_53559e35, TypeST>, Enc_7eaeb6, AddrModeRel {
20229 let Inst{2-2} = 0b1;
20230 let Inst{7-7} = 0b1;
20231 let Inst{13-13} = 0b1;
20232 let Inst{31-21} = 0b10101011100;
20233 let isPredicated = 1;
20234 let isPredicatedFalse = 1;
20235 let addrMode = PostInc;
20236 let accessSize = WordAccess;
20237 let isPredicatedNew = 1;
20238 let mayStore = 1;
20239 let CextOpcode = "S2_storeri";
20240 let BaseOpcode = "S2_storeri_pi";
20241 let isNVStorable = 1;
20242 let Constraints = "$Rx32 = $Rx32in";
20243 }
20244 def S2_pstorerinewf_io : HInst<
20245 (outs),
20246 (ins PredRegs:$Pv4, IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Nt8),
20247 "if (!$Pv4) memw($Rs32+#$Ii) = $Nt8.new",
20248 tc_8fb7ab1b, TypeV2LDST>, Enc_8dbdfe, AddrModeRel {
20249 let Inst{2-2} = 0b0;
20250 let Inst{12-11} = 0b10;
20251 let Inst{31-21} = 0b01000100101;
20252 let isPredicated = 1;
20253 let isPredicatedFalse = 1;
20254 let addrMode = BaseImmOffset;
20255 let accessSize = WordAccess;
20256 let isNVStore = 1;
20257 let isNewValue = 1;
20258 let isRestrictNoSlot1Store = 1;
20259 let mayStore = 1;
20260 let CextOpcode = "S2_storeri";
20261 let InputType = "imm";
20262 let BaseOpcode = "S2_storeri_io";
20263 let isExtendable = 1;
20264 let opExtendable = 2;
20265 let isExtentSigned = 0;
20266 let opExtentBits = 8;
20267 let opExtentAlign = 2;
20268 let opNewValue = 3;
20269 }
20270 def S2_pstorerinewf_pi : HInst<
20271 (outs IntRegs:$Rx32),
20272 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Nt8),
20273 "if (!$Pv4) memw($Rx32++#$Ii) = $Nt8.new",
20274 tc_838b34ea, TypeST>, Enc_65f095, AddrModeRel {
20275 let Inst{2-2} = 0b1;
20276 let Inst{7-7} = 0b0;
20277 let Inst{13-11} = 0b110;
20278 let Inst{31-21} = 0b10101011101;
20279 let isPredicated = 1;
20280 let isPredicatedFalse = 1;
20281 let addrMode = PostInc;
20282 let accessSize = WordAccess;
20283 let isNVStore = 1;
20284 let isNewValue = 1;
20285 let isRestrictNoSlot1Store = 1;
20286 let mayStore = 1;
20287 let CextOpcode = "S2_storeri";
20288 let BaseOpcode = "S2_storeri_pi";
20289 let opNewValue = 4;
20290 let Constraints = "$Rx32 = $Rx32in";
20291 }
20292 def S2_pstorerinewf_zomap : HInst<
20293 (outs),
20294 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
20295 "if (!$Pv4) memw($Rs32) = $Nt8.new",
20296 tc_8fb7ab1b, TypeMAPPING> {
20297 let isPseudo = 1;
20298 let isCodeGenOnly = 1;
20299 let opNewValue = 2;
20300 }
20301 def S2_pstorerinewfnew_pi : HInst<
20302 (outs IntRegs:$Rx32),
20303 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Nt8),
20304 "if (!$Pv4.new) memw($Rx32++#$Ii) = $Nt8.new",
20305 tc_d65dbf51, TypeST>, Enc_65f095, AddrModeRel {
20306 let Inst{2-2} = 0b1;
20307 let Inst{7-7} = 0b1;
20308 let Inst{13-11} = 0b110;
20309 let Inst{31-21} = 0b10101011101;
20310 let isPredicated = 1;
20311 let isPredicatedFalse = 1;
20312 let addrMode = PostInc;
20313 let accessSize = WordAccess;
20314 let isNVStore = 1;
20315 let isPredicatedNew = 1;
20316 let isNewValue = 1;
20317 let isRestrictNoSlot1Store = 1;
20318 let mayStore = 1;
20319 let CextOpcode = "S2_storeri";
20320 let BaseOpcode = "S2_storeri_pi";
20321 let opNewValue = 4;
20322 let Constraints = "$Rx32 = $Rx32in";
20323 }
20324 def S2_pstorerinewt_io : HInst<
20325 (outs),
20326 (ins PredRegs:$Pv4, IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Nt8),
20327 "if ($Pv4) memw($Rs32+#$Ii) = $Nt8.new",
20328 tc_8fb7ab1b, TypeV2LDST>, Enc_8dbdfe, AddrModeRel {
20329 let Inst{2-2} = 0b0;
20330 let Inst{12-11} = 0b10;
20331 let Inst{31-21} = 0b01000000101;
20332 let isPredicated = 1;
20333 let addrMode = BaseImmOffset;
20334 let accessSize = WordAccess;
20335 let isNVStore = 1;
20336 let isNewValue = 1;
20337 let isRestrictNoSlot1Store = 1;
20338 let mayStore = 1;
20339 let CextOpcode = "S2_storeri";
20340 let InputType = "imm";
20341 let BaseOpcode = "S2_storeri_io";
20342 let isExtendable = 1;
20343 let opExtendable = 2;
20344 let isExtentSigned = 0;
20345 let opExtentBits = 8;
20346 let opExtentAlign = 2;
20347 let opNewValue = 3;
20348 }
20349 def S2_pstorerinewt_pi : HInst<
20350 (outs IntRegs:$Rx32),
20351 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Nt8),
20352 "if ($Pv4) memw($Rx32++#$Ii) = $Nt8.new",
20353 tc_838b34ea, TypeST>, Enc_65f095, AddrModeRel {
20354 let Inst{2-2} = 0b0;
20355 let Inst{7-7} = 0b0;
20356 let Inst{13-11} = 0b110;
20357 let Inst{31-21} = 0b10101011101;
20358 let isPredicated = 1;
20359 let addrMode = PostInc;
20360 let accessSize = WordAccess;
20361 let isNVStore = 1;
20362 let isNewValue = 1;
20363 let isRestrictNoSlot1Store = 1;
20364 let mayStore = 1;
20365 let CextOpcode = "S2_storeri";
20366 let BaseOpcode = "S2_storeri_pi";
20367 let opNewValue = 4;
20368 let Constraints = "$Rx32 = $Rx32in";
20369 }
20370 def S2_pstorerinewt_zomap : HInst<
20371 (outs),
20372 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
20373 "if ($Pv4) memw($Rs32) = $Nt8.new",
20374 tc_8fb7ab1b, TypeMAPPING> {
20375 let isPseudo = 1;
20376 let isCodeGenOnly = 1;
20377 let opNewValue = 2;
20378 }
20379 def S2_pstorerinewtnew_pi : HInst<
20380 (outs IntRegs:$Rx32),
20381 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Nt8),
20382 "if ($Pv4.new) memw($Rx32++#$Ii) = $Nt8.new",
20383 tc_d65dbf51, TypeST>, Enc_65f095, AddrModeRel {
20384 let Inst{2-2} = 0b0;
20385 let Inst{7-7} = 0b1;
20386 let Inst{13-11} = 0b110;
20387 let Inst{31-21} = 0b10101011101;
20388 let isPredicated = 1;
20389 let addrMode = PostInc;
20390 let accessSize = WordAccess;
20391 let isNVStore = 1;
20392 let isPredicatedNew = 1;
20393 let isNewValue = 1;
20394 let isRestrictNoSlot1Store = 1;
20395 let mayStore = 1;
20396 let CextOpcode = "S2_storeri";
20397 let BaseOpcode = "S2_storeri_pi";
20398 let opNewValue = 4;
20399 let Constraints = "$Rx32 = $Rx32in";
20400 }
20401 def S2_pstorerit_io : HInst<
20402 (outs),
20403 (ins PredRegs:$Pv4, IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Rt32),
20404 "if ($Pv4) memw($Rs32+#$Ii) = $Rt32",
20405 tc_f8e23f0b, TypeV2LDST>, Enc_397f23, AddrModeRel {
20406 let Inst{2-2} = 0b0;
20407 let Inst{31-21} = 0b01000000100;
20408 let isPredicated = 1;
20409 let addrMode = BaseImmOffset;
20410 let accessSize = WordAccess;
20411 let mayStore = 1;
20412 let CextOpcode = "S2_storeri";
20413 let InputType = "imm";
20414 let BaseOpcode = "S2_storeri_io";
20415 let isNVStorable = 1;
20416 let isExtendable = 1;
20417 let opExtendable = 2;
20418 let isExtentSigned = 0;
20419 let opExtentBits = 8;
20420 let opExtentAlign = 2;
20421 }
20422 def S2_pstorerit_pi : HInst<
20423 (outs IntRegs:$Rx32),
20424 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Rt32),
20425 "if ($Pv4) memw($Rx32++#$Ii) = $Rt32",
20426 tc_24b66c99, TypeST>, Enc_7eaeb6, AddrModeRel {
20427 let Inst{2-2} = 0b0;
20428 let Inst{7-7} = 0b0;
20429 let Inst{13-13} = 0b1;
20430 let Inst{31-21} = 0b10101011100;
20431 let isPredicated = 1;
20432 let addrMode = PostInc;
20433 let accessSize = WordAccess;
20434 let mayStore = 1;
20435 let BaseOpcode = "S2_storeri_pi";
20436 let isNVStorable = 1;
20437 let Constraints = "$Rx32 = $Rx32in";
20438 }
20439 def S2_pstorerit_zomap : HInst<
20440 (outs),
20441 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
20442 "if ($Pv4) memw($Rs32) = $Rt32",
20443 tc_f8e23f0b, TypeMAPPING> {
20444 let isPseudo = 1;
20445 let isCodeGenOnly = 1;
20446 }
20447 def S2_pstoreritnew_pi : HInst<
20448 (outs IntRegs:$Rx32),
20449 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Rt32),
20450 "if ($Pv4.new) memw($Rx32++#$Ii) = $Rt32",
20451 tc_53559e35, TypeST>, Enc_7eaeb6, AddrModeRel {
20452 let Inst{2-2} = 0b0;
20453 let Inst{7-7} = 0b1;
20454 let Inst{13-13} = 0b1;
20455 let Inst{31-21} = 0b10101011100;
20456 let isPredicated = 1;
20457 let addrMode = PostInc;
20458 let accessSize = WordAccess;
20459 let isPredicatedNew = 1;
20460 let mayStore = 1;
20461 let BaseOpcode = "S2_storeri_pi";
20462 let isNVStorable = 1;
20463 let Constraints = "$Rx32 = $Rx32in";
20464 }
20465 def S2_setbit_i : HInst<
20466 (outs IntRegs:$Rd32),
20467 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
20468 "$Rd32 = setbit($Rs32,#$Ii)",
20469 tc_946df596, TypeS_2op>, Enc_a05677 {
20470 let Inst{7-5} = 0b000;
20471 let Inst{13-13} = 0b0;
20472 let Inst{31-21} = 0b10001100110;
20473 let hasNewValue = 1;
20474 let opNewValue = 0;
20475 }
20476 def S2_setbit_r : HInst<
20477 (outs IntRegs:$Rd32),
20478 (ins IntRegs:$Rs32, IntRegs:$Rt32),
20479 "$Rd32 = setbit($Rs32,$Rt32)",
20480 tc_946df596, TypeS_3op>, Enc_5ab2be {
20481 let Inst{7-5} = 0b000;
20482 let Inst{13-13} = 0b0;
20483 let Inst{31-21} = 0b11000110100;
20484 let hasNewValue = 1;
20485 let opNewValue = 0;
20486 }
20487 def S2_shuffeb : HInst<
20488 (outs DoubleRegs:$Rdd32),
20489 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
20490 "$Rdd32 = shuffeb($Rss32,$Rtt32)",
20491 tc_946df596, TypeS_3op>, Enc_a56825 {
20492 let Inst{7-5} = 0b010;
20493 let Inst{13-13} = 0b0;
20494 let Inst{31-21} = 0b11000001000;
20495 }
20496 def S2_shuffeh : HInst<
20497 (outs DoubleRegs:$Rdd32),
20498 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
20499 "$Rdd32 = shuffeh($Rss32,$Rtt32)",
20500 tc_946df596, TypeS_3op>, Enc_a56825 {
20501 let Inst{7-5} = 0b110;
20502 let Inst{13-13} = 0b0;
20503 let Inst{31-21} = 0b11000001000;
20504 }
20505 def S2_shuffob : HInst<
20506 (outs DoubleRegs:$Rdd32),
20507 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
20508 "$Rdd32 = shuffob($Rtt32,$Rss32)",
20509 tc_946df596, TypeS_3op>, Enc_ea23e4 {
20510 let Inst{7-5} = 0b100;
20511 let Inst{13-13} = 0b0;
20512 let Inst{31-21} = 0b11000001000;
20513 }
20514 def S2_shuffoh : HInst<
20515 (outs DoubleRegs:$Rdd32),
20516 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32),
20517 "$Rdd32 = shuffoh($Rtt32,$Rss32)",
20518 tc_946df596, TypeS_3op>, Enc_ea23e4 {
20519 let Inst{7-5} = 0b000;
20520 let Inst{13-13} = 0b0;
20521 let Inst{31-21} = 0b11000001100;
20522 }
20523 def S2_storerb_io : HInst<
20524 (outs),
20525 (ins IntRegs:$Rs32, s32_0Imm:$Ii, IntRegs:$Rt32),
20526 "memb($Rs32+#$Ii) = $Rt32",
20527 tc_30b9bb4a, TypeST>, Enc_448f7f, AddrModeRel, PostInc_BaseImm {
20528 let Inst{24-21} = 0b1000;
20529 let Inst{31-27} = 0b10100;
20530 let addrMode = BaseImmOffset;
20531 let accessSize = ByteAccess;
20532 let mayStore = 1;
20533 let CextOpcode = "S2_storerb";
20534 let InputType = "imm";
20535 let BaseOpcode = "S2_storerb_io";
20536 let isPredicable = 1;
20537 let isNVStorable = 1;
20538 let isExtendable = 1;
20539 let opExtendable = 1;
20540 let isExtentSigned = 1;
20541 let opExtentBits = 11;
20542 let opExtentAlign = 0;
20543 }
20544 def S2_storerb_pbr : HInst<
20545 (outs IntRegs:$Rx32),
20546 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
20547 "memb($Rx32++$Mu2:brev) = $Rt32",
20548 tc_da97ee82, TypeST>, Enc_d5c73f, AddrModeRel {
20549 let Inst{7-0} = 0b00000000;
20550 let Inst{31-21} = 0b10101111000;
20551 let addrMode = PostInc;
20552 let accessSize = ByteAccess;
20553 let mayStore = 1;
20554 let BaseOpcode = "S2_storerb_pbr";
20555 let isNVStorable = 1;
20556 let Constraints = "$Rx32 = $Rx32in";
20557 }
20558 def S2_storerb_pci : HInst<
20559 (outs IntRegs:$Rx32),
20560 (ins IntRegs:$Rx32in, s4_0Imm:$Ii, ModRegs:$Mu2, IntRegs:$Rt32),
20561 "memb($Rx32++#$Ii:circ($Mu2)) = $Rt32",
20562 tc_e86aa961, TypeST>, Enc_b15941, AddrModeRel {
20563 let Inst{2-0} = 0b000;
20564 let Inst{7-7} = 0b0;
20565 let Inst{31-21} = 0b10101001000;
20566 let addrMode = PostInc;
20567 let accessSize = ByteAccess;
20568 let mayStore = 1;
20569 let Uses = [CS];
20570 let BaseOpcode = "S2_storerb_pci";
20571 let isNVStorable = 1;
20572 let Constraints = "$Rx32 = $Rx32in";
20573 }
20574 def S2_storerb_pcr : HInst<
20575 (outs IntRegs:$Rx32),
20576 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
20577 "memb($Rx32++I:circ($Mu2)) = $Rt32",
20578 tc_da97ee82, TypeST>, Enc_d5c73f, AddrModeRel {
20579 let Inst{7-0} = 0b00000010;
20580 let Inst{31-21} = 0b10101001000;
20581 let addrMode = PostInc;
20582 let accessSize = ByteAccess;
20583 let mayStore = 1;
20584 let Uses = [CS];
20585 let BaseOpcode = "S2_storerb_pcr";
20586 let isNVStorable = 1;
20587 let Constraints = "$Rx32 = $Rx32in";
20588 }
20589 def S2_storerb_pi : HInst<
20590 (outs IntRegs:$Rx32),
20591 (ins IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Rt32),
20592 "memb($Rx32++#$Ii) = $Rt32",
20593 tc_da97ee82, TypeST>, Enc_10bc21, AddrModeRel, PostInc_BaseImm {
20594 let Inst{2-0} = 0b000;
20595 let Inst{7-7} = 0b0;
20596 let Inst{13-13} = 0b0;
20597 let Inst{31-21} = 0b10101011000;
20598 let addrMode = PostInc;
20599 let accessSize = ByteAccess;
20600 let mayStore = 1;
20601 let CextOpcode = "S2_storerb";
20602 let BaseOpcode = "S2_storerb_pi";
20603 let isPredicable = 1;
20604 let isNVStorable = 1;
20605 let Constraints = "$Rx32 = $Rx32in";
20606 }
20607 def S2_storerb_pr : HInst<
20608 (outs IntRegs:$Rx32),
20609 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
20610 "memb($Rx32++$Mu2) = $Rt32",
20611 tc_da97ee82, TypeST>, Enc_d5c73f {
20612 let Inst{7-0} = 0b00000000;
20613 let Inst{31-21} = 0b10101101000;
20614 let addrMode = PostInc;
20615 let accessSize = ByteAccess;
20616 let mayStore = 1;
20617 let isNVStorable = 1;
20618 let Constraints = "$Rx32 = $Rx32in";
20619 }
20620 def S2_storerb_zomap : HInst<
20621 (outs),
20622 (ins IntRegs:$Rs32, IntRegs:$Rt32),
20623 "memb($Rs32) = $Rt32",
20624 tc_30b9bb4a, TypeMAPPING> {
20625 let isPseudo = 1;
20626 let isCodeGenOnly = 1;
20627 }
20628 def S2_storerbgp : HInst<
20629 (outs),
20630 (ins u32_0Imm:$Ii, IntRegs:$Rt32),
20631 "memb(gp+#$Ii) = $Rt32",
20632 tc_0371abea, TypeV2LDST>, Enc_1b64fb, AddrModeRel {
20633 let Inst{24-21} = 0b0000;
20634 let Inst{31-27} = 0b01001;
20635 let accessSize = ByteAccess;
20636 let mayStore = 1;
20637 let Uses = [GP];
20638 let BaseOpcode = "S2_storerbabs";
20639 let isPredicable = 1;
20640 let isNVStorable = 1;
20641 let opExtendable = 0;
20642 let isExtentSigned = 0;
20643 let opExtentBits = 16;
20644 let opExtentAlign = 0;
20645 }
20646 def S2_storerbnew_io : HInst<
20647 (outs),
20648 (ins IntRegs:$Rs32, s32_0Imm:$Ii, IntRegs:$Nt8),
20649 "memb($Rs32+#$Ii) = $Nt8.new",
20650 tc_be9602ff, TypeST>, Enc_4df4e9, AddrModeRel {
20651 let Inst{12-11} = 0b00;
20652 let Inst{24-21} = 0b1101;
20653 let Inst{31-27} = 0b10100;
20654 let addrMode = BaseImmOffset;
20655 let accessSize = ByteAccess;
20656 let isNVStore = 1;
20657 let isNewValue = 1;
20658 let isRestrictNoSlot1Store = 1;
20659 let mayStore = 1;
20660 let CextOpcode = "S2_storerb";
20661 let InputType = "imm";
20662 let BaseOpcode = "S2_storerb_io";
20663 let isPredicable = 1;
20664 let isExtendable = 1;
20665 let opExtendable = 1;
20666 let isExtentSigned = 1;
20667 let opExtentBits = 11;
20668 let opExtentAlign = 0;
20669 let opNewValue = 2;
20670 }
20671 def S2_storerbnew_pbr : HInst<
20672 (outs IntRegs:$Rx32),
20673 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
20674 "memb($Rx32++$Mu2:brev) = $Nt8.new",
20675 tc_c79a189f, TypeST>, Enc_8dbe85, AddrModeRel {
20676 let Inst{7-0} = 0b00000000;
20677 let Inst{12-11} = 0b00;
20678 let Inst{31-21} = 0b10101111101;
20679 let addrMode = PostInc;
20680 let accessSize = ByteAccess;
20681 let isNVStore = 1;
20682 let isNewValue = 1;
20683 let isRestrictNoSlot1Store = 1;
20684 let mayStore = 1;
20685 let BaseOpcode = "S2_storerb_pbr";
20686 let opNewValue = 3;
20687 let Constraints = "$Rx32 = $Rx32in";
20688 }
20689 def S2_storerbnew_pci : HInst<
20690 (outs IntRegs:$Rx32),
20691 (ins IntRegs:$Rx32in, s4_0Imm:$Ii, ModRegs:$Mu2, IntRegs:$Nt8),
20692 "memb($Rx32++#$Ii:circ($Mu2)) = $Nt8.new",
20693 tc_d5c0729a, TypeST>, Enc_96ce4f, AddrModeRel {
20694 let Inst{2-0} = 0b000;
20695 let Inst{7-7} = 0b0;
20696 let Inst{12-11} = 0b00;
20697 let Inst{31-21} = 0b10101001101;
20698 let addrMode = PostInc;
20699 let accessSize = ByteAccess;
20700 let isNVStore = 1;
20701 let isNewValue = 1;
20702 let isRestrictNoSlot1Store = 1;
20703 let mayStore = 1;
20704 let Uses = [CS];
20705 let BaseOpcode = "S2_storerb_pci";
20706 let opNewValue = 4;
20707 let Constraints = "$Rx32 = $Rx32in";
20708 }
20709 def S2_storerbnew_pcr : HInst<
20710 (outs IntRegs:$Rx32),
20711 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
20712 "memb($Rx32++I:circ($Mu2)) = $Nt8.new",
20713 tc_c79a189f, TypeST>, Enc_8dbe85, AddrModeRel {
20714 let Inst{7-0} = 0b00000010;
20715 let Inst{12-11} = 0b00;
20716 let Inst{31-21} = 0b10101001101;
20717 let addrMode = PostInc;
20718 let accessSize = ByteAccess;
20719 let isNVStore = 1;
20720 let isNewValue = 1;
20721 let isRestrictNoSlot1Store = 1;
20722 let mayStore = 1;
20723 let Uses = [CS];
20724 let BaseOpcode = "S2_storerb_pcr";
20725 let opNewValue = 3;
20726 let Constraints = "$Rx32 = $Rx32in";
20727 }
20728 def S2_storerbnew_pi : HInst<
20729 (outs IntRegs:$Rx32),
20730 (ins IntRegs:$Rx32in, s4_0Imm:$Ii, IntRegs:$Nt8),
20731 "memb($Rx32++#$Ii) = $Nt8.new",
20732 tc_c79a189f, TypeST>, Enc_c7cd90, AddrModeRel {
20733 let Inst{2-0} = 0b000;
20734 let Inst{7-7} = 0b0;
20735 let Inst{13-11} = 0b000;
20736 let Inst{31-21} = 0b10101011101;
20737 let addrMode = PostInc;
20738 let accessSize = ByteAccess;
20739 let isNVStore = 1;
20740 let isNewValue = 1;
20741 let isRestrictNoSlot1Store = 1;
20742 let mayStore = 1;
20743 let BaseOpcode = "S2_storerb_pi";
20744 let isPredicable = 1;
20745 let isNVStorable = 1;
20746 let opNewValue = 3;
20747 let Constraints = "$Rx32 = $Rx32in";
20748 }
20749 def S2_storerbnew_pr : HInst<
20750 (outs IntRegs:$Rx32),
20751 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
20752 "memb($Rx32++$Mu2) = $Nt8.new",
20753 tc_c79a189f, TypeST>, Enc_8dbe85 {
20754 let Inst{7-0} = 0b00000000;
20755 let Inst{12-11} = 0b00;
20756 let Inst{31-21} = 0b10101101101;
20757 let addrMode = PostInc;
20758 let accessSize = ByteAccess;
20759 let isNVStore = 1;
20760 let isNewValue = 1;
20761 let isRestrictNoSlot1Store = 1;
20762 let mayStore = 1;
20763 let opNewValue = 3;
20764 let Constraints = "$Rx32 = $Rx32in";
20765 }
20766 def S2_storerbnew_zomap : HInst<
20767 (outs),
20768 (ins IntRegs:$Rs32, IntRegs:$Nt8),
20769 "memb($Rs32) = $Nt8.new",
20770 tc_be9602ff, TypeMAPPING> {
20771 let isPseudo = 1;
20772 let isCodeGenOnly = 1;
20773 let opNewValue = 1;
20774 }
20775 def S2_storerbnewgp : HInst<
20776 (outs),
20777 (ins u32_0Imm:$Ii, IntRegs:$Nt8),
20778 "memb(gp+#$Ii) = $Nt8.new",
20779 tc_5bf126a6, TypeV2LDST>, Enc_ad1831, AddrModeRel {
20780 let Inst{12-11} = 0b00;
20781 let Inst{24-21} = 0b0101;
20782 let Inst{31-27} = 0b01001;
20783 let accessSize = ByteAccess;
20784 let isNVStore = 1;
20785 let isNewValue = 1;
20786 let isRestrictNoSlot1Store = 1;
20787 let mayStore = 1;
20788 let Uses = [GP];
20789 let BaseOpcode = "S2_storerbabs";
20790 let isPredicable = 1;
20791 let opExtendable = 0;
20792 let isExtentSigned = 0;
20793 let opExtentBits = 16;
20794 let opExtentAlign = 0;
20795 let opNewValue = 1;
20796 }
20797 def S2_storerd_io : HInst<
20798 (outs),
20799 (ins IntRegs:$Rs32, s29_3Imm:$Ii, DoubleRegs:$Rtt32),
20800 "memd($Rs32+#$Ii) = $Rtt32",
20801 tc_30b9bb4a, TypeST>, Enc_ce6828, AddrModeRel, PostInc_BaseImm {
20802 let Inst{24-21} = 0b1110;
20803 let Inst{31-27} = 0b10100;
20804 let addrMode = BaseImmOffset;
20805 let accessSize = DoubleWordAccess;
20806 let mayStore = 1;
20807 let CextOpcode = "S2_storerd";
20808 let InputType = "imm";
20809 let BaseOpcode = "S2_storerd_io";
20810 let isPredicable = 1;
20811 let isExtendable = 1;
20812 let opExtendable = 1;
20813 let isExtentSigned = 1;
20814 let opExtentBits = 14;
20815 let opExtentAlign = 3;
20816 }
20817 def S2_storerd_pbr : HInst<
20818 (outs IntRegs:$Rx32),
20819 (ins IntRegs:$Rx32in, ModRegs:$Mu2, DoubleRegs:$Rtt32),
20820 "memd($Rx32++$Mu2:brev) = $Rtt32",
20821 tc_da97ee82, TypeST>, Enc_928ca1 {
20822 let Inst{7-0} = 0b00000000;
20823 let Inst{31-21} = 0b10101111110;
20824 let addrMode = PostInc;
20825 let accessSize = DoubleWordAccess;
20826 let mayStore = 1;
20827 let Constraints = "$Rx32 = $Rx32in";
20828 }
20829 def S2_storerd_pci : HInst<
20830 (outs IntRegs:$Rx32),
20831 (ins IntRegs:$Rx32in, s4_3Imm:$Ii, ModRegs:$Mu2, DoubleRegs:$Rtt32),
20832 "memd($Rx32++#$Ii:circ($Mu2)) = $Rtt32",
20833 tc_e86aa961, TypeST>, Enc_395cc4 {
20834 let Inst{2-0} = 0b000;
20835 let Inst{7-7} = 0b0;
20836 let Inst{31-21} = 0b10101001110;
20837 let addrMode = PostInc;
20838 let accessSize = DoubleWordAccess;
20839 let mayStore = 1;
20840 let Uses = [CS];
20841 let Constraints = "$Rx32 = $Rx32in";
20842 }
20843 def S2_storerd_pcr : HInst<
20844 (outs IntRegs:$Rx32),
20845 (ins IntRegs:$Rx32in, ModRegs:$Mu2, DoubleRegs:$Rtt32),
20846 "memd($Rx32++I:circ($Mu2)) = $Rtt32",
20847 tc_da97ee82, TypeST>, Enc_928ca1 {
20848 let Inst{7-0} = 0b00000010;
20849 let Inst{31-21} = 0b10101001110;
20850 let addrMode = PostInc;
20851 let accessSize = DoubleWordAccess;
20852 let mayStore = 1;
20853 let Uses = [CS];
20854 let Constraints = "$Rx32 = $Rx32in";
20855 }
20856 def S2_storerd_pi : HInst<
20857 (outs IntRegs:$Rx32),
20858 (ins IntRegs:$Rx32in, s4_3Imm:$Ii, DoubleRegs:$Rtt32),
20859 "memd($Rx32++#$Ii) = $Rtt32",
20860 tc_da97ee82, TypeST>, Enc_85bf58, AddrModeRel, PostInc_BaseImm {
20861 let Inst{2-0} = 0b000;
20862 let Inst{7-7} = 0b0;
20863 let Inst{13-13} = 0b0;
20864 let Inst{31-21} = 0b10101011110;
20865 let addrMode = PostInc;
20866 let accessSize = DoubleWordAccess;
20867 let mayStore = 1;
20868 let CextOpcode = "S2_storerd";
20869 let BaseOpcode = "S2_storerd_pi";
20870 let isPredicable = 1;
20871 let Constraints = "$Rx32 = $Rx32in";
20872 }
20873 def S2_storerd_pr : HInst<
20874 (outs IntRegs:$Rx32),
20875 (ins IntRegs:$Rx32in, ModRegs:$Mu2, DoubleRegs:$Rtt32),
20876 "memd($Rx32++$Mu2) = $Rtt32",
20877 tc_da97ee82, TypeST>, Enc_928ca1 {
20878 let Inst{7-0} = 0b00000000;
20879 let Inst{31-21} = 0b10101101110;
20880 let addrMode = PostInc;
20881 let accessSize = DoubleWordAccess;
20882 let mayStore = 1;
20883 let Constraints = "$Rx32 = $Rx32in";
20884 }
20885 def S2_storerd_zomap : HInst<
20886 (outs),
20887 (ins IntRegs:$Rs32, DoubleRegs:$Rtt32),
20888 "memd($Rs32) = $Rtt32",
20889 tc_30b9bb4a, TypeMAPPING> {
20890 let isPseudo = 1;
20891 let isCodeGenOnly = 1;
20892 }
20893 def S2_storerdgp : HInst<
20894 (outs),
20895 (ins u29_3Imm:$Ii, DoubleRegs:$Rtt32),
20896 "memd(gp+#$Ii) = $Rtt32",
20897 tc_0371abea, TypeV2LDST>, Enc_5c124a, AddrModeRel {
20898 let Inst{24-21} = 0b0110;
20899 let Inst{31-27} = 0b01001;
20900 let accessSize = DoubleWordAccess;
20901 let mayStore = 1;
20902 let Uses = [GP];
20903 let BaseOpcode = "S2_storerdabs";
20904 let isPredicable = 1;
20905 let opExtendable = 0;
20906 let isExtentSigned = 0;
20907 let opExtentBits = 19;
20908 let opExtentAlign = 3;
20909 }
20910 def S2_storerf_io : HInst<
20911 (outs),
20912 (ins IntRegs:$Rs32, s31_1Imm:$Ii, IntRegs:$Rt32),
20913 "memh($Rs32+#$Ii) = $Rt32.h",
20914 tc_30b9bb4a, TypeST>, Enc_e957fb, AddrModeRel, PostInc_BaseImm {
20915 let Inst{24-21} = 0b1011;
20916 let Inst{31-27} = 0b10100;
20917 let addrMode = BaseImmOffset;
20918 let accessSize = HalfWordAccess;
20919 let mayStore = 1;
20920 let CextOpcode = "S2_storerf";
20921 let InputType = "imm";
20922 let BaseOpcode = "S2_storerf_io";
20923 let isPredicable = 1;
20924 let isExtendable = 1;
20925 let opExtendable = 1;
20926 let isExtentSigned = 1;
20927 let opExtentBits = 12;
20928 let opExtentAlign = 1;
20929 }
20930 def S2_storerf_pbr : HInst<
20931 (outs IntRegs:$Rx32),
20932 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
20933 "memh($Rx32++$Mu2:brev) = $Rt32.h",
20934 tc_da97ee82, TypeST>, Enc_d5c73f {
20935 let Inst{7-0} = 0b00000000;
20936 let Inst{31-21} = 0b10101111011;
20937 let addrMode = PostInc;
20938 let accessSize = HalfWordAccess;
20939 let mayStore = 1;
20940 let Constraints = "$Rx32 = $Rx32in";
20941 }
20942 def S2_storerf_pci : HInst<
20943 (outs IntRegs:$Rx32),
20944 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, ModRegs:$Mu2, IntRegs:$Rt32),
20945 "memh($Rx32++#$Ii:circ($Mu2)) = $Rt32.h",
20946 tc_e86aa961, TypeST>, Enc_935d9b {
20947 let Inst{2-0} = 0b000;
20948 let Inst{7-7} = 0b0;
20949 let Inst{31-21} = 0b10101001011;
20950 let addrMode = PostInc;
20951 let accessSize = HalfWordAccess;
20952 let mayStore = 1;
20953 let Uses = [CS];
20954 let Constraints = "$Rx32 = $Rx32in";
20955 }
20956 def S2_storerf_pcr : HInst<
20957 (outs IntRegs:$Rx32),
20958 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
20959 "memh($Rx32++I:circ($Mu2)) = $Rt32.h",
20960 tc_da97ee82, TypeST>, Enc_d5c73f {
20961 let Inst{7-0} = 0b00000010;
20962 let Inst{31-21} = 0b10101001011;
20963 let addrMode = PostInc;
20964 let accessSize = HalfWordAccess;
20965 let mayStore = 1;
20966 let Uses = [CS];
20967 let Constraints = "$Rx32 = $Rx32in";
20968 }
20969 def S2_storerf_pi : HInst<
20970 (outs IntRegs:$Rx32),
20971 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
20972 "memh($Rx32++#$Ii) = $Rt32.h",
20973 tc_da97ee82, TypeST>, Enc_052c7d, AddrModeRel, PostInc_BaseImm {
20974 let Inst{2-0} = 0b000;
20975 let Inst{7-7} = 0b0;
20976 let Inst{13-13} = 0b0;
20977 let Inst{31-21} = 0b10101011011;
20978 let addrMode = PostInc;
20979 let accessSize = HalfWordAccess;
20980 let mayStore = 1;
20981 let CextOpcode = "S2_storerf";
20982 let BaseOpcode = "S2_storerf_pi";
20983 let isPredicable = 1;
20984 let Constraints = "$Rx32 = $Rx32in";
20985 }
20986 def S2_storerf_pr : HInst<
20987 (outs IntRegs:$Rx32),
20988 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
20989 "memh($Rx32++$Mu2) = $Rt32.h",
20990 tc_da97ee82, TypeST>, Enc_d5c73f {
20991 let Inst{7-0} = 0b00000000;
20992 let Inst{31-21} = 0b10101101011;
20993 let addrMode = PostInc;
20994 let accessSize = HalfWordAccess;
20995 let mayStore = 1;
20996 let Constraints = "$Rx32 = $Rx32in";
20997 }
20998 def S2_storerf_zomap : HInst<
20999 (outs),
21000 (ins IntRegs:$Rs32, IntRegs:$Rt32),
21001 "memh($Rs32) = $Rt32.h",
21002 tc_30b9bb4a, TypeMAPPING> {
21003 let isPseudo = 1;
21004 let isCodeGenOnly = 1;
21005 }
21006 def S2_storerfgp : HInst<
21007 (outs),
21008 (ins u31_1Imm:$Ii, IntRegs:$Rt32),
21009 "memh(gp+#$Ii) = $Rt32.h",
21010 tc_0371abea, TypeV2LDST>, Enc_fda92c, AddrModeRel {
21011 let Inst{24-21} = 0b0011;
21012 let Inst{31-27} = 0b01001;
21013 let accessSize = HalfWordAccess;
21014 let mayStore = 1;
21015 let Uses = [GP];
21016 let BaseOpcode = "S2_storerfabs";
21017 let isPredicable = 1;
21018 let opExtendable = 0;
21019 let isExtentSigned = 0;
21020 let opExtentBits = 17;
21021 let opExtentAlign = 1;
21022 }
21023 def S2_storerh_io : HInst<
21024 (outs),
21025 (ins IntRegs:$Rs32, s31_1Imm:$Ii, IntRegs:$Rt32),
21026 "memh($Rs32+#$Ii) = $Rt32",
21027 tc_30b9bb4a, TypeST>, Enc_e957fb, AddrModeRel, PostInc_BaseImm {
21028 let Inst{24-21} = 0b1010;
21029 let Inst{31-27} = 0b10100;
21030 let addrMode = BaseImmOffset;
21031 let accessSize = HalfWordAccess;
21032 let mayStore = 1;
21033 let CextOpcode = "S2_storerh";
21034 let InputType = "imm";
21035 let BaseOpcode = "S2_storerh_io";
21036 let isPredicable = 1;
21037 let isNVStorable = 1;
21038 let isExtendable = 1;
21039 let opExtendable = 1;
21040 let isExtentSigned = 1;
21041 let opExtentBits = 12;
21042 let opExtentAlign = 1;
21043 }
21044 def S2_storerh_pbr : HInst<
21045 (outs IntRegs:$Rx32),
21046 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
21047 "memh($Rx32++$Mu2:brev) = $Rt32",
21048 tc_da97ee82, TypeST>, Enc_d5c73f, AddrModeRel {
21049 let Inst{7-0} = 0b00000000;
21050 let Inst{31-21} = 0b10101111010;
21051 let addrMode = PostInc;
21052 let accessSize = HalfWordAccess;
21053 let mayStore = 1;
21054 let BaseOpcode = "S2_storerh_pbr";
21055 let isNVStorable = 1;
21056 let Constraints = "$Rx32 = $Rx32in";
21057 }
21058 def S2_storerh_pci : HInst<
21059 (outs IntRegs:$Rx32),
21060 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, ModRegs:$Mu2, IntRegs:$Rt32),
21061 "memh($Rx32++#$Ii:circ($Mu2)) = $Rt32",
21062 tc_e86aa961, TypeST>, Enc_935d9b, AddrModeRel {
21063 let Inst{2-0} = 0b000;
21064 let Inst{7-7} = 0b0;
21065 let Inst{31-21} = 0b10101001010;
21066 let addrMode = PostInc;
21067 let accessSize = HalfWordAccess;
21068 let mayStore = 1;
21069 let Uses = [CS];
21070 let BaseOpcode = "S2_storerh_pci";
21071 let isNVStorable = 1;
21072 let Constraints = "$Rx32 = $Rx32in";
21073 }
21074 def S2_storerh_pcr : HInst<
21075 (outs IntRegs:$Rx32),
21076 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
21077 "memh($Rx32++I:circ($Mu2)) = $Rt32",
21078 tc_da97ee82, TypeST>, Enc_d5c73f, AddrModeRel {
21079 let Inst{7-0} = 0b00000010;
21080 let Inst{31-21} = 0b10101001010;
21081 let addrMode = PostInc;
21082 let accessSize = HalfWordAccess;
21083 let mayStore = 1;
21084 let Uses = [CS];
21085 let BaseOpcode = "S2_storerh_pcr";
21086 let isNVStorable = 1;
21087 let Constraints = "$Rx32 = $Rx32in";
21088 }
21089 def S2_storerh_pi : HInst<
21090 (outs IntRegs:$Rx32),
21091 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Rt32),
21092 "memh($Rx32++#$Ii) = $Rt32",
21093 tc_da97ee82, TypeST>, Enc_052c7d, AddrModeRel, PostInc_BaseImm {
21094 let Inst{2-0} = 0b000;
21095 let Inst{7-7} = 0b0;
21096 let Inst{13-13} = 0b0;
21097 let Inst{31-21} = 0b10101011010;
21098 let addrMode = PostInc;
21099 let accessSize = HalfWordAccess;
21100 let mayStore = 1;
21101 let CextOpcode = "S2_storerh";
21102 let BaseOpcode = "S2_storerh_pi";
21103 let isPredicable = 1;
21104 let isNVStorable = 1;
21105 let Constraints = "$Rx32 = $Rx32in";
21106 }
21107 def S2_storerh_pr : HInst<
21108 (outs IntRegs:$Rx32),
21109 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
21110 "memh($Rx32++$Mu2) = $Rt32",
21111 tc_da97ee82, TypeST>, Enc_d5c73f {
21112 let Inst{7-0} = 0b00000000;
21113 let Inst{31-21} = 0b10101101010;
21114 let addrMode = PostInc;
21115 let accessSize = HalfWordAccess;
21116 let mayStore = 1;
21117 let isNVStorable = 1;
21118 let Constraints = "$Rx32 = $Rx32in";
21119 }
21120 def S2_storerh_zomap : HInst<
21121 (outs),
21122 (ins IntRegs:$Rs32, IntRegs:$Rt32),
21123 "memh($Rs32) = $Rt32",
21124 tc_30b9bb4a, TypeMAPPING> {
21125 let isPseudo = 1;
21126 let isCodeGenOnly = 1;
21127 }
21128 def S2_storerhgp : HInst<
21129 (outs),
21130 (ins u31_1Imm:$Ii, IntRegs:$Rt32),
21131 "memh(gp+#$Ii) = $Rt32",
21132 tc_0371abea, TypeV2LDST>, Enc_fda92c, AddrModeRel {
21133 let Inst{24-21} = 0b0010;
21134 let Inst{31-27} = 0b01001;
21135 let accessSize = HalfWordAccess;
21136 let mayStore = 1;
21137 let Uses = [GP];
21138 let BaseOpcode = "S2_storerhabs";
21139 let isPredicable = 1;
21140 let isNVStorable = 1;
21141 let opExtendable = 0;
21142 let isExtentSigned = 0;
21143 let opExtentBits = 17;
21144 let opExtentAlign = 1;
21145 }
21146 def S2_storerhnew_io : HInst<
21147 (outs),
21148 (ins IntRegs:$Rs32, s31_1Imm:$Ii, IntRegs:$Nt8),
21149 "memh($Rs32+#$Ii) = $Nt8.new",
21150 tc_be9602ff, TypeST>, Enc_0d8870, AddrModeRel {
21151 let Inst{12-11} = 0b01;
21152 let Inst{24-21} = 0b1101;
21153 let Inst{31-27} = 0b10100;
21154 let addrMode = BaseImmOffset;
21155 let accessSize = HalfWordAccess;
21156 let isNVStore = 1;
21157 let isNewValue = 1;
21158 let isRestrictNoSlot1Store = 1;
21159 let mayStore = 1;
21160 let CextOpcode = "S2_storerh";
21161 let InputType = "imm";
21162 let BaseOpcode = "S2_storerh_io";
21163 let isPredicable = 1;
21164 let isExtendable = 1;
21165 let opExtendable = 1;
21166 let isExtentSigned = 1;
21167 let opExtentBits = 12;
21168 let opExtentAlign = 1;
21169 let opNewValue = 2;
21170 }
21171 def S2_storerhnew_pbr : HInst<
21172 (outs IntRegs:$Rx32),
21173 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
21174 "memh($Rx32++$Mu2:brev) = $Nt8.new",
21175 tc_c79a189f, TypeST>, Enc_8dbe85, AddrModeRel {
21176 let Inst{7-0} = 0b00000000;
21177 let Inst{12-11} = 0b01;
21178 let Inst{31-21} = 0b10101111101;
21179 let addrMode = PostInc;
21180 let accessSize = HalfWordAccess;
21181 let isNVStore = 1;
21182 let isNewValue = 1;
21183 let isRestrictNoSlot1Store = 1;
21184 let mayStore = 1;
21185 let BaseOpcode = "S2_storerh_pbr";
21186 let opNewValue = 3;
21187 let Constraints = "$Rx32 = $Rx32in";
21188 }
21189 def S2_storerhnew_pci : HInst<
21190 (outs IntRegs:$Rx32),
21191 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, ModRegs:$Mu2, IntRegs:$Nt8),
21192 "memh($Rx32++#$Ii:circ($Mu2)) = $Nt8.new",
21193 tc_d5c0729a, TypeST>, Enc_91b9fe, AddrModeRel {
21194 let Inst{2-0} = 0b000;
21195 let Inst{7-7} = 0b0;
21196 let Inst{12-11} = 0b01;
21197 let Inst{31-21} = 0b10101001101;
21198 let addrMode = PostInc;
21199 let accessSize = HalfWordAccess;
21200 let isNVStore = 1;
21201 let isNewValue = 1;
21202 let isRestrictNoSlot1Store = 1;
21203 let mayStore = 1;
21204 let Uses = [CS];
21205 let BaseOpcode = "S2_storerh_pci";
21206 let opNewValue = 4;
21207 let Constraints = "$Rx32 = $Rx32in";
21208 }
21209 def S2_storerhnew_pcr : HInst<
21210 (outs IntRegs:$Rx32),
21211 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
21212 "memh($Rx32++I:circ($Mu2)) = $Nt8.new",
21213 tc_c79a189f, TypeST>, Enc_8dbe85, AddrModeRel {
21214 let Inst{7-0} = 0b00000010;
21215 let Inst{12-11} = 0b01;
21216 let Inst{31-21} = 0b10101001101;
21217 let addrMode = PostInc;
21218 let accessSize = HalfWordAccess;
21219 let isNVStore = 1;
21220 let isNewValue = 1;
21221 let isRestrictNoSlot1Store = 1;
21222 let mayStore = 1;
21223 let Uses = [CS];
21224 let BaseOpcode = "S2_storerh_pcr";
21225 let opNewValue = 3;
21226 let Constraints = "$Rx32 = $Rx32in";
21227 }
21228 def S2_storerhnew_pi : HInst<
21229 (outs IntRegs:$Rx32),
21230 (ins IntRegs:$Rx32in, s4_1Imm:$Ii, IntRegs:$Nt8),
21231 "memh($Rx32++#$Ii) = $Nt8.new",
21232 tc_c79a189f, TypeST>, Enc_e26546, AddrModeRel {
21233 let Inst{2-0} = 0b000;
21234 let Inst{7-7} = 0b0;
21235 let Inst{13-11} = 0b001;
21236 let Inst{31-21} = 0b10101011101;
21237 let addrMode = PostInc;
21238 let accessSize = HalfWordAccess;
21239 let isNVStore = 1;
21240 let isNewValue = 1;
21241 let isRestrictNoSlot1Store = 1;
21242 let mayStore = 1;
21243 let BaseOpcode = "S2_storerh_pi";
21244 let isNVStorable = 1;
21245 let isPredicable = 1;
21246 let opNewValue = 3;
21247 let Constraints = "$Rx32 = $Rx32in";
21248 }
21249 def S2_storerhnew_pr : HInst<
21250 (outs IntRegs:$Rx32),
21251 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
21252 "memh($Rx32++$Mu2) = $Nt8.new",
21253 tc_c79a189f, TypeST>, Enc_8dbe85 {
21254 let Inst{7-0} = 0b00000000;
21255 let Inst{12-11} = 0b01;
21256 let Inst{31-21} = 0b10101101101;
21257 let addrMode = PostInc;
21258 let accessSize = HalfWordAccess;
21259 let isNVStore = 1;
21260 let isNewValue = 1;
21261 let isRestrictNoSlot1Store = 1;
21262 let mayStore = 1;
21263 let opNewValue = 3;
21264 let Constraints = "$Rx32 = $Rx32in";
21265 }
21266 def S2_storerhnew_zomap : HInst<
21267 (outs),
21268 (ins IntRegs:$Rs32, IntRegs:$Nt8),
21269 "memh($Rs32) = $Nt8.new",
21270 tc_be9602ff, TypeMAPPING> {
21271 let isPseudo = 1;
21272 let isCodeGenOnly = 1;
21273 let opNewValue = 1;
21274 }
21275 def S2_storerhnewgp : HInst<
21276 (outs),
21277 (ins u31_1Imm:$Ii, IntRegs:$Nt8),
21278 "memh(gp+#$Ii) = $Nt8.new",
21279 tc_5bf126a6, TypeV2LDST>, Enc_bc03e5, AddrModeRel {
21280 let Inst{12-11} = 0b01;
21281 let Inst{24-21} = 0b0101;
21282 let Inst{31-27} = 0b01001;
21283 let accessSize = HalfWordAccess;
21284 let isNVStore = 1;
21285 let isNewValue = 1;
21286 let isRestrictNoSlot1Store = 1;
21287 let mayStore = 1;
21288 let Uses = [GP];
21289 let BaseOpcode = "S2_storerhabs";
21290 let isPredicable = 1;
21291 let opExtendable = 0;
21292 let isExtentSigned = 0;
21293 let opExtentBits = 17;
21294 let opExtentAlign = 1;
21295 let opNewValue = 1;
21296 }
21297 def S2_storeri_io : HInst<
21298 (outs),
21299 (ins IntRegs:$Rs32, s30_2Imm:$Ii, IntRegs:$Rt32),
21300 "memw($Rs32+#$Ii) = $Rt32",
21301 tc_30b9bb4a, TypeST>, Enc_143445, AddrModeRel, PostInc_BaseImm {
21302 let Inst{24-21} = 0b1100;
21303 let Inst{31-27} = 0b10100;
21304 let addrMode = BaseImmOffset;
21305 let accessSize = WordAccess;
21306 let mayStore = 1;
21307 let CextOpcode = "S2_storeri";
21308 let InputType = "imm";
21309 let BaseOpcode = "S2_storeri_io";
21310 let isPredicable = 1;
21311 let isNVStorable = 1;
21312 let isExtendable = 1;
21313 let opExtendable = 1;
21314 let isExtentSigned = 1;
21315 let opExtentBits = 13;
21316 let opExtentAlign = 2;
21317 }
21318 def S2_storeri_pbr : HInst<
21319 (outs IntRegs:$Rx32),
21320 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
21321 "memw($Rx32++$Mu2:brev) = $Rt32",
21322 tc_da97ee82, TypeST>, Enc_d5c73f, AddrModeRel {
21323 let Inst{7-0} = 0b00000000;
21324 let Inst{31-21} = 0b10101111100;
21325 let addrMode = PostInc;
21326 let accessSize = WordAccess;
21327 let mayStore = 1;
21328 let BaseOpcode = "S2_storeri_pbr";
21329 let isNVStorable = 1;
21330 let Constraints = "$Rx32 = $Rx32in";
21331 }
21332 def S2_storeri_pci : HInst<
21333 (outs IntRegs:$Rx32),
21334 (ins IntRegs:$Rx32in, s4_2Imm:$Ii, ModRegs:$Mu2, IntRegs:$Rt32),
21335 "memw($Rx32++#$Ii:circ($Mu2)) = $Rt32",
21336 tc_e86aa961, TypeST>, Enc_79b8c8, AddrModeRel {
21337 let Inst{2-0} = 0b000;
21338 let Inst{7-7} = 0b0;
21339 let Inst{31-21} = 0b10101001100;
21340 let addrMode = PostInc;
21341 let accessSize = WordAccess;
21342 let mayStore = 1;
21343 let Uses = [CS];
21344 let BaseOpcode = "S2_storeri_pci";
21345 let isNVStorable = 1;
21346 let Constraints = "$Rx32 = $Rx32in";
21347 }
21348 def S2_storeri_pcr : HInst<
21349 (outs IntRegs:$Rx32),
21350 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
21351 "memw($Rx32++I:circ($Mu2)) = $Rt32",
21352 tc_da97ee82, TypeST>, Enc_d5c73f, AddrModeRel {
21353 let Inst{7-0} = 0b00000010;
21354 let Inst{31-21} = 0b10101001100;
21355 let addrMode = PostInc;
21356 let accessSize = WordAccess;
21357 let mayStore = 1;
21358 let Uses = [CS];
21359 let BaseOpcode = "S2_storeri_pcr";
21360 let isNVStorable = 1;
21361 let Constraints = "$Rx32 = $Rx32in";
21362 }
21363 def S2_storeri_pi : HInst<
21364 (outs IntRegs:$Rx32),
21365 (ins IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Rt32),
21366 "memw($Rx32++#$Ii) = $Rt32",
21367 tc_da97ee82, TypeST>, Enc_db40cd, AddrModeRel, PostInc_BaseImm {
21368 let Inst{2-0} = 0b000;
21369 let Inst{7-7} = 0b0;
21370 let Inst{13-13} = 0b0;
21371 let Inst{31-21} = 0b10101011100;
21372 let addrMode = PostInc;
21373 let accessSize = WordAccess;
21374 let mayStore = 1;
21375 let CextOpcode = "S2_storeri";
21376 let BaseOpcode = "S2_storeri_pi";
21377 let isPredicable = 1;
21378 let isNVStorable = 1;
21379 let Constraints = "$Rx32 = $Rx32in";
21380 }
21381 def S2_storeri_pr : HInst<
21382 (outs IntRegs:$Rx32),
21383 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Rt32),
21384 "memw($Rx32++$Mu2) = $Rt32",
21385 tc_da97ee82, TypeST>, Enc_d5c73f {
21386 let Inst{7-0} = 0b00000000;
21387 let Inst{31-21} = 0b10101101100;
21388 let addrMode = PostInc;
21389 let accessSize = WordAccess;
21390 let mayStore = 1;
21391 let isNVStorable = 1;
21392 let Constraints = "$Rx32 = $Rx32in";
21393 }
21394 def S2_storeri_zomap : HInst<
21395 (outs),
21396 (ins IntRegs:$Rs32, IntRegs:$Rt32),
21397 "memw($Rs32) = $Rt32",
21398 tc_30b9bb4a, TypeMAPPING> {
21399 let isPseudo = 1;
21400 let isCodeGenOnly = 1;
21401 }
21402 def S2_storerigp : HInst<
21403 (outs),
21404 (ins u30_2Imm:$Ii, IntRegs:$Rt32),
21405 "memw(gp+#$Ii) = $Rt32",
21406 tc_0371abea, TypeV2LDST>, Enc_541f26, AddrModeRel {
21407 let Inst{24-21} = 0b0100;
21408 let Inst{31-27} = 0b01001;
21409 let accessSize = WordAccess;
21410 let mayStore = 1;
21411 let Uses = [GP];
21412 let BaseOpcode = "S2_storeriabs";
21413 let isPredicable = 1;
21414 let isNVStorable = 1;
21415 let opExtendable = 0;
21416 let isExtentSigned = 0;
21417 let opExtentBits = 18;
21418 let opExtentAlign = 2;
21419 }
21420 def S2_storerinew_io : HInst<
21421 (outs),
21422 (ins IntRegs:$Rs32, s30_2Imm:$Ii, IntRegs:$Nt8),
21423 "memw($Rs32+#$Ii) = $Nt8.new",
21424 tc_be9602ff, TypeST>, Enc_690862, AddrModeRel {
21425 let Inst{12-11} = 0b10;
21426 let Inst{24-21} = 0b1101;
21427 let Inst{31-27} = 0b10100;
21428 let addrMode = BaseImmOffset;
21429 let accessSize = WordAccess;
21430 let isNVStore = 1;
21431 let isNewValue = 1;
21432 let isRestrictNoSlot1Store = 1;
21433 let mayStore = 1;
21434 let CextOpcode = "S2_storeri";
21435 let InputType = "imm";
21436 let BaseOpcode = "S2_storeri_io";
21437 let isPredicable = 1;
21438 let isExtendable = 1;
21439 let opExtendable = 1;
21440 let isExtentSigned = 1;
21441 let opExtentBits = 13;
21442 let opExtentAlign = 2;
21443 let opNewValue = 2;
21444 }
21445 def S2_storerinew_pbr : HInst<
21446 (outs IntRegs:$Rx32),
21447 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
21448 "memw($Rx32++$Mu2:brev) = $Nt8.new",
21449 tc_c79a189f, TypeST>, Enc_8dbe85, AddrModeRel {
21450 let Inst{7-0} = 0b00000000;
21451 let Inst{12-11} = 0b10;
21452 let Inst{31-21} = 0b10101111101;
21453 let addrMode = PostInc;
21454 let accessSize = WordAccess;
21455 let isNVStore = 1;
21456 let isNewValue = 1;
21457 let isRestrictNoSlot1Store = 1;
21458 let mayStore = 1;
21459 let BaseOpcode = "S2_storeri_pbr";
21460 let opNewValue = 3;
21461 let Constraints = "$Rx32 = $Rx32in";
21462 }
21463 def S2_storerinew_pci : HInst<
21464 (outs IntRegs:$Rx32),
21465 (ins IntRegs:$Rx32in, s4_2Imm:$Ii, ModRegs:$Mu2, IntRegs:$Nt8),
21466 "memw($Rx32++#$Ii:circ($Mu2)) = $Nt8.new",
21467 tc_d5c0729a, TypeST>, Enc_3f97c8, AddrModeRel {
21468 let Inst{2-0} = 0b000;
21469 let Inst{7-7} = 0b0;
21470 let Inst{12-11} = 0b10;
21471 let Inst{31-21} = 0b10101001101;
21472 let addrMode = PostInc;
21473 let accessSize = WordAccess;
21474 let isNVStore = 1;
21475 let isNewValue = 1;
21476 let isRestrictNoSlot1Store = 1;
21477 let mayStore = 1;
21478 let Uses = [CS];
21479 let BaseOpcode = "S2_storeri_pci";
21480 let opNewValue = 4;
21481 let Constraints = "$Rx32 = $Rx32in";
21482 }
21483 def S2_storerinew_pcr : HInst<
21484 (outs IntRegs:$Rx32),
21485 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
21486 "memw($Rx32++I:circ($Mu2)) = $Nt8.new",
21487 tc_c79a189f, TypeST>, Enc_8dbe85, AddrModeRel {
21488 let Inst{7-0} = 0b00000010;
21489 let Inst{12-11} = 0b10;
21490 let Inst{31-21} = 0b10101001101;
21491 let addrMode = PostInc;
21492 let accessSize = WordAccess;
21493 let isNVStore = 1;
21494 let isNewValue = 1;
21495 let isRestrictNoSlot1Store = 1;
21496 let mayStore = 1;
21497 let Uses = [CS];
21498 let BaseOpcode = "S2_storeri_pcr";
21499 let opNewValue = 3;
21500 let Constraints = "$Rx32 = $Rx32in";
21501 }
21502 def S2_storerinew_pi : HInst<
21503 (outs IntRegs:$Rx32),
21504 (ins IntRegs:$Rx32in, s4_2Imm:$Ii, IntRegs:$Nt8),
21505 "memw($Rx32++#$Ii) = $Nt8.new",
21506 tc_c79a189f, TypeST>, Enc_223005, AddrModeRel {
21507 let Inst{2-0} = 0b000;
21508 let Inst{7-7} = 0b0;
21509 let Inst{13-11} = 0b010;
21510 let Inst{31-21} = 0b10101011101;
21511 let addrMode = PostInc;
21512 let accessSize = WordAccess;
21513 let isNVStore = 1;
21514 let isNewValue = 1;
21515 let isRestrictNoSlot1Store = 1;
21516 let mayStore = 1;
21517 let BaseOpcode = "S2_storeri_pi";
21518 let isPredicable = 1;
21519 let opNewValue = 3;
21520 let Constraints = "$Rx32 = $Rx32in";
21521 }
21522 def S2_storerinew_pr : HInst<
21523 (outs IntRegs:$Rx32),
21524 (ins IntRegs:$Rx32in, ModRegs:$Mu2, IntRegs:$Nt8),
21525 "memw($Rx32++$Mu2) = $Nt8.new",
21526 tc_c79a189f, TypeST>, Enc_8dbe85 {
21527 let Inst{7-0} = 0b00000000;
21528 let Inst{12-11} = 0b10;
21529 let Inst{31-21} = 0b10101101101;
21530 let addrMode = PostInc;
21531 let accessSize = WordAccess;
21532 let isNVStore = 1;
21533 let isNewValue = 1;
21534 let isRestrictNoSlot1Store = 1;
21535 let mayStore = 1;
21536 let opNewValue = 3;
21537 let Constraints = "$Rx32 = $Rx32in";
21538 }
21539 def S2_storerinew_zomap : HInst<
21540 (outs),
21541 (ins IntRegs:$Rs32, IntRegs:$Nt8),
21542 "memw($Rs32) = $Nt8.new",
21543 tc_be9602ff, TypeMAPPING> {
21544 let isPseudo = 1;
21545 let isCodeGenOnly = 1;
21546 let opNewValue = 1;
21547 }
21548 def S2_storerinewgp : HInst<
21549 (outs),
21550 (ins u30_2Imm:$Ii, IntRegs:$Nt8),
21551 "memw(gp+#$Ii) = $Nt8.new",
21552 tc_5bf126a6, TypeV2LDST>, Enc_78cbf0, AddrModeRel {
21553 let Inst{12-11} = 0b10;
21554 let Inst{24-21} = 0b0101;
21555 let Inst{31-27} = 0b01001;
21556 let accessSize = WordAccess;
21557 let isNVStore = 1;
21558 let isNewValue = 1;
21559 let isRestrictNoSlot1Store = 1;
21560 let mayStore = 1;
21561 let Uses = [GP];
21562 let BaseOpcode = "S2_storeriabs";
21563 let isPredicable = 1;
21564 let opExtendable = 0;
21565 let isExtentSigned = 0;
21566 let opExtentBits = 18;
21567 let opExtentAlign = 2;
21568 let opNewValue = 1;
21569 }
21570 def S2_storew_locked : HInst<
21571 (outs PredRegs:$Pd4),
21572 (ins IntRegs:$Rs32, IntRegs:$Rt32),
21573 "memw_locked($Rs32,$Pd4) = $Rt32",
21574 tc_5abb5e3f, TypeST>, Enc_c2b48e {
21575 let Inst{7-2} = 0b000000;
21576 let Inst{13-13} = 0b0;
21577 let Inst{31-21} = 0b10100000101;
21578 let accessSize = WordAccess;
21579 let isPredicateLate = 1;
21580 let isSoloAX = 1;
21581 let mayStore = 1;
21582 }
21583 def S2_svsathb : HInst<
21584 (outs IntRegs:$Rd32),
21585 (ins IntRegs:$Rs32),
21586 "$Rd32 = vsathb($Rs32)",
21587 tc_0ae0825c, TypeS_2op>, Enc_5e2823 {
21588 let Inst{13-5} = 0b000000000;
21589 let Inst{31-21} = 0b10001100100;
21590 let hasNewValue = 1;
21591 let opNewValue = 0;
21592 let Defs = [USR_OVF];
21593 }
21594 def S2_svsathub : HInst<
21595 (outs IntRegs:$Rd32),
21596 (ins IntRegs:$Rs32),
21597 "$Rd32 = vsathub($Rs32)",
21598 tc_0ae0825c, TypeS_2op>, Enc_5e2823 {
21599 let Inst{13-5} = 0b000000010;
21600 let Inst{31-21} = 0b10001100100;
21601 let hasNewValue = 1;
21602 let opNewValue = 0;
21603 let Defs = [USR_OVF];
21604 }
21605 def S2_tableidxb : HInst<
21606 (outs IntRegs:$Rx32),
21607 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u4_0Imm:$Ii, s6_0Imm:$II),
21608 "$Rx32 = tableidxb($Rs32,#$Ii,#$II):raw",
21609 tc_bfec0f01, TypeS_2op>, Enc_cd82bc {
21610 let Inst{31-22} = 0b1000011100;
21611 let hasNewValue = 1;
21612 let opNewValue = 0;
21613 let prefersSlot3 = 1;
21614 let Constraints = "$Rx32 = $Rx32in";
21615 }
21616 def S2_tableidxb_goodsyntax : HInst<
21617 (outs IntRegs:$Rx32),
21618 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u4_0Imm:$Ii, u5_0Imm:$II),
21619 "$Rx32 = tableidxb($Rs32,#$Ii,#$II)",
21620 tc_bfec0f01, TypeS_2op> {
21621 let hasNewValue = 1;
21622 let opNewValue = 0;
21623 let isPseudo = 1;
21624 let isCodeGenOnly = 1;
21625 let Constraints = "$Rx32 = $Rx32in";
21626 }
21627 def S2_tableidxd : HInst<
21628 (outs IntRegs:$Rx32),
21629 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u4_0Imm:$Ii, s6_0Imm:$II),
21630 "$Rx32 = tableidxd($Rs32,#$Ii,#$II):raw",
21631 tc_bfec0f01, TypeS_2op>, Enc_cd82bc {
21632 let Inst{31-22} = 0b1000011111;
21633 let hasNewValue = 1;
21634 let opNewValue = 0;
21635 let prefersSlot3 = 1;
21636 let Constraints = "$Rx32 = $Rx32in";
21637 }
21638 def S2_tableidxd_goodsyntax : HInst<
21639 (outs IntRegs:$Rx32),
21640 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u4_0Imm:$Ii, u5_0Imm:$II),
21641 "$Rx32 = tableidxd($Rs32,#$Ii,#$II)",
21642 tc_bfec0f01, TypeS_2op> {
21643 let hasNewValue = 1;
21644 let opNewValue = 0;
21645 let isPseudo = 1;
21646 let Constraints = "$Rx32 = $Rx32in";
21647 }
21648 def S2_tableidxh : HInst<
21649 (outs IntRegs:$Rx32),
21650 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u4_0Imm:$Ii, s6_0Imm:$II),
21651 "$Rx32 = tableidxh($Rs32,#$Ii,#$II):raw",
21652 tc_bfec0f01, TypeS_2op>, Enc_cd82bc {
21653 let Inst{31-22} = 0b1000011101;
21654 let hasNewValue = 1;
21655 let opNewValue = 0;
21656 let prefersSlot3 = 1;
21657 let Constraints = "$Rx32 = $Rx32in";
21658 }
21659 def S2_tableidxh_goodsyntax : HInst<
21660 (outs IntRegs:$Rx32),
21661 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u4_0Imm:$Ii, u5_0Imm:$II),
21662 "$Rx32 = tableidxh($Rs32,#$Ii,#$II)",
21663 tc_bfec0f01, TypeS_2op> {
21664 let hasNewValue = 1;
21665 let opNewValue = 0;
21666 let isPseudo = 1;
21667 let Constraints = "$Rx32 = $Rx32in";
21668 }
21669 def S2_tableidxw : HInst<
21670 (outs IntRegs:$Rx32),
21671 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u4_0Imm:$Ii, s6_0Imm:$II),
21672 "$Rx32 = tableidxw($Rs32,#$Ii,#$II):raw",
21673 tc_bfec0f01, TypeS_2op>, Enc_cd82bc {
21674 let Inst{31-22} = 0b1000011110;
21675 let hasNewValue = 1;
21676 let opNewValue = 0;
21677 let prefersSlot3 = 1;
21678 let Constraints = "$Rx32 = $Rx32in";
21679 }
21680 def S2_tableidxw_goodsyntax : HInst<
21681 (outs IntRegs:$Rx32),
21682 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u4_0Imm:$Ii, u5_0Imm:$II),
21683 "$Rx32 = tableidxw($Rs32,#$Ii,#$II)",
21684 tc_bfec0f01, TypeS_2op> {
21685 let hasNewValue = 1;
21686 let opNewValue = 0;
21687 let isPseudo = 1;
21688 let Constraints = "$Rx32 = $Rx32in";
21689 }
21690 def S2_togglebit_i : HInst<
21691 (outs IntRegs:$Rd32),
21692 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
21693 "$Rd32 = togglebit($Rs32,#$Ii)",
21694 tc_946df596, TypeS_2op>, Enc_a05677 {
21695 let Inst{7-5} = 0b010;
21696 let Inst{13-13} = 0b0;
21697 let Inst{31-21} = 0b10001100110;
21698 let hasNewValue = 1;
21699 let opNewValue = 0;
21700 }
21701 def S2_togglebit_r : HInst<
21702 (outs IntRegs:$Rd32),
21703 (ins IntRegs:$Rs32, IntRegs:$Rt32),
21704 "$Rd32 = togglebit($Rs32,$Rt32)",
21705 tc_946df596, TypeS_3op>, Enc_5ab2be {
21706 let Inst{7-5} = 0b100;
21707 let Inst{13-13} = 0b0;
21708 let Inst{31-21} = 0b11000110100;
21709 let hasNewValue = 1;
21710 let opNewValue = 0;
21711 }
21712 def S2_tstbit_i : HInst<
21713 (outs PredRegs:$Pd4),
21714 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
21715 "$Pd4 = tstbit($Rs32,#$Ii)",
21716 tc_643b4717, TypeS_2op>, Enc_83ee64 {
21717 let Inst{7-2} = 0b000000;
21718 let Inst{13-13} = 0b0;
21719 let Inst{31-21} = 0b10000101000;
21720 }
21721 def S2_tstbit_r : HInst<
21722 (outs PredRegs:$Pd4),
21723 (ins IntRegs:$Rs32, IntRegs:$Rt32),
21724 "$Pd4 = tstbit($Rs32,$Rt32)",
21725 tc_85d5d03f, TypeS_3op>, Enc_c2b48e {
21726 let Inst{7-2} = 0b000000;
21727 let Inst{13-13} = 0b0;
21728 let Inst{31-21} = 0b11000111000;
21729 }
21730 def S2_valignib : HInst<
21731 (outs DoubleRegs:$Rdd32),
21732 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32, u3_0Imm:$Ii),
21733 "$Rdd32 = valignb($Rtt32,$Rss32,#$Ii)",
21734 tc_b4b5c03a, TypeS_3op>, Enc_729ff7 {
21735 let Inst{13-13} = 0b0;
21736 let Inst{31-21} = 0b11000000000;
21737 }
21738 def S2_valignrb : HInst<
21739 (outs DoubleRegs:$Rdd32),
21740 (ins DoubleRegs:$Rtt32, DoubleRegs:$Rss32, PredRegs:$Pu4),
21741 "$Rdd32 = valignb($Rtt32,$Rss32,$Pu4)",
21742 tc_b4b5c03a, TypeS_3op>, Enc_8c6530 {
21743 let Inst{7-7} = 0b0;
21744 let Inst{13-13} = 0b0;
21745 let Inst{31-21} = 0b11000010000;
21746 }
21747 def S2_vcnegh : HInst<
21748 (outs DoubleRegs:$Rdd32),
21749 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
21750 "$Rdd32 = vcnegh($Rss32,$Rt32)",
21751 tc_779080bf, TypeS_3op>, Enc_927852 {
21752 let Inst{7-5} = 0b010;
21753 let Inst{13-13} = 0b0;
21754 let Inst{31-21} = 0b11000011110;
21755 let prefersSlot3 = 1;
21756 let Defs = [USR_OVF];
21757 }
21758 def S2_vcrotate : HInst<
21759 (outs DoubleRegs:$Rdd32),
21760 (ins DoubleRegs:$Rss32, IntRegs:$Rt32),
21761 "$Rdd32 = vcrotate($Rss32,$Rt32)",
21762 tc_002cb246, TypeS_3op>, Enc_927852 {
21763 let Inst{7-5} = 0b000;
21764 let Inst{13-13} = 0b0;
21765 let Inst{31-21} = 0b11000011110;
21766 let prefersSlot3 = 1;
21767 let Defs = [USR_OVF];
21768 }
21769 def S2_vrcnegh : HInst<
21770 (outs DoubleRegs:$Rxx32),
21771 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32),
21772 "$Rxx32 += vrcnegh($Rss32,$Rt32)",
21773 tc_d773585a, TypeS_3op>, Enc_1aa186 {
21774 let Inst{7-5} = 0b111;
21775 let Inst{13-13} = 0b1;
21776 let Inst{31-21} = 0b11001011001;
21777 let prefersSlot3 = 1;
21778 let Constraints = "$Rxx32 = $Rxx32in";
21779 }
21780 def S2_vrndpackwh : HInst<
21781 (outs IntRegs:$Rd32),
21782 (ins DoubleRegs:$Rss32),
21783 "$Rd32 = vrndwh($Rss32)",
21784 tc_14b5c689, TypeS_2op>, Enc_90cd8b {
21785 let Inst{13-5} = 0b000000100;
21786 let Inst{31-21} = 0b10001000100;
21787 let hasNewValue = 1;
21788 let opNewValue = 0;
21789 let prefersSlot3 = 1;
21790 }
21791 def S2_vrndpackwhs : HInst<
21792 (outs IntRegs:$Rd32),
21793 (ins DoubleRegs:$Rss32),
21794 "$Rd32 = vrndwh($Rss32):sat",
21795 tc_cf8126ae, TypeS_2op>, Enc_90cd8b {
21796 let Inst{13-5} = 0b000000110;
21797 let Inst{31-21} = 0b10001000100;
21798 let hasNewValue = 1;
21799 let opNewValue = 0;
21800 let prefersSlot3 = 1;
21801 let Defs = [USR_OVF];
21802 }
21803 def S2_vsathb : HInst<
21804 (outs IntRegs:$Rd32),
21805 (ins DoubleRegs:$Rss32),
21806 "$Rd32 = vsathb($Rss32)",
21807 tc_0ae0825c, TypeS_2op>, Enc_90cd8b {
21808 let Inst{13-5} = 0b000000110;
21809 let Inst{31-21} = 0b10001000000;
21810 let hasNewValue = 1;
21811 let opNewValue = 0;
21812 let Defs = [USR_OVF];
21813 }
21814 def S2_vsathb_nopack : HInst<
21815 (outs DoubleRegs:$Rdd32),
21816 (ins DoubleRegs:$Rss32),
21817 "$Rdd32 = vsathb($Rss32)",
21818 tc_0ae0825c, TypeS_2op>, Enc_b9c5fb {
21819 let Inst{13-5} = 0b000000111;
21820 let Inst{31-21} = 0b10000000000;
21821 let Defs = [USR_OVF];
21822 }
21823 def S2_vsathub : HInst<
21824 (outs IntRegs:$Rd32),
21825 (ins DoubleRegs:$Rss32),
21826 "$Rd32 = vsathub($Rss32)",
21827 tc_0ae0825c, TypeS_2op>, Enc_90cd8b {
21828 let Inst{13-5} = 0b000000000;
21829 let Inst{31-21} = 0b10001000000;
21830 let hasNewValue = 1;
21831 let opNewValue = 0;
21832 let Defs = [USR_OVF];
21833 }
21834 def S2_vsathub_nopack : HInst<
21835 (outs DoubleRegs:$Rdd32),
21836 (ins DoubleRegs:$Rss32),
21837 "$Rdd32 = vsathub($Rss32)",
21838 tc_0ae0825c, TypeS_2op>, Enc_b9c5fb {
21839 let Inst{13-5} = 0b000000100;
21840 let Inst{31-21} = 0b10000000000;
21841 let Defs = [USR_OVF];
21842 }
21843 def S2_vsatwh : HInst<
21844 (outs IntRegs:$Rd32),
21845 (ins DoubleRegs:$Rss32),
21846 "$Rd32 = vsatwh($Rss32)",
21847 tc_0ae0825c, TypeS_2op>, Enc_90cd8b {
21848 let Inst{13-5} = 0b000000010;
21849 let Inst{31-21} = 0b10001000000;
21850 let hasNewValue = 1;
21851 let opNewValue = 0;
21852 let Defs = [USR_OVF];
21853 }
21854 def S2_vsatwh_nopack : HInst<
21855 (outs DoubleRegs:$Rdd32),
21856 (ins DoubleRegs:$Rss32),
21857 "$Rdd32 = vsatwh($Rss32)",
21858 tc_0ae0825c, TypeS_2op>, Enc_b9c5fb {
21859 let Inst{13-5} = 0b000000110;
21860 let Inst{31-21} = 0b10000000000;
21861 let Defs = [USR_OVF];
21862 }
21863 def S2_vsatwuh : HInst<
21864 (outs IntRegs:$Rd32),
21865 (ins DoubleRegs:$Rss32),
21866 "$Rd32 = vsatwuh($Rss32)",
21867 tc_0ae0825c, TypeS_2op>, Enc_90cd8b {
21868 let Inst{13-5} = 0b000000100;
21869 let Inst{31-21} = 0b10001000000;
21870 let hasNewValue = 1;
21871 let opNewValue = 0;
21872 let Defs = [USR_OVF];
21873 }
21874 def S2_vsatwuh_nopack : HInst<
21875 (outs DoubleRegs:$Rdd32),
21876 (ins DoubleRegs:$Rss32),
21877 "$Rdd32 = vsatwuh($Rss32)",
21878 tc_0ae0825c, TypeS_2op>, Enc_b9c5fb {
21879 let Inst{13-5} = 0b000000101;
21880 let Inst{31-21} = 0b10000000000;
21881 let Defs = [USR_OVF];
21882 }
21883 def S2_vsplatrb : HInst<
21884 (outs IntRegs:$Rd32),
21885 (ins IntRegs:$Rs32),
21886 "$Rd32 = vsplatb($Rs32)",
21887 tc_0ae0825c, TypeS_2op>, Enc_5e2823 {
21888 let Inst{13-5} = 0b000000111;
21889 let Inst{31-21} = 0b10001100010;
21890 let hasNewValue = 1;
21891 let opNewValue = 0;
21892 let isReMaterializable = 1;
21893 let isAsCheapAsAMove = 1;
21894 }
21895 def S2_vsplatrh : HInst<
21896 (outs DoubleRegs:$Rdd32),
21897 (ins IntRegs:$Rs32),
21898 "$Rdd32 = vsplath($Rs32)",
21899 tc_0ae0825c, TypeS_2op>, Enc_3a3d62 {
21900 let Inst{13-5} = 0b000000010;
21901 let Inst{31-21} = 0b10000100010;
21902 let isReMaterializable = 1;
21903 let isAsCheapAsAMove = 1;
21904 }
21905 def S2_vspliceib : HInst<
21906 (outs DoubleRegs:$Rdd32),
21907 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32, u3_0Imm:$Ii),
21908 "$Rdd32 = vspliceb($Rss32,$Rtt32,#$Ii)",
21909 tc_b4b5c03a, TypeS_3op>, Enc_d50cd3 {
21910 let Inst{13-13} = 0b0;
21911 let Inst{31-21} = 0b11000000100;
21912 }
21913 def S2_vsplicerb : HInst<
21914 (outs DoubleRegs:$Rdd32),
21915 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32, PredRegs:$Pu4),
21916 "$Rdd32 = vspliceb($Rss32,$Rtt32,$Pu4)",
21917 tc_b4b5c03a, TypeS_3op>, Enc_dbd70c {
21918 let Inst{7-7} = 0b0;
21919 let Inst{13-13} = 0b0;
21920 let Inst{31-21} = 0b11000010100;
21921 }
21922 def S2_vsxtbh : HInst<
21923 (outs DoubleRegs:$Rdd32),
21924 (ins IntRegs:$Rs32),
21925 "$Rdd32 = vsxtbh($Rs32)",
21926 tc_0ae0825c, TypeS_2op>, Enc_3a3d62 {
21927 let Inst{13-5} = 0b000000000;
21928 let Inst{31-21} = 0b10000100000;
21929 let isReMaterializable = 1;
21930 let isAsCheapAsAMove = 1;
21931 }
21932 def S2_vsxthw : HInst<
21933 (outs DoubleRegs:$Rdd32),
21934 (ins IntRegs:$Rs32),
21935 "$Rdd32 = vsxthw($Rs32)",
21936 tc_0ae0825c, TypeS_2op>, Enc_3a3d62 {
21937 let Inst{13-5} = 0b000000100;
21938 let Inst{31-21} = 0b10000100000;
21939 let isReMaterializable = 1;
21940 let isAsCheapAsAMove = 1;
21941 }
21942 def S2_vtrunehb : HInst<
21943 (outs IntRegs:$Rd32),
21944 (ins DoubleRegs:$Rss32),
21945 "$Rd32 = vtrunehb($Rss32)",
21946 tc_0ae0825c, TypeS_2op>, Enc_90cd8b {
21947 let Inst{13-5} = 0b000000010;
21948 let Inst{31-21} = 0b10001000100;
21949 let hasNewValue = 1;
21950 let opNewValue = 0;
21951 }
21952 def S2_vtrunewh : HInst<
21953 (outs DoubleRegs:$Rdd32),
21954 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
21955 "$Rdd32 = vtrunewh($Rss32,$Rtt32)",
21956 tc_946df596, TypeS_3op>, Enc_a56825 {
21957 let Inst{7-5} = 0b010;
21958 let Inst{13-13} = 0b0;
21959 let Inst{31-21} = 0b11000001100;
21960 }
21961 def S2_vtrunohb : HInst<
21962 (outs IntRegs:$Rd32),
21963 (ins DoubleRegs:$Rss32),
21964 "$Rd32 = vtrunohb($Rss32)",
21965 tc_0ae0825c, TypeS_2op>, Enc_90cd8b {
21966 let Inst{13-5} = 0b000000000;
21967 let Inst{31-21} = 0b10001000100;
21968 let hasNewValue = 1;
21969 let opNewValue = 0;
21970 }
21971 def S2_vtrunowh : HInst<
21972 (outs DoubleRegs:$Rdd32),
21973 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
21974 "$Rdd32 = vtrunowh($Rss32,$Rtt32)",
21975 tc_946df596, TypeS_3op>, Enc_a56825 {
21976 let Inst{7-5} = 0b100;
21977 let Inst{13-13} = 0b0;
21978 let Inst{31-21} = 0b11000001100;
21979 }
21980 def S2_vzxtbh : HInst<
21981 (outs DoubleRegs:$Rdd32),
21982 (ins IntRegs:$Rs32),
21983 "$Rdd32 = vzxtbh($Rs32)",
21984 tc_0ae0825c, TypeS_2op>, Enc_3a3d62 {
21985 let Inst{13-5} = 0b000000010;
21986 let Inst{31-21} = 0b10000100000;
21987 let isReMaterializable = 1;
21988 let isAsCheapAsAMove = 1;
21989 }
21990 def S2_vzxthw : HInst<
21991 (outs DoubleRegs:$Rdd32),
21992 (ins IntRegs:$Rs32),
21993 "$Rdd32 = vzxthw($Rs32)",
21994 tc_0ae0825c, TypeS_2op>, Enc_3a3d62 {
21995 let Inst{13-5} = 0b000000110;
21996 let Inst{31-21} = 0b10000100000;
21997 let isReMaterializable = 1;
21998 let isAsCheapAsAMove = 1;
21999 }
22000 def S4_addaddi : HInst<
22001 (outs IntRegs:$Rd32),
22002 (ins IntRegs:$Rs32, IntRegs:$Ru32, s32_0Imm:$Ii),
22003 "$Rd32 = add($Rs32,add($Ru32,#$Ii))",
22004 tc_f675fee8, TypeALU64>, Enc_8b8d61 {
22005 let Inst{31-23} = 0b110110110;
22006 let hasNewValue = 1;
22007 let opNewValue = 0;
22008 let prefersSlot3 = 1;
22009 let isExtendable = 1;
22010 let opExtendable = 3;
22011 let isExtentSigned = 1;
22012 let opExtentBits = 6;
22013 let opExtentAlign = 0;
22014 }
22015 def S4_addi_asl_ri : HInst<
22016 (outs IntRegs:$Rx32),
22017 (ins u32_0Imm:$Ii, IntRegs:$Rx32in, u5_0Imm:$II),
22018 "$Rx32 = add(#$Ii,asl($Rx32in,#$II))",
22019 tc_f675fee8, TypeALU64>, Enc_c31910 {
22020 let Inst{2-0} = 0b100;
22021 let Inst{4-4} = 0b0;
22022 let Inst{31-24} = 0b11011110;
22023 let hasNewValue = 1;
22024 let opNewValue = 0;
22025 let prefersSlot3 = 1;
22026 let isExtendable = 1;
22027 let opExtendable = 1;
22028 let isExtentSigned = 0;
22029 let opExtentBits = 8;
22030 let opExtentAlign = 0;
22031 let Constraints = "$Rx32 = $Rx32in";
22032 }
22033 def S4_addi_lsr_ri : HInst<
22034 (outs IntRegs:$Rx32),
22035 (ins u32_0Imm:$Ii, IntRegs:$Rx32in, u5_0Imm:$II),
22036 "$Rx32 = add(#$Ii,lsr($Rx32in,#$II))",
22037 tc_f675fee8, TypeALU64>, Enc_c31910 {
22038 let Inst{2-0} = 0b100;
22039 let Inst{4-4} = 0b1;
22040 let Inst{31-24} = 0b11011110;
22041 let hasNewValue = 1;
22042 let opNewValue = 0;
22043 let prefersSlot3 = 1;
22044 let isExtendable = 1;
22045 let opExtendable = 1;
22046 let isExtentSigned = 0;
22047 let opExtentBits = 8;
22048 let opExtentAlign = 0;
22049 let Constraints = "$Rx32 = $Rx32in";
22050 }
22051 def S4_andi_asl_ri : HInst<
22052 (outs IntRegs:$Rx32),
22053 (ins u32_0Imm:$Ii, IntRegs:$Rx32in, u5_0Imm:$II),
22054 "$Rx32 = and(#$Ii,asl($Rx32in,#$II))",
22055 tc_f429765c, TypeALU64>, Enc_c31910 {
22056 let Inst{2-0} = 0b000;
22057 let Inst{4-4} = 0b0;
22058 let Inst{31-24} = 0b11011110;
22059 let hasNewValue = 1;
22060 let opNewValue = 0;
22061 let prefersSlot3 = 1;
22062 let isExtendable = 1;
22063 let opExtendable = 1;
22064 let isExtentSigned = 0;
22065 let opExtentBits = 8;
22066 let opExtentAlign = 0;
22067 let Constraints = "$Rx32 = $Rx32in";
22068 }
22069 def S4_andi_lsr_ri : HInst<
22070 (outs IntRegs:$Rx32),
22071 (ins u32_0Imm:$Ii, IntRegs:$Rx32in, u5_0Imm:$II),
22072 "$Rx32 = and(#$Ii,lsr($Rx32in,#$II))",
22073 tc_f429765c, TypeALU64>, Enc_c31910 {
22074 let Inst{2-0} = 0b000;
22075 let Inst{4-4} = 0b1;
22076 let Inst{31-24} = 0b11011110;
22077 let hasNewValue = 1;
22078 let opNewValue = 0;
22079 let prefersSlot3 = 1;
22080 let isExtendable = 1;
22081 let opExtendable = 1;
22082 let isExtentSigned = 0;
22083 let opExtentBits = 8;
22084 let opExtentAlign = 0;
22085 let Constraints = "$Rx32 = $Rx32in";
22086 }
22087 def S4_clbaddi : HInst<
22088 (outs IntRegs:$Rd32),
22089 (ins IntRegs:$Rs32, s6_0Imm:$Ii),
22090 "$Rd32 = add(clb($Rs32),#$Ii)",
22091 tc_002cb246, TypeS_2op>, Enc_9fae8a {
22092 let Inst{7-5} = 0b000;
22093 let Inst{31-21} = 0b10001100001;
22094 let hasNewValue = 1;
22095 let opNewValue = 0;
22096 let prefersSlot3 = 1;
22097 }
22098 def S4_clbpaddi : HInst<
22099 (outs IntRegs:$Rd32),
22100 (ins DoubleRegs:$Rss32, s6_0Imm:$Ii),
22101 "$Rd32 = add(clb($Rss32),#$Ii)",
22102 tc_002cb246, TypeS_2op>, Enc_a1640c {
22103 let Inst{7-5} = 0b010;
22104 let Inst{31-21} = 0b10001000011;
22105 let hasNewValue = 1;
22106 let opNewValue = 0;
22107 let prefersSlot3 = 1;
22108 }
22109 def S4_clbpnorm : HInst<
22110 (outs IntRegs:$Rd32),
22111 (ins DoubleRegs:$Rss32),
22112 "$Rd32 = normamt($Rss32)",
22113 tc_14b5c689, TypeS_2op>, Enc_90cd8b {
22114 let Inst{13-5} = 0b000000000;
22115 let Inst{31-21} = 0b10001000011;
22116 let hasNewValue = 1;
22117 let opNewValue = 0;
22118 let prefersSlot3 = 1;
22119 }
22120 def S4_extract : HInst<
22121 (outs IntRegs:$Rd32),
22122 (ins IntRegs:$Rs32, u5_0Imm:$Ii, u5_0Imm:$II),
22123 "$Rd32 = extract($Rs32,#$Ii,#$II)",
22124 tc_f675fee8, TypeS_2op>, Enc_b388cf {
22125 let Inst{13-13} = 0b0;
22126 let Inst{31-23} = 0b100011011;
22127 let hasNewValue = 1;
22128 let opNewValue = 0;
22129 let prefersSlot3 = 1;
22130 }
22131 def S4_extract_rp : HInst<
22132 (outs IntRegs:$Rd32),
22133 (ins IntRegs:$Rs32, DoubleRegs:$Rtt32),
22134 "$Rd32 = extract($Rs32,$Rtt32)",
22135 tc_002cb246, TypeS_3op>, Enc_e07374 {
22136 let Inst{7-5} = 0b010;
22137 let Inst{13-13} = 0b0;
22138 let Inst{31-21} = 0b11001001000;
22139 let hasNewValue = 1;
22140 let opNewValue = 0;
22141 let prefersSlot3 = 1;
22142 }
22143 def S4_extractp : HInst<
22144 (outs DoubleRegs:$Rdd32),
22145 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii, u6_0Imm:$II),
22146 "$Rdd32 = extract($Rss32,#$Ii,#$II)",
22147 tc_f675fee8, TypeS_2op>, Enc_b84c4c {
22148 let Inst{31-24} = 0b10001010;
22149 let prefersSlot3 = 1;
22150 }
22151 def S4_extractp_rp : HInst<
22152 (outs DoubleRegs:$Rdd32),
22153 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
22154 "$Rdd32 = extract($Rss32,$Rtt32)",
22155 tc_002cb246, TypeS_3op>, Enc_a56825 {
22156 let Inst{7-5} = 0b100;
22157 let Inst{13-13} = 0b0;
22158 let Inst{31-21} = 0b11000001110;
22159 let prefersSlot3 = 1;
22160 }
22161 def S4_lsli : HInst<
22162 (outs IntRegs:$Rd32),
22163 (ins s6_0Imm:$Ii, IntRegs:$Rt32),
22164 "$Rd32 = lsl(#$Ii,$Rt32)",
22165 tc_946df596, TypeS_3op>, Enc_fef969 {
22166 let Inst{7-6} = 0b11;
22167 let Inst{13-13} = 0b0;
22168 let Inst{31-21} = 0b11000110100;
22169 let hasNewValue = 1;
22170 let opNewValue = 0;
22171 }
22172 def S4_ntstbit_i : HInst<
22173 (outs PredRegs:$Pd4),
22174 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
22175 "$Pd4 = !tstbit($Rs32,#$Ii)",
22176 tc_643b4717, TypeS_2op>, Enc_83ee64 {
22177 let Inst{7-2} = 0b000000;
22178 let Inst{13-13} = 0b0;
22179 let Inst{31-21} = 0b10000101001;
22180 }
22181 def S4_ntstbit_r : HInst<
22182 (outs PredRegs:$Pd4),
22183 (ins IntRegs:$Rs32, IntRegs:$Rt32),
22184 "$Pd4 = !tstbit($Rs32,$Rt32)",
22185 tc_85d5d03f, TypeS_3op>, Enc_c2b48e {
22186 let Inst{7-2} = 0b000000;
22187 let Inst{13-13} = 0b0;
22188 let Inst{31-21} = 0b11000111001;
22189 }
22190 def S4_or_andi : HInst<
22191 (outs IntRegs:$Rx32),
22192 (ins IntRegs:$Rx32in, IntRegs:$Rs32, s32_0Imm:$Ii),
22193 "$Rx32 |= and($Rs32,#$Ii)",
22194 tc_f429765c, TypeALU64>, Enc_b0e9d8 {
22195 let Inst{31-22} = 0b1101101000;
22196 let hasNewValue = 1;
22197 let opNewValue = 0;
22198 let prefersSlot3 = 1;
22199 let InputType = "imm";
22200 let isExtendable = 1;
22201 let opExtendable = 3;
22202 let isExtentSigned = 1;
22203 let opExtentBits = 10;
22204 let opExtentAlign = 0;
22205 let Constraints = "$Rx32 = $Rx32in";
22206 }
22207 def S4_or_andix : HInst<
22208 (outs IntRegs:$Rx32),
22209 (ins IntRegs:$Ru32, IntRegs:$Rx32in, s32_0Imm:$Ii),
22210 "$Rx32 = or($Ru32,and($Rx32in,#$Ii))",
22211 tc_f429765c, TypeALU64>, Enc_b4e6cf {
22212 let Inst{31-22} = 0b1101101001;
22213 let hasNewValue = 1;
22214 let opNewValue = 0;
22215 let prefersSlot3 = 1;
22216 let isExtendable = 1;
22217 let opExtendable = 3;
22218 let isExtentSigned = 1;
22219 let opExtentBits = 10;
22220 let opExtentAlign = 0;
22221 let Constraints = "$Rx32 = $Rx32in";
22222 }
22223 def S4_or_ori : HInst<
22224 (outs IntRegs:$Rx32),
22225 (ins IntRegs:$Rx32in, IntRegs:$Rs32, s32_0Imm:$Ii),
22226 "$Rx32 |= or($Rs32,#$Ii)",
22227 tc_f429765c, TypeALU64>, Enc_b0e9d8 {
22228 let Inst{31-22} = 0b1101101010;
22229 let hasNewValue = 1;
22230 let opNewValue = 0;
22231 let prefersSlot3 = 1;
22232 let InputType = "imm";
22233 let isExtendable = 1;
22234 let opExtendable = 3;
22235 let isExtentSigned = 1;
22236 let opExtentBits = 10;
22237 let opExtentAlign = 0;
22238 let Constraints = "$Rx32 = $Rx32in";
22239 }
22240 def S4_ori_asl_ri : HInst<
22241 (outs IntRegs:$Rx32),
22242 (ins u32_0Imm:$Ii, IntRegs:$Rx32in, u5_0Imm:$II),
22243 "$Rx32 = or(#$Ii,asl($Rx32in,#$II))",
22244 tc_f429765c, TypeALU64>, Enc_c31910 {
22245 let Inst{2-0} = 0b010;
22246 let Inst{4-4} = 0b0;
22247 let Inst{31-24} = 0b11011110;
22248 let hasNewValue = 1;
22249 let opNewValue = 0;
22250 let prefersSlot3 = 1;
22251 let isExtendable = 1;
22252 let opExtendable = 1;
22253 let isExtentSigned = 0;
22254 let opExtentBits = 8;
22255 let opExtentAlign = 0;
22256 let Constraints = "$Rx32 = $Rx32in";
22257 }
22258 def S4_ori_lsr_ri : HInst<
22259 (outs IntRegs:$Rx32),
22260 (ins u32_0Imm:$Ii, IntRegs:$Rx32in, u5_0Imm:$II),
22261 "$Rx32 = or(#$Ii,lsr($Rx32in,#$II))",
22262 tc_f429765c, TypeALU64>, Enc_c31910 {
22263 let Inst{2-0} = 0b010;
22264 let Inst{4-4} = 0b1;
22265 let Inst{31-24} = 0b11011110;
22266 let hasNewValue = 1;
22267 let opNewValue = 0;
22268 let prefersSlot3 = 1;
22269 let isExtendable = 1;
22270 let opExtendable = 1;
22271 let isExtentSigned = 0;
22272 let opExtentBits = 8;
22273 let opExtentAlign = 0;
22274 let Constraints = "$Rx32 = $Rx32in";
22275 }
22276 def S4_parity : HInst<
22277 (outs IntRegs:$Rd32),
22278 (ins IntRegs:$Rs32, IntRegs:$Rt32),
22279 "$Rd32 = parity($Rs32,$Rt32)",
22280 tc_002cb246, TypeALU64>, Enc_5ab2be {
22281 let Inst{7-5} = 0b000;
22282 let Inst{13-13} = 0b0;
22283 let Inst{31-21} = 0b11010101111;
22284 let hasNewValue = 1;
22285 let opNewValue = 0;
22286 let prefersSlot3 = 1;
22287 }
22288 def S4_pstorerbf_abs : HInst<
22289 (outs),
22290 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
22291 "if (!$Pv4) memb(#$Ii) = $Rt32",
22292 tc_362c6592, TypeST>, Enc_1cf4ca, AddrModeRel {
22293 let Inst{2-2} = 0b1;
22294 let Inst{7-7} = 0b1;
22295 let Inst{13-13} = 0b0;
22296 let Inst{31-18} = 0b10101111000000;
22297 let isPredicated = 1;
22298 let isPredicatedFalse = 1;
22299 let addrMode = Absolute;
22300 let accessSize = ByteAccess;
22301 let isExtended = 1;
22302 let mayStore = 1;
22303 let CextOpcode = "S2_storerb";
22304 let BaseOpcode = "S2_storerbabs";
22305 let isNVStorable = 1;
22306 let DecoderNamespace = "MustExtend";
22307 let isExtendable = 1;
22308 let opExtendable = 1;
22309 let isExtentSigned = 0;
22310 let opExtentBits = 6;
22311 let opExtentAlign = 0;
22312 }
22313 def S4_pstorerbf_rr : HInst<
22314 (outs),
22315 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
22316 "if (!$Pv4) memb($Rs32+$Ru32<<#$Ii) = $Rt32",
22317 tc_3962fa26, TypeST>, Enc_6339d5, AddrModeRel {
22318 let Inst{31-21} = 0b00110101000;
22319 let isPredicated = 1;
22320 let isPredicatedFalse = 1;
22321 let addrMode = BaseRegOffset;
22322 let accessSize = ByteAccess;
22323 let mayStore = 1;
22324 let CextOpcode = "S2_storerb";
22325 let InputType = "reg";
22326 let BaseOpcode = "S4_storerb_rr";
22327 let isNVStorable = 1;
22328 }
22329 def S4_pstorerbfnew_abs : HInst<
22330 (outs),
22331 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
22332 "if (!$Pv4.new) memb(#$Ii) = $Rt32",
22333 tc_da4a37ed, TypeST>, Enc_1cf4ca, AddrModeRel {
22334 let Inst{2-2} = 0b1;
22335 let Inst{7-7} = 0b1;
22336 let Inst{13-13} = 0b1;
22337 let Inst{31-18} = 0b10101111000000;
22338 let isPredicated = 1;
22339 let isPredicatedFalse = 1;
22340 let addrMode = Absolute;
22341 let accessSize = ByteAccess;
22342 let isPredicatedNew = 1;
22343 let isExtended = 1;
22344 let mayStore = 1;
22345 let CextOpcode = "S2_storerb";
22346 let BaseOpcode = "S2_storerbabs";
22347 let isNVStorable = 1;
22348 let DecoderNamespace = "MustExtend";
22349 let isExtendable = 1;
22350 let opExtendable = 1;
22351 let isExtentSigned = 0;
22352 let opExtentBits = 6;
22353 let opExtentAlign = 0;
22354 }
22355 def S4_pstorerbfnew_io : HInst<
22356 (outs),
22357 (ins PredRegs:$Pv4, IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
22358 "if (!$Pv4.new) memb($Rs32+#$Ii) = $Rt32",
22359 tc_da97ee82, TypeV2LDST>, Enc_da8d43, AddrModeRel {
22360 let Inst{2-2} = 0b0;
22361 let Inst{31-21} = 0b01000110000;
22362 let isPredicated = 1;
22363 let isPredicatedFalse = 1;
22364 let addrMode = BaseImmOffset;
22365 let accessSize = ByteAccess;
22366 let isPredicatedNew = 1;
22367 let mayStore = 1;
22368 let CextOpcode = "S2_storerb";
22369 let InputType = "imm";
22370 let BaseOpcode = "S2_storerb_io";
22371 let isNVStorable = 1;
22372 let isExtendable = 1;
22373 let opExtendable = 2;
22374 let isExtentSigned = 0;
22375 let opExtentBits = 6;
22376 let opExtentAlign = 0;
22377 }
22378 def S4_pstorerbfnew_rr : HInst<
22379 (outs),
22380 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
22381 "if (!$Pv4.new) memb($Rs32+$Ru32<<#$Ii) = $Rt32",
22382 tc_40116ca8, TypeST>, Enc_6339d5, AddrModeRel {
22383 let Inst{31-21} = 0b00110111000;
22384 let isPredicated = 1;
22385 let isPredicatedFalse = 1;
22386 let addrMode = BaseRegOffset;
22387 let accessSize = ByteAccess;
22388 let isPredicatedNew = 1;
22389 let mayStore = 1;
22390 let CextOpcode = "S2_storerb";
22391 let InputType = "reg";
22392 let BaseOpcode = "S4_storerb_rr";
22393 let isNVStorable = 1;
22394 }
22395 def S4_pstorerbfnew_zomap : HInst<
22396 (outs),
22397 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
22398 "if (!$Pv4.new) memb($Rs32) = $Rt32",
22399 tc_da97ee82, TypeMAPPING> {
22400 let isPseudo = 1;
22401 let isCodeGenOnly = 1;
22402 }
22403 def S4_pstorerbnewf_abs : HInst<
22404 (outs),
22405 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
22406 "if (!$Pv4) memb(#$Ii) = $Nt8.new",
22407 tc_4b68bce4, TypeST>, Enc_44215c, AddrModeRel {
22408 let Inst{2-2} = 0b1;
22409 let Inst{7-7} = 0b1;
22410 let Inst{13-11} = 0b000;
22411 let Inst{31-18} = 0b10101111101000;
22412 let isPredicated = 1;
22413 let isPredicatedFalse = 1;
22414 let addrMode = Absolute;
22415 let accessSize = ByteAccess;
22416 let isNVStore = 1;
22417 let isNewValue = 1;
22418 let isExtended = 1;
22419 let isRestrictNoSlot1Store = 1;
22420 let mayStore = 1;
22421 let CextOpcode = "S2_storerb";
22422 let BaseOpcode = "S2_storerbabs";
22423 let DecoderNamespace = "MustExtend";
22424 let isExtendable = 1;
22425 let opExtendable = 1;
22426 let isExtentSigned = 0;
22427 let opExtentBits = 6;
22428 let opExtentAlign = 0;
22429 let opNewValue = 2;
22430 }
22431 def S4_pstorerbnewf_rr : HInst<
22432 (outs),
22433 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
22434 "if (!$Pv4) memb($Rs32+$Ru32<<#$Ii) = $Nt8.new",
22435 tc_e95795ec, TypeST>, Enc_47ee5e, AddrModeRel {
22436 let Inst{4-3} = 0b00;
22437 let Inst{31-21} = 0b00110101101;
22438 let isPredicated = 1;
22439 let isPredicatedFalse = 1;
22440 let addrMode = BaseRegOffset;
22441 let accessSize = ByteAccess;
22442 let isNVStore = 1;
22443 let isNewValue = 1;
22444 let isRestrictNoSlot1Store = 1;
22445 let mayStore = 1;
22446 let CextOpcode = "S2_storerb";
22447 let InputType = "reg";
22448 let BaseOpcode = "S4_storerb_rr";
22449 let opNewValue = 4;
22450 }
22451 def S4_pstorerbnewfnew_abs : HInst<
22452 (outs),
22453 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
22454 "if (!$Pv4.new) memb(#$Ii) = $Nt8.new",
22455 tc_d2e63d61, TypeST>, Enc_44215c, AddrModeRel {
22456 let Inst{2-2} = 0b1;
22457 let Inst{7-7} = 0b1;
22458 let Inst{13-11} = 0b100;
22459 let Inst{31-18} = 0b10101111101000;
22460 let isPredicated = 1;
22461 let isPredicatedFalse = 1;
22462 let addrMode = Absolute;
22463 let accessSize = ByteAccess;
22464 let isNVStore = 1;
22465 let isPredicatedNew = 1;
22466 let isNewValue = 1;
22467 let isExtended = 1;
22468 let isRestrictNoSlot1Store = 1;
22469 let mayStore = 1;
22470 let CextOpcode = "S2_storerb";
22471 let BaseOpcode = "S2_storerbabs";
22472 let DecoderNamespace = "MustExtend";
22473 let isExtendable = 1;
22474 let opExtendable = 1;
22475 let isExtentSigned = 0;
22476 let opExtentBits = 6;
22477 let opExtentAlign = 0;
22478 let opNewValue = 2;
22479 }
22480 def S4_pstorerbnewfnew_io : HInst<
22481 (outs),
22482 (ins PredRegs:$Pv4, IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Nt8),
22483 "if (!$Pv4.new) memb($Rs32+#$Ii) = $Nt8.new",
22484 tc_c79a189f, TypeV2LDST>, Enc_585242, AddrModeRel {
22485 let Inst{2-2} = 0b0;
22486 let Inst{12-11} = 0b00;
22487 let Inst{31-21} = 0b01000110101;
22488 let isPredicated = 1;
22489 let isPredicatedFalse = 1;
22490 let addrMode = BaseImmOffset;
22491 let accessSize = ByteAccess;
22492 let isNVStore = 1;
22493 let isPredicatedNew = 1;
22494 let isNewValue = 1;
22495 let isRestrictNoSlot1Store = 1;
22496 let mayStore = 1;
22497 let CextOpcode = "S2_storerb";
22498 let InputType = "imm";
22499 let BaseOpcode = "S2_storerb_io";
22500 let isExtendable = 1;
22501 let opExtendable = 2;
22502 let isExtentSigned = 0;
22503 let opExtentBits = 6;
22504 let opExtentAlign = 0;
22505 let opNewValue = 3;
22506 }
22507 def S4_pstorerbnewfnew_rr : HInst<
22508 (outs),
22509 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
22510 "if (!$Pv4.new) memb($Rs32+$Ru32<<#$Ii) = $Nt8.new",
22511 tc_b90a29b1, TypeST>, Enc_47ee5e, AddrModeRel {
22512 let Inst{4-3} = 0b00;
22513 let Inst{31-21} = 0b00110111101;
22514 let isPredicated = 1;
22515 let isPredicatedFalse = 1;
22516 let addrMode = BaseRegOffset;
22517 let accessSize = ByteAccess;
22518 let isNVStore = 1;
22519 let isPredicatedNew = 1;
22520 let isNewValue = 1;
22521 let isRestrictNoSlot1Store = 1;
22522 let mayStore = 1;
22523 let CextOpcode = "S2_storerb";
22524 let InputType = "reg";
22525 let BaseOpcode = "S4_storerb_rr";
22526 let opNewValue = 4;
22527 }
22528 def S4_pstorerbnewfnew_zomap : HInst<
22529 (outs),
22530 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
22531 "if (!$Pv4.new) memb($Rs32) = $Nt8.new",
22532 tc_c79a189f, TypeMAPPING> {
22533 let isPseudo = 1;
22534 let isCodeGenOnly = 1;
22535 let opNewValue = 2;
22536 }
22537 def S4_pstorerbnewt_abs : HInst<
22538 (outs),
22539 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
22540 "if ($Pv4) memb(#$Ii) = $Nt8.new",
22541 tc_4b68bce4, TypeST>, Enc_44215c, AddrModeRel {
22542 let Inst{2-2} = 0b0;
22543 let Inst{7-7} = 0b1;
22544 let Inst{13-11} = 0b000;
22545 let Inst{31-18} = 0b10101111101000;
22546 let isPredicated = 1;
22547 let addrMode = Absolute;
22548 let accessSize = ByteAccess;
22549 let isNVStore = 1;
22550 let isNewValue = 1;
22551 let isExtended = 1;
22552 let isRestrictNoSlot1Store = 1;
22553 let mayStore = 1;
22554 let CextOpcode = "S2_storerb";
22555 let BaseOpcode = "S2_storerbabs";
22556 let DecoderNamespace = "MustExtend";
22557 let isExtendable = 1;
22558 let opExtendable = 1;
22559 let isExtentSigned = 0;
22560 let opExtentBits = 6;
22561 let opExtentAlign = 0;
22562 let opNewValue = 2;
22563 }
22564 def S4_pstorerbnewt_rr : HInst<
22565 (outs),
22566 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
22567 "if ($Pv4) memb($Rs32+$Ru32<<#$Ii) = $Nt8.new",
22568 tc_e95795ec, TypeST>, Enc_47ee5e, AddrModeRel {
22569 let Inst{4-3} = 0b00;
22570 let Inst{31-21} = 0b00110100101;
22571 let isPredicated = 1;
22572 let addrMode = BaseRegOffset;
22573 let accessSize = ByteAccess;
22574 let isNVStore = 1;
22575 let isNewValue = 1;
22576 let isRestrictNoSlot1Store = 1;
22577 let mayStore = 1;
22578 let CextOpcode = "S2_storerb";
22579 let InputType = "reg";
22580 let BaseOpcode = "S4_storerb_rr";
22581 let opNewValue = 4;
22582 }
22583 def S4_pstorerbnewtnew_abs : HInst<
22584 (outs),
22585 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
22586 "if ($Pv4.new) memb(#$Ii) = $Nt8.new",
22587 tc_d2e63d61, TypeST>, Enc_44215c, AddrModeRel {
22588 let Inst{2-2} = 0b0;
22589 let Inst{7-7} = 0b1;
22590 let Inst{13-11} = 0b100;
22591 let Inst{31-18} = 0b10101111101000;
22592 let isPredicated = 1;
22593 let addrMode = Absolute;
22594 let accessSize = ByteAccess;
22595 let isNVStore = 1;
22596 let isPredicatedNew = 1;
22597 let isNewValue = 1;
22598 let isExtended = 1;
22599 let isRestrictNoSlot1Store = 1;
22600 let mayStore = 1;
22601 let CextOpcode = "S2_storerb";
22602 let BaseOpcode = "S2_storerbabs";
22603 let DecoderNamespace = "MustExtend";
22604 let isExtendable = 1;
22605 let opExtendable = 1;
22606 let isExtentSigned = 0;
22607 let opExtentBits = 6;
22608 let opExtentAlign = 0;
22609 let opNewValue = 2;
22610 }
22611 def S4_pstorerbnewtnew_io : HInst<
22612 (outs),
22613 (ins PredRegs:$Pv4, IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Nt8),
22614 "if ($Pv4.new) memb($Rs32+#$Ii) = $Nt8.new",
22615 tc_c79a189f, TypeV2LDST>, Enc_585242, AddrModeRel {
22616 let Inst{2-2} = 0b0;
22617 let Inst{12-11} = 0b00;
22618 let Inst{31-21} = 0b01000010101;
22619 let isPredicated = 1;
22620 let addrMode = BaseImmOffset;
22621 let accessSize = ByteAccess;
22622 let isNVStore = 1;
22623 let isPredicatedNew = 1;
22624 let isNewValue = 1;
22625 let isRestrictNoSlot1Store = 1;
22626 let mayStore = 1;
22627 let CextOpcode = "S2_storerb";
22628 let InputType = "imm";
22629 let BaseOpcode = "S2_storerb_io";
22630 let isExtendable = 1;
22631 let opExtendable = 2;
22632 let isExtentSigned = 0;
22633 let opExtentBits = 6;
22634 let opExtentAlign = 0;
22635 let opNewValue = 3;
22636 }
22637 def S4_pstorerbnewtnew_rr : HInst<
22638 (outs),
22639 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
22640 "if ($Pv4.new) memb($Rs32+$Ru32<<#$Ii) = $Nt8.new",
22641 tc_b90a29b1, TypeST>, Enc_47ee5e, AddrModeRel {
22642 let Inst{4-3} = 0b00;
22643 let Inst{31-21} = 0b00110110101;
22644 let isPredicated = 1;
22645 let addrMode = BaseRegOffset;
22646 let accessSize = ByteAccess;
22647 let isNVStore = 1;
22648 let isPredicatedNew = 1;
22649 let isNewValue = 1;
22650 let isRestrictNoSlot1Store = 1;
22651 let mayStore = 1;
22652 let CextOpcode = "S2_storerb";
22653 let InputType = "reg";
22654 let BaseOpcode = "S4_storerb_rr";
22655 let opNewValue = 4;
22656 }
22657 def S4_pstorerbnewtnew_zomap : HInst<
22658 (outs),
22659 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
22660 "if ($Pv4.new) memb($Rs32) = $Nt8.new",
22661 tc_c79a189f, TypeMAPPING> {
22662 let isPseudo = 1;
22663 let isCodeGenOnly = 1;
22664 let opNewValue = 2;
22665 }
22666 def S4_pstorerbt_abs : HInst<
22667 (outs),
22668 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
22669 "if ($Pv4) memb(#$Ii) = $Rt32",
22670 tc_362c6592, TypeST>, Enc_1cf4ca, AddrModeRel {
22671 let Inst{2-2} = 0b0;
22672 let Inst{7-7} = 0b1;
22673 let Inst{13-13} = 0b0;
22674 let Inst{31-18} = 0b10101111000000;
22675 let isPredicated = 1;
22676 let addrMode = Absolute;
22677 let accessSize = ByteAccess;
22678 let isExtended = 1;
22679 let mayStore = 1;
22680 let CextOpcode = "S2_storerb";
22681 let BaseOpcode = "S2_storerbabs";
22682 let isNVStorable = 1;
22683 let DecoderNamespace = "MustExtend";
22684 let isExtendable = 1;
22685 let opExtendable = 1;
22686 let isExtentSigned = 0;
22687 let opExtentBits = 6;
22688 let opExtentAlign = 0;
22689 }
22690 def S4_pstorerbt_rr : HInst<
22691 (outs),
22692 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
22693 "if ($Pv4) memb($Rs32+$Ru32<<#$Ii) = $Rt32",
22694 tc_3962fa26, TypeST>, Enc_6339d5, AddrModeRel {
22695 let Inst{31-21} = 0b00110100000;
22696 let isPredicated = 1;
22697 let addrMode = BaseRegOffset;
22698 let accessSize = ByteAccess;
22699 let mayStore = 1;
22700 let CextOpcode = "S2_storerb";
22701 let InputType = "reg";
22702 let BaseOpcode = "S4_storerb_rr";
22703 let isNVStorable = 1;
22704 }
22705 def S4_pstorerbtnew_abs : HInst<
22706 (outs),
22707 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
22708 "if ($Pv4.new) memb(#$Ii) = $Rt32",
22709 tc_da4a37ed, TypeST>, Enc_1cf4ca, AddrModeRel {
22710 let Inst{2-2} = 0b0;
22711 let Inst{7-7} = 0b1;
22712 let Inst{13-13} = 0b1;
22713 let Inst{31-18} = 0b10101111000000;
22714 let isPredicated = 1;
22715 let addrMode = Absolute;
22716 let accessSize = ByteAccess;
22717 let isPredicatedNew = 1;
22718 let isExtended = 1;
22719 let mayStore = 1;
22720 let CextOpcode = "S2_storerb";
22721 let BaseOpcode = "S2_storerbabs";
22722 let isNVStorable = 1;
22723 let DecoderNamespace = "MustExtend";
22724 let isExtendable = 1;
22725 let opExtendable = 1;
22726 let isExtentSigned = 0;
22727 let opExtentBits = 6;
22728 let opExtentAlign = 0;
22729 }
22730 def S4_pstorerbtnew_io : HInst<
22731 (outs),
22732 (ins PredRegs:$Pv4, IntRegs:$Rs32, u32_0Imm:$Ii, IntRegs:$Rt32),
22733 "if ($Pv4.new) memb($Rs32+#$Ii) = $Rt32",
22734 tc_da97ee82, TypeV2LDST>, Enc_da8d43, AddrModeRel {
22735 let Inst{2-2} = 0b0;
22736 let Inst{31-21} = 0b01000010000;
22737 let isPredicated = 1;
22738 let addrMode = BaseImmOffset;
22739 let accessSize = ByteAccess;
22740 let isPredicatedNew = 1;
22741 let mayStore = 1;
22742 let CextOpcode = "S2_storerb";
22743 let InputType = "imm";
22744 let BaseOpcode = "S2_storerb_io";
22745 let isNVStorable = 1;
22746 let isExtendable = 1;
22747 let opExtendable = 2;
22748 let isExtentSigned = 0;
22749 let opExtentBits = 6;
22750 let opExtentAlign = 0;
22751 }
22752 def S4_pstorerbtnew_rr : HInst<
22753 (outs),
22754 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
22755 "if ($Pv4.new) memb($Rs32+$Ru32<<#$Ii) = $Rt32",
22756 tc_40116ca8, TypeST>, Enc_6339d5, AddrModeRel {
22757 let Inst{31-21} = 0b00110110000;
22758 let isPredicated = 1;
22759 let addrMode = BaseRegOffset;
22760 let accessSize = ByteAccess;
22761 let isPredicatedNew = 1;
22762 let mayStore = 1;
22763 let CextOpcode = "S2_storerb";
22764 let InputType = "reg";
22765 let BaseOpcode = "S4_storerb_rr";
22766 let isNVStorable = 1;
22767 }
22768 def S4_pstorerbtnew_zomap : HInst<
22769 (outs),
22770 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
22771 "if ($Pv4.new) memb($Rs32) = $Rt32",
22772 tc_da97ee82, TypeMAPPING> {
22773 let isPseudo = 1;
22774 let isCodeGenOnly = 1;
22775 }
22776 def S4_pstorerdf_abs : HInst<
22777 (outs),
22778 (ins PredRegs:$Pv4, u32_0Imm:$Ii, DoubleRegs:$Rtt32),
22779 "if (!$Pv4) memd(#$Ii) = $Rtt32",
22780 tc_362c6592, TypeST>, Enc_50b5ac, AddrModeRel {
22781 let Inst{2-2} = 0b1;
22782 let Inst{7-7} = 0b1;
22783 let Inst{13-13} = 0b0;
22784 let Inst{31-18} = 0b10101111110000;
22785 let isPredicated = 1;
22786 let isPredicatedFalse = 1;
22787 let addrMode = Absolute;
22788 let accessSize = DoubleWordAccess;
22789 let isExtended = 1;
22790 let mayStore = 1;
22791 let CextOpcode = "S2_storerd";
22792 let BaseOpcode = "S2_storerdabs";
22793 let DecoderNamespace = "MustExtend";
22794 let isExtendable = 1;
22795 let opExtendable = 1;
22796 let isExtentSigned = 0;
22797 let opExtentBits = 6;
22798 let opExtentAlign = 0;
22799 }
22800 def S4_pstorerdf_rr : HInst<
22801 (outs),
22802 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, DoubleRegs:$Rtt32),
22803 "if (!$Pv4) memd($Rs32+$Ru32<<#$Ii) = $Rtt32",
22804 tc_3962fa26, TypeST>, Enc_1a9974, AddrModeRel {
22805 let Inst{31-21} = 0b00110101110;
22806 let isPredicated = 1;
22807 let isPredicatedFalse = 1;
22808 let addrMode = BaseRegOffset;
22809 let accessSize = DoubleWordAccess;
22810 let mayStore = 1;
22811 let CextOpcode = "S2_storerd";
22812 let InputType = "reg";
22813 let BaseOpcode = "S2_storerd_rr";
22814 }
22815 def S4_pstorerdfnew_abs : HInst<
22816 (outs),
22817 (ins PredRegs:$Pv4, u32_0Imm:$Ii, DoubleRegs:$Rtt32),
22818 "if (!$Pv4.new) memd(#$Ii) = $Rtt32",
22819 tc_da4a37ed, TypeST>, Enc_50b5ac, AddrModeRel {
22820 let Inst{2-2} = 0b1;
22821 let Inst{7-7} = 0b1;
22822 let Inst{13-13} = 0b1;
22823 let Inst{31-18} = 0b10101111110000;
22824 let isPredicated = 1;
22825 let isPredicatedFalse = 1;
22826 let addrMode = Absolute;
22827 let accessSize = DoubleWordAccess;
22828 let isPredicatedNew = 1;
22829 let isExtended = 1;
22830 let mayStore = 1;
22831 let CextOpcode = "S2_storerd";
22832 let BaseOpcode = "S2_storerdabs";
22833 let DecoderNamespace = "MustExtend";
22834 let isExtendable = 1;
22835 let opExtendable = 1;
22836 let isExtentSigned = 0;
22837 let opExtentBits = 6;
22838 let opExtentAlign = 0;
22839 }
22840 def S4_pstorerdfnew_io : HInst<
22841 (outs),
22842 (ins PredRegs:$Pv4, IntRegs:$Rs32, u29_3Imm:$Ii, DoubleRegs:$Rtt32),
22843 "if (!$Pv4.new) memd($Rs32+#$Ii) = $Rtt32",
22844 tc_da97ee82, TypeV2LDST>, Enc_57a33e, AddrModeRel {
22845 let Inst{2-2} = 0b0;
22846 let Inst{31-21} = 0b01000110110;
22847 let isPredicated = 1;
22848 let isPredicatedFalse = 1;
22849 let addrMode = BaseImmOffset;
22850 let accessSize = DoubleWordAccess;
22851 let isPredicatedNew = 1;
22852 let mayStore = 1;
22853 let CextOpcode = "S2_storerd";
22854 let InputType = "imm";
22855 let BaseOpcode = "S2_storerd_io";
22856 let isExtendable = 1;
22857 let opExtendable = 2;
22858 let isExtentSigned = 0;
22859 let opExtentBits = 9;
22860 let opExtentAlign = 3;
22861 }
22862 def S4_pstorerdfnew_rr : HInst<
22863 (outs),
22864 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, DoubleRegs:$Rtt32),
22865 "if (!$Pv4.new) memd($Rs32+$Ru32<<#$Ii) = $Rtt32",
22866 tc_40116ca8, TypeST>, Enc_1a9974, AddrModeRel {
22867 let Inst{31-21} = 0b00110111110;
22868 let isPredicated = 1;
22869 let isPredicatedFalse = 1;
22870 let addrMode = BaseRegOffset;
22871 let accessSize = DoubleWordAccess;
22872 let isPredicatedNew = 1;
22873 let mayStore = 1;
22874 let CextOpcode = "S2_storerd";
22875 let InputType = "reg";
22876 let BaseOpcode = "S2_storerd_rr";
22877 }
22878 def S4_pstorerdfnew_zomap : HInst<
22879 (outs),
22880 (ins PredRegs:$Pv4, IntRegs:$Rs32, DoubleRegs:$Rtt32),
22881 "if (!$Pv4.new) memd($Rs32) = $Rtt32",
22882 tc_da97ee82, TypeMAPPING> {
22883 let isPseudo = 1;
22884 let isCodeGenOnly = 1;
22885 }
22886 def S4_pstorerdt_abs : HInst<
22887 (outs),
22888 (ins PredRegs:$Pv4, u32_0Imm:$Ii, DoubleRegs:$Rtt32),
22889 "if ($Pv4) memd(#$Ii) = $Rtt32",
22890 tc_362c6592, TypeST>, Enc_50b5ac, AddrModeRel {
22891 let Inst{2-2} = 0b0;
22892 let Inst{7-7} = 0b1;
22893 let Inst{13-13} = 0b0;
22894 let Inst{31-18} = 0b10101111110000;
22895 let isPredicated = 1;
22896 let addrMode = Absolute;
22897 let accessSize = DoubleWordAccess;
22898 let isExtended = 1;
22899 let mayStore = 1;
22900 let CextOpcode = "S2_storerd";
22901 let BaseOpcode = "S2_storerdabs";
22902 let DecoderNamespace = "MustExtend";
22903 let isExtendable = 1;
22904 let opExtendable = 1;
22905 let isExtentSigned = 0;
22906 let opExtentBits = 6;
22907 let opExtentAlign = 0;
22908 }
22909 def S4_pstorerdt_rr : HInst<
22910 (outs),
22911 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, DoubleRegs:$Rtt32),
22912 "if ($Pv4) memd($Rs32+$Ru32<<#$Ii) = $Rtt32",
22913 tc_3962fa26, TypeST>, Enc_1a9974, AddrModeRel {
22914 let Inst{31-21} = 0b00110100110;
22915 let isPredicated = 1;
22916 let addrMode = BaseRegOffset;
22917 let accessSize = DoubleWordAccess;
22918 let mayStore = 1;
22919 let CextOpcode = "S2_storerd";
22920 let InputType = "reg";
22921 let BaseOpcode = "S2_storerd_rr";
22922 }
22923 def S4_pstorerdtnew_abs : HInst<
22924 (outs),
22925 (ins PredRegs:$Pv4, u32_0Imm:$Ii, DoubleRegs:$Rtt32),
22926 "if ($Pv4.new) memd(#$Ii) = $Rtt32",
22927 tc_da4a37ed, TypeST>, Enc_50b5ac, AddrModeRel {
22928 let Inst{2-2} = 0b0;
22929 let Inst{7-7} = 0b1;
22930 let Inst{13-13} = 0b1;
22931 let Inst{31-18} = 0b10101111110000;
22932 let isPredicated = 1;
22933 let addrMode = Absolute;
22934 let accessSize = DoubleWordAccess;
22935 let isPredicatedNew = 1;
22936 let isExtended = 1;
22937 let mayStore = 1;
22938 let CextOpcode = "S2_storerd";
22939 let BaseOpcode = "S2_storerdabs";
22940 let DecoderNamespace = "MustExtend";
22941 let isExtendable = 1;
22942 let opExtendable = 1;
22943 let isExtentSigned = 0;
22944 let opExtentBits = 6;
22945 let opExtentAlign = 0;
22946 }
22947 def S4_pstorerdtnew_io : HInst<
22948 (outs),
22949 (ins PredRegs:$Pv4, IntRegs:$Rs32, u29_3Imm:$Ii, DoubleRegs:$Rtt32),
22950 "if ($Pv4.new) memd($Rs32+#$Ii) = $Rtt32",
22951 tc_da97ee82, TypeV2LDST>, Enc_57a33e, AddrModeRel {
22952 let Inst{2-2} = 0b0;
22953 let Inst{31-21} = 0b01000010110;
22954 let isPredicated = 1;
22955 let addrMode = BaseImmOffset;
22956 let accessSize = DoubleWordAccess;
22957 let isPredicatedNew = 1;
22958 let mayStore = 1;
22959 let CextOpcode = "S2_storerd";
22960 let InputType = "imm";
22961 let BaseOpcode = "S2_storerd_io";
22962 let isExtendable = 1;
22963 let opExtendable = 2;
22964 let isExtentSigned = 0;
22965 let opExtentBits = 9;
22966 let opExtentAlign = 3;
22967 }
22968 def S4_pstorerdtnew_rr : HInst<
22969 (outs),
22970 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, DoubleRegs:$Rtt32),
22971 "if ($Pv4.new) memd($Rs32+$Ru32<<#$Ii) = $Rtt32",
22972 tc_40116ca8, TypeST>, Enc_1a9974, AddrModeRel {
22973 let Inst{31-21} = 0b00110110110;
22974 let isPredicated = 1;
22975 let addrMode = BaseRegOffset;
22976 let accessSize = DoubleWordAccess;
22977 let isPredicatedNew = 1;
22978 let mayStore = 1;
22979 let CextOpcode = "S2_storerd";
22980 let InputType = "reg";
22981 let BaseOpcode = "S2_storerd_rr";
22982 }
22983 def S4_pstorerdtnew_zomap : HInst<
22984 (outs),
22985 (ins PredRegs:$Pv4, IntRegs:$Rs32, DoubleRegs:$Rtt32),
22986 "if ($Pv4.new) memd($Rs32) = $Rtt32",
22987 tc_da97ee82, TypeMAPPING> {
22988 let isPseudo = 1;
22989 let isCodeGenOnly = 1;
22990 }
22991 def S4_pstorerff_abs : HInst<
22992 (outs),
22993 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
22994 "if (!$Pv4) memh(#$Ii) = $Rt32.h",
22995 tc_362c6592, TypeST>, Enc_1cf4ca, AddrModeRel {
22996 let Inst{2-2} = 0b1;
22997 let Inst{7-7} = 0b1;
22998 let Inst{13-13} = 0b0;
22999 let Inst{31-18} = 0b10101111011000;
23000 let isPredicated = 1;
23001 let isPredicatedFalse = 1;
23002 let addrMode = Absolute;
23003 let accessSize = HalfWordAccess;
23004 let isExtended = 1;
23005 let mayStore = 1;
23006 let CextOpcode = "S2_storerf";
23007 let BaseOpcode = "S2_storerfabs";
23008 let DecoderNamespace = "MustExtend";
23009 let isExtendable = 1;
23010 let opExtendable = 1;
23011 let isExtentSigned = 0;
23012 let opExtentBits = 6;
23013 let opExtentAlign = 0;
23014 }
23015 def S4_pstorerff_rr : HInst<
23016 (outs),
23017 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23018 "if (!$Pv4) memh($Rs32+$Ru32<<#$Ii) = $Rt32.h",
23019 tc_3962fa26, TypeST>, Enc_6339d5, AddrModeRel {
23020 let Inst{31-21} = 0b00110101011;
23021 let isPredicated = 1;
23022 let isPredicatedFalse = 1;
23023 let addrMode = BaseRegOffset;
23024 let accessSize = HalfWordAccess;
23025 let mayStore = 1;
23026 let CextOpcode = "S2_storerf";
23027 let InputType = "reg";
23028 let BaseOpcode = "S4_storerf_rr";
23029 }
23030 def S4_pstorerffnew_abs : HInst<
23031 (outs),
23032 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23033 "if (!$Pv4.new) memh(#$Ii) = $Rt32.h",
23034 tc_da4a37ed, TypeST>, Enc_1cf4ca, AddrModeRel {
23035 let Inst{2-2} = 0b1;
23036 let Inst{7-7} = 0b1;
23037 let Inst{13-13} = 0b1;
23038 let Inst{31-18} = 0b10101111011000;
23039 let isPredicated = 1;
23040 let isPredicatedFalse = 1;
23041 let addrMode = Absolute;
23042 let accessSize = HalfWordAccess;
23043 let isPredicatedNew = 1;
23044 let isExtended = 1;
23045 let mayStore = 1;
23046 let CextOpcode = "S2_storerf";
23047 let BaseOpcode = "S2_storerfabs";
23048 let DecoderNamespace = "MustExtend";
23049 let isExtendable = 1;
23050 let opExtendable = 1;
23051 let isExtentSigned = 0;
23052 let opExtentBits = 6;
23053 let opExtentAlign = 0;
23054 }
23055 def S4_pstorerffnew_io : HInst<
23056 (outs),
23057 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
23058 "if (!$Pv4.new) memh($Rs32+#$Ii) = $Rt32.h",
23059 tc_da97ee82, TypeV2LDST>, Enc_e8c45e, AddrModeRel {
23060 let Inst{2-2} = 0b0;
23061 let Inst{31-21} = 0b01000110011;
23062 let isPredicated = 1;
23063 let isPredicatedFalse = 1;
23064 let addrMode = BaseImmOffset;
23065 let accessSize = HalfWordAccess;
23066 let isPredicatedNew = 1;
23067 let mayStore = 1;
23068 let CextOpcode = "S2_storerf";
23069 let InputType = "imm";
23070 let BaseOpcode = "S2_storerf_io";
23071 let isExtendable = 1;
23072 let opExtendable = 2;
23073 let isExtentSigned = 0;
23074 let opExtentBits = 7;
23075 let opExtentAlign = 1;
23076 }
23077 def S4_pstorerffnew_rr : HInst<
23078 (outs),
23079 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23080 "if (!$Pv4.new) memh($Rs32+$Ru32<<#$Ii) = $Rt32.h",
23081 tc_40116ca8, TypeST>, Enc_6339d5, AddrModeRel {
23082 let Inst{31-21} = 0b00110111011;
23083 let isPredicated = 1;
23084 let isPredicatedFalse = 1;
23085 let addrMode = BaseRegOffset;
23086 let accessSize = HalfWordAccess;
23087 let isPredicatedNew = 1;
23088 let mayStore = 1;
23089 let CextOpcode = "S2_storerf";
23090 let InputType = "reg";
23091 let BaseOpcode = "S4_storerf_rr";
23092 }
23093 def S4_pstorerffnew_zomap : HInst<
23094 (outs),
23095 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
23096 "if (!$Pv4.new) memh($Rs32) = $Rt32.h",
23097 tc_da97ee82, TypeMAPPING> {
23098 let isPseudo = 1;
23099 let isCodeGenOnly = 1;
23100 }
23101 def S4_pstorerft_abs : HInst<
23102 (outs),
23103 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23104 "if ($Pv4) memh(#$Ii) = $Rt32.h",
23105 tc_362c6592, TypeST>, Enc_1cf4ca, AddrModeRel {
23106 let Inst{2-2} = 0b0;
23107 let Inst{7-7} = 0b1;
23108 let Inst{13-13} = 0b0;
23109 let Inst{31-18} = 0b10101111011000;
23110 let isPredicated = 1;
23111 let addrMode = Absolute;
23112 let accessSize = HalfWordAccess;
23113 let isExtended = 1;
23114 let mayStore = 1;
23115 let CextOpcode = "S2_storerf";
23116 let BaseOpcode = "S2_storerfabs";
23117 let DecoderNamespace = "MustExtend";
23118 let isExtendable = 1;
23119 let opExtendable = 1;
23120 let isExtentSigned = 0;
23121 let opExtentBits = 6;
23122 let opExtentAlign = 0;
23123 }
23124 def S4_pstorerft_rr : HInst<
23125 (outs),
23126 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23127 "if ($Pv4) memh($Rs32+$Ru32<<#$Ii) = $Rt32.h",
23128 tc_3962fa26, TypeST>, Enc_6339d5, AddrModeRel {
23129 let Inst{31-21} = 0b00110100011;
23130 let isPredicated = 1;
23131 let addrMode = BaseRegOffset;
23132 let accessSize = HalfWordAccess;
23133 let mayStore = 1;
23134 let CextOpcode = "S2_storerf";
23135 let InputType = "reg";
23136 let BaseOpcode = "S4_storerf_rr";
23137 }
23138 def S4_pstorerftnew_abs : HInst<
23139 (outs),
23140 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23141 "if ($Pv4.new) memh(#$Ii) = $Rt32.h",
23142 tc_da4a37ed, TypeST>, Enc_1cf4ca, AddrModeRel {
23143 let Inst{2-2} = 0b0;
23144 let Inst{7-7} = 0b1;
23145 let Inst{13-13} = 0b1;
23146 let Inst{31-18} = 0b10101111011000;
23147 let isPredicated = 1;
23148 let addrMode = Absolute;
23149 let accessSize = HalfWordAccess;
23150 let isPredicatedNew = 1;
23151 let isExtended = 1;
23152 let mayStore = 1;
23153 let CextOpcode = "S2_storerf";
23154 let BaseOpcode = "S2_storerfabs";
23155 let DecoderNamespace = "MustExtend";
23156 let isExtendable = 1;
23157 let opExtendable = 1;
23158 let isExtentSigned = 0;
23159 let opExtentBits = 6;
23160 let opExtentAlign = 0;
23161 }
23162 def S4_pstorerftnew_io : HInst<
23163 (outs),
23164 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
23165 "if ($Pv4.new) memh($Rs32+#$Ii) = $Rt32.h",
23166 tc_da97ee82, TypeV2LDST>, Enc_e8c45e, AddrModeRel {
23167 let Inst{2-2} = 0b0;
23168 let Inst{31-21} = 0b01000010011;
23169 let isPredicated = 1;
23170 let addrMode = BaseImmOffset;
23171 let accessSize = HalfWordAccess;
23172 let isPredicatedNew = 1;
23173 let mayStore = 1;
23174 let CextOpcode = "S2_storerf";
23175 let InputType = "imm";
23176 let BaseOpcode = "S2_storerf_io";
23177 let isExtendable = 1;
23178 let opExtendable = 2;
23179 let isExtentSigned = 0;
23180 let opExtentBits = 7;
23181 let opExtentAlign = 1;
23182 }
23183 def S4_pstorerftnew_rr : HInst<
23184 (outs),
23185 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23186 "if ($Pv4.new) memh($Rs32+$Ru32<<#$Ii) = $Rt32.h",
23187 tc_40116ca8, TypeST>, Enc_6339d5, AddrModeRel {
23188 let Inst{31-21} = 0b00110110011;
23189 let isPredicated = 1;
23190 let addrMode = BaseRegOffset;
23191 let accessSize = HalfWordAccess;
23192 let isPredicatedNew = 1;
23193 let mayStore = 1;
23194 let CextOpcode = "S2_storerf";
23195 let InputType = "reg";
23196 let BaseOpcode = "S4_storerf_rr";
23197 }
23198 def S4_pstorerftnew_zomap : HInst<
23199 (outs),
23200 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
23201 "if ($Pv4.new) memh($Rs32) = $Rt32.h",
23202 tc_da97ee82, TypeMAPPING> {
23203 let isPseudo = 1;
23204 let isCodeGenOnly = 1;
23205 }
23206 def S4_pstorerhf_abs : HInst<
23207 (outs),
23208 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23209 "if (!$Pv4) memh(#$Ii) = $Rt32",
23210 tc_362c6592, TypeST>, Enc_1cf4ca, AddrModeRel {
23211 let Inst{2-2} = 0b1;
23212 let Inst{7-7} = 0b1;
23213 let Inst{13-13} = 0b0;
23214 let Inst{31-18} = 0b10101111010000;
23215 let isPredicated = 1;
23216 let isPredicatedFalse = 1;
23217 let addrMode = Absolute;
23218 let accessSize = HalfWordAccess;
23219 let isExtended = 1;
23220 let mayStore = 1;
23221 let CextOpcode = "S2_storerh";
23222 let BaseOpcode = "S2_storerhabs";
23223 let isNVStorable = 1;
23224 let DecoderNamespace = "MustExtend";
23225 let isExtendable = 1;
23226 let opExtendable = 1;
23227 let isExtentSigned = 0;
23228 let opExtentBits = 6;
23229 let opExtentAlign = 0;
23230 }
23231 def S4_pstorerhf_rr : HInst<
23232 (outs),
23233 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23234 "if (!$Pv4) memh($Rs32+$Ru32<<#$Ii) = $Rt32",
23235 tc_3962fa26, TypeST>, Enc_6339d5, AddrModeRel {
23236 let Inst{31-21} = 0b00110101010;
23237 let isPredicated = 1;
23238 let isPredicatedFalse = 1;
23239 let addrMode = BaseRegOffset;
23240 let accessSize = HalfWordAccess;
23241 let mayStore = 1;
23242 let CextOpcode = "S2_storerh";
23243 let InputType = "reg";
23244 let BaseOpcode = "S2_storerh_rr";
23245 let isNVStorable = 1;
23246 }
23247 def S4_pstorerhfnew_abs : HInst<
23248 (outs),
23249 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23250 "if (!$Pv4.new) memh(#$Ii) = $Rt32",
23251 tc_da4a37ed, TypeST>, Enc_1cf4ca, AddrModeRel {
23252 let Inst{2-2} = 0b1;
23253 let Inst{7-7} = 0b1;
23254 let Inst{13-13} = 0b1;
23255 let Inst{31-18} = 0b10101111010000;
23256 let isPredicated = 1;
23257 let isPredicatedFalse = 1;
23258 let addrMode = Absolute;
23259 let accessSize = HalfWordAccess;
23260 let isPredicatedNew = 1;
23261 let isExtended = 1;
23262 let mayStore = 1;
23263 let CextOpcode = "S2_storerh";
23264 let BaseOpcode = "S2_storerhabs";
23265 let isNVStorable = 1;
23266 let DecoderNamespace = "MustExtend";
23267 let isExtendable = 1;
23268 let opExtendable = 1;
23269 let isExtentSigned = 0;
23270 let opExtentBits = 6;
23271 let opExtentAlign = 0;
23272 }
23273 def S4_pstorerhfnew_io : HInst<
23274 (outs),
23275 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
23276 "if (!$Pv4.new) memh($Rs32+#$Ii) = $Rt32",
23277 tc_da97ee82, TypeV2LDST>, Enc_e8c45e, AddrModeRel {
23278 let Inst{2-2} = 0b0;
23279 let Inst{31-21} = 0b01000110010;
23280 let isPredicated = 1;
23281 let isPredicatedFalse = 1;
23282 let addrMode = BaseImmOffset;
23283 let accessSize = HalfWordAccess;
23284 let isPredicatedNew = 1;
23285 let mayStore = 1;
23286 let CextOpcode = "S2_storerh";
23287 let InputType = "imm";
23288 let BaseOpcode = "S2_storerh_io";
23289 let isNVStorable = 1;
23290 let isExtendable = 1;
23291 let opExtendable = 2;
23292 let isExtentSigned = 0;
23293 let opExtentBits = 7;
23294 let opExtentAlign = 1;
23295 }
23296 def S4_pstorerhfnew_rr : HInst<
23297 (outs),
23298 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23299 "if (!$Pv4.new) memh($Rs32+$Ru32<<#$Ii) = $Rt32",
23300 tc_40116ca8, TypeST>, Enc_6339d5, AddrModeRel {
23301 let Inst{31-21} = 0b00110111010;
23302 let isPredicated = 1;
23303 let isPredicatedFalse = 1;
23304 let addrMode = BaseRegOffset;
23305 let accessSize = HalfWordAccess;
23306 let isPredicatedNew = 1;
23307 let mayStore = 1;
23308 let CextOpcode = "S2_storerh";
23309 let InputType = "reg";
23310 let BaseOpcode = "S2_storerh_rr";
23311 let isNVStorable = 1;
23312 }
23313 def S4_pstorerhfnew_zomap : HInst<
23314 (outs),
23315 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
23316 "if (!$Pv4.new) memh($Rs32) = $Rt32",
23317 tc_da97ee82, TypeMAPPING> {
23318 let isPseudo = 1;
23319 let isCodeGenOnly = 1;
23320 }
23321 def S4_pstorerhnewf_abs : HInst<
23322 (outs),
23323 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
23324 "if (!$Pv4) memh(#$Ii) = $Nt8.new",
23325 tc_4b68bce4, TypeST>, Enc_44215c, AddrModeRel {
23326 let Inst{2-2} = 0b1;
23327 let Inst{7-7} = 0b1;
23328 let Inst{13-11} = 0b001;
23329 let Inst{31-18} = 0b10101111101000;
23330 let isPredicated = 1;
23331 let isPredicatedFalse = 1;
23332 let addrMode = Absolute;
23333 let accessSize = HalfWordAccess;
23334 let isNVStore = 1;
23335 let isNewValue = 1;
23336 let isExtended = 1;
23337 let isRestrictNoSlot1Store = 1;
23338 let mayStore = 1;
23339 let CextOpcode = "S2_storerh";
23340 let BaseOpcode = "S2_storerhabs";
23341 let DecoderNamespace = "MustExtend";
23342 let isExtendable = 1;
23343 let opExtendable = 1;
23344 let isExtentSigned = 0;
23345 let opExtentBits = 6;
23346 let opExtentAlign = 0;
23347 let opNewValue = 2;
23348 }
23349 def S4_pstorerhnewf_rr : HInst<
23350 (outs),
23351 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
23352 "if (!$Pv4) memh($Rs32+$Ru32<<#$Ii) = $Nt8.new",
23353 tc_e95795ec, TypeST>, Enc_47ee5e, AddrModeRel {
23354 let Inst{4-3} = 0b01;
23355 let Inst{31-21} = 0b00110101101;
23356 let isPredicated = 1;
23357 let isPredicatedFalse = 1;
23358 let addrMode = BaseRegOffset;
23359 let accessSize = HalfWordAccess;
23360 let isNVStore = 1;
23361 let isNewValue = 1;
23362 let isRestrictNoSlot1Store = 1;
23363 let mayStore = 1;
23364 let CextOpcode = "S2_storerh";
23365 let InputType = "reg";
23366 let BaseOpcode = "S2_storerh_rr";
23367 let opNewValue = 4;
23368 }
23369 def S4_pstorerhnewfnew_abs : HInst<
23370 (outs),
23371 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
23372 "if (!$Pv4.new) memh(#$Ii) = $Nt8.new",
23373 tc_d2e63d61, TypeST>, Enc_44215c, AddrModeRel {
23374 let Inst{2-2} = 0b1;
23375 let Inst{7-7} = 0b1;
23376 let Inst{13-11} = 0b101;
23377 let Inst{31-18} = 0b10101111101000;
23378 let isPredicated = 1;
23379 let isPredicatedFalse = 1;
23380 let addrMode = Absolute;
23381 let accessSize = HalfWordAccess;
23382 let isNVStore = 1;
23383 let isPredicatedNew = 1;
23384 let isNewValue = 1;
23385 let isExtended = 1;
23386 let isRestrictNoSlot1Store = 1;
23387 let mayStore = 1;
23388 let CextOpcode = "S2_storerh";
23389 let BaseOpcode = "S2_storerhabs";
23390 let DecoderNamespace = "MustExtend";
23391 let isExtendable = 1;
23392 let opExtendable = 1;
23393 let isExtentSigned = 0;
23394 let opExtentBits = 6;
23395 let opExtentAlign = 0;
23396 let opNewValue = 2;
23397 }
23398 def S4_pstorerhnewfnew_io : HInst<
23399 (outs),
23400 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Nt8),
23401 "if (!$Pv4.new) memh($Rs32+#$Ii) = $Nt8.new",
23402 tc_c79a189f, TypeV2LDST>, Enc_f44229, AddrModeRel {
23403 let Inst{2-2} = 0b0;
23404 let Inst{12-11} = 0b01;
23405 let Inst{31-21} = 0b01000110101;
23406 let isPredicated = 1;
23407 let isPredicatedFalse = 1;
23408 let addrMode = BaseImmOffset;
23409 let accessSize = HalfWordAccess;
23410 let isNVStore = 1;
23411 let isPredicatedNew = 1;
23412 let isNewValue = 1;
23413 let isRestrictNoSlot1Store = 1;
23414 let mayStore = 1;
23415 let CextOpcode = "S2_storerh";
23416 let InputType = "imm";
23417 let BaseOpcode = "S2_storerh_io";
23418 let isExtendable = 1;
23419 let opExtendable = 2;
23420 let isExtentSigned = 0;
23421 let opExtentBits = 7;
23422 let opExtentAlign = 1;
23423 let opNewValue = 3;
23424 }
23425 def S4_pstorerhnewfnew_rr : HInst<
23426 (outs),
23427 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
23428 "if (!$Pv4.new) memh($Rs32+$Ru32<<#$Ii) = $Nt8.new",
23429 tc_b90a29b1, TypeST>, Enc_47ee5e, AddrModeRel {
23430 let Inst{4-3} = 0b01;
23431 let Inst{31-21} = 0b00110111101;
23432 let isPredicated = 1;
23433 let isPredicatedFalse = 1;
23434 let addrMode = BaseRegOffset;
23435 let accessSize = HalfWordAccess;
23436 let isNVStore = 1;
23437 let isPredicatedNew = 1;
23438 let isNewValue = 1;
23439 let isRestrictNoSlot1Store = 1;
23440 let mayStore = 1;
23441 let CextOpcode = "S2_storerh";
23442 let InputType = "reg";
23443 let BaseOpcode = "S2_storerh_rr";
23444 let opNewValue = 4;
23445 }
23446 def S4_pstorerhnewfnew_zomap : HInst<
23447 (outs),
23448 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
23449 "if (!$Pv4.new) memh($Rs32) = $Nt8.new",
23450 tc_c79a189f, TypeMAPPING> {
23451 let isPseudo = 1;
23452 let isCodeGenOnly = 1;
23453 let opNewValue = 2;
23454 }
23455 def S4_pstorerhnewt_abs : HInst<
23456 (outs),
23457 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
23458 "if ($Pv4) memh(#$Ii) = $Nt8.new",
23459 tc_4b68bce4, TypeST>, Enc_44215c, AddrModeRel {
23460 let Inst{2-2} = 0b0;
23461 let Inst{7-7} = 0b1;
23462 let Inst{13-11} = 0b001;
23463 let Inst{31-18} = 0b10101111101000;
23464 let isPredicated = 1;
23465 let addrMode = Absolute;
23466 let accessSize = HalfWordAccess;
23467 let isNVStore = 1;
23468 let isNewValue = 1;
23469 let isExtended = 1;
23470 let isRestrictNoSlot1Store = 1;
23471 let mayStore = 1;
23472 let CextOpcode = "S2_storerh";
23473 let BaseOpcode = "S2_storerhabs";
23474 let DecoderNamespace = "MustExtend";
23475 let isExtendable = 1;
23476 let opExtendable = 1;
23477 let isExtentSigned = 0;
23478 let opExtentBits = 6;
23479 let opExtentAlign = 0;
23480 let opNewValue = 2;
23481 }
23482 def S4_pstorerhnewt_rr : HInst<
23483 (outs),
23484 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
23485 "if ($Pv4) memh($Rs32+$Ru32<<#$Ii) = $Nt8.new",
23486 tc_e95795ec, TypeST>, Enc_47ee5e, AddrModeRel {
23487 let Inst{4-3} = 0b01;
23488 let Inst{31-21} = 0b00110100101;
23489 let isPredicated = 1;
23490 let addrMode = BaseRegOffset;
23491 let accessSize = HalfWordAccess;
23492 let isNVStore = 1;
23493 let isNewValue = 1;
23494 let isRestrictNoSlot1Store = 1;
23495 let mayStore = 1;
23496 let CextOpcode = "S2_storerh";
23497 let InputType = "reg";
23498 let BaseOpcode = "S2_storerh_rr";
23499 let opNewValue = 4;
23500 }
23501 def S4_pstorerhnewtnew_abs : HInst<
23502 (outs),
23503 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
23504 "if ($Pv4.new) memh(#$Ii) = $Nt8.new",
23505 tc_d2e63d61, TypeST>, Enc_44215c, AddrModeRel {
23506 let Inst{2-2} = 0b0;
23507 let Inst{7-7} = 0b1;
23508 let Inst{13-11} = 0b101;
23509 let Inst{31-18} = 0b10101111101000;
23510 let isPredicated = 1;
23511 let addrMode = Absolute;
23512 let accessSize = HalfWordAccess;
23513 let isNVStore = 1;
23514 let isPredicatedNew = 1;
23515 let isNewValue = 1;
23516 let isExtended = 1;
23517 let isRestrictNoSlot1Store = 1;
23518 let mayStore = 1;
23519 let CextOpcode = "S2_storerh";
23520 let BaseOpcode = "S2_storerhabs";
23521 let DecoderNamespace = "MustExtend";
23522 let isExtendable = 1;
23523 let opExtendable = 1;
23524 let isExtentSigned = 0;
23525 let opExtentBits = 6;
23526 let opExtentAlign = 0;
23527 let opNewValue = 2;
23528 }
23529 def S4_pstorerhnewtnew_io : HInst<
23530 (outs),
23531 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Nt8),
23532 "if ($Pv4.new) memh($Rs32+#$Ii) = $Nt8.new",
23533 tc_c79a189f, TypeV2LDST>, Enc_f44229, AddrModeRel {
23534 let Inst{2-2} = 0b0;
23535 let Inst{12-11} = 0b01;
23536 let Inst{31-21} = 0b01000010101;
23537 let isPredicated = 1;
23538 let addrMode = BaseImmOffset;
23539 let accessSize = HalfWordAccess;
23540 let isNVStore = 1;
23541 let isPredicatedNew = 1;
23542 let isNewValue = 1;
23543 let isRestrictNoSlot1Store = 1;
23544 let mayStore = 1;
23545 let CextOpcode = "S2_storerh";
23546 let InputType = "imm";
23547 let BaseOpcode = "S2_storerh_io";
23548 let isExtendable = 1;
23549 let opExtendable = 2;
23550 let isExtentSigned = 0;
23551 let opExtentBits = 7;
23552 let opExtentAlign = 1;
23553 let opNewValue = 3;
23554 }
23555 def S4_pstorerhnewtnew_rr : HInst<
23556 (outs),
23557 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
23558 "if ($Pv4.new) memh($Rs32+$Ru32<<#$Ii) = $Nt8.new",
23559 tc_b90a29b1, TypeST>, Enc_47ee5e, AddrModeRel {
23560 let Inst{4-3} = 0b01;
23561 let Inst{31-21} = 0b00110110101;
23562 let isPredicated = 1;
23563 let addrMode = BaseRegOffset;
23564 let accessSize = HalfWordAccess;
23565 let isNVStore = 1;
23566 let isPredicatedNew = 1;
23567 let isNewValue = 1;
23568 let isRestrictNoSlot1Store = 1;
23569 let mayStore = 1;
23570 let CextOpcode = "S2_storerh";
23571 let InputType = "reg";
23572 let BaseOpcode = "S2_storerh_rr";
23573 let opNewValue = 4;
23574 }
23575 def S4_pstorerhnewtnew_zomap : HInst<
23576 (outs),
23577 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
23578 "if ($Pv4.new) memh($Rs32) = $Nt8.new",
23579 tc_c79a189f, TypeMAPPING> {
23580 let isPseudo = 1;
23581 let isCodeGenOnly = 1;
23582 let opNewValue = 2;
23583 }
23584 def S4_pstorerht_abs : HInst<
23585 (outs),
23586 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23587 "if ($Pv4) memh(#$Ii) = $Rt32",
23588 tc_362c6592, TypeST>, Enc_1cf4ca, AddrModeRel {
23589 let Inst{2-2} = 0b0;
23590 let Inst{7-7} = 0b1;
23591 let Inst{13-13} = 0b0;
23592 let Inst{31-18} = 0b10101111010000;
23593 let isPredicated = 1;
23594 let addrMode = Absolute;
23595 let accessSize = HalfWordAccess;
23596 let isExtended = 1;
23597 let mayStore = 1;
23598 let CextOpcode = "S2_storerh";
23599 let BaseOpcode = "S2_storerhabs";
23600 let isNVStorable = 1;
23601 let DecoderNamespace = "MustExtend";
23602 let isExtendable = 1;
23603 let opExtendable = 1;
23604 let isExtentSigned = 0;
23605 let opExtentBits = 6;
23606 let opExtentAlign = 0;
23607 }
23608 def S4_pstorerht_rr : HInst<
23609 (outs),
23610 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23611 "if ($Pv4) memh($Rs32+$Ru32<<#$Ii) = $Rt32",
23612 tc_3962fa26, TypeST>, Enc_6339d5, AddrModeRel {
23613 let Inst{31-21} = 0b00110100010;
23614 let isPredicated = 1;
23615 let addrMode = BaseRegOffset;
23616 let accessSize = HalfWordAccess;
23617 let mayStore = 1;
23618 let CextOpcode = "S2_storerh";
23619 let InputType = "reg";
23620 let BaseOpcode = "S2_storerh_rr";
23621 let isNVStorable = 1;
23622 }
23623 def S4_pstorerhtnew_abs : HInst<
23624 (outs),
23625 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23626 "if ($Pv4.new) memh(#$Ii) = $Rt32",
23627 tc_da4a37ed, TypeST>, Enc_1cf4ca, AddrModeRel {
23628 let Inst{2-2} = 0b0;
23629 let Inst{7-7} = 0b1;
23630 let Inst{13-13} = 0b1;
23631 let Inst{31-18} = 0b10101111010000;
23632 let isPredicated = 1;
23633 let addrMode = Absolute;
23634 let accessSize = HalfWordAccess;
23635 let isPredicatedNew = 1;
23636 let isExtended = 1;
23637 let mayStore = 1;
23638 let CextOpcode = "S2_storerh";
23639 let BaseOpcode = "S2_storerhabs";
23640 let isNVStorable = 1;
23641 let DecoderNamespace = "MustExtend";
23642 let isExtendable = 1;
23643 let opExtendable = 1;
23644 let isExtentSigned = 0;
23645 let opExtentBits = 6;
23646 let opExtentAlign = 0;
23647 }
23648 def S4_pstorerhtnew_io : HInst<
23649 (outs),
23650 (ins PredRegs:$Pv4, IntRegs:$Rs32, u31_1Imm:$Ii, IntRegs:$Rt32),
23651 "if ($Pv4.new) memh($Rs32+#$Ii) = $Rt32",
23652 tc_da97ee82, TypeV2LDST>, Enc_e8c45e, AddrModeRel {
23653 let Inst{2-2} = 0b0;
23654 let Inst{31-21} = 0b01000010010;
23655 let isPredicated = 1;
23656 let addrMode = BaseImmOffset;
23657 let accessSize = HalfWordAccess;
23658 let isPredicatedNew = 1;
23659 let mayStore = 1;
23660 let CextOpcode = "S2_storerh";
23661 let InputType = "imm";
23662 let BaseOpcode = "S2_storerh_io";
23663 let isNVStorable = 1;
23664 let isExtendable = 1;
23665 let opExtendable = 2;
23666 let isExtentSigned = 0;
23667 let opExtentBits = 7;
23668 let opExtentAlign = 1;
23669 }
23670 def S4_pstorerhtnew_rr : HInst<
23671 (outs),
23672 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23673 "if ($Pv4.new) memh($Rs32+$Ru32<<#$Ii) = $Rt32",
23674 tc_40116ca8, TypeST>, Enc_6339d5, AddrModeRel {
23675 let Inst{31-21} = 0b00110110010;
23676 let isPredicated = 1;
23677 let addrMode = BaseRegOffset;
23678 let accessSize = HalfWordAccess;
23679 let isPredicatedNew = 1;
23680 let mayStore = 1;
23681 let CextOpcode = "S2_storerh";
23682 let InputType = "reg";
23683 let BaseOpcode = "S2_storerh_rr";
23684 let isNVStorable = 1;
23685 }
23686 def S4_pstorerhtnew_zomap : HInst<
23687 (outs),
23688 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
23689 "if ($Pv4.new) memh($Rs32) = $Rt32",
23690 tc_da97ee82, TypeMAPPING> {
23691 let isPseudo = 1;
23692 let isCodeGenOnly = 1;
23693 }
23694 def S4_pstorerif_abs : HInst<
23695 (outs),
23696 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23697 "if (!$Pv4) memw(#$Ii) = $Rt32",
23698 tc_362c6592, TypeST>, Enc_1cf4ca, AddrModeRel {
23699 let Inst{2-2} = 0b1;
23700 let Inst{7-7} = 0b1;
23701 let Inst{13-13} = 0b0;
23702 let Inst{31-18} = 0b10101111100000;
23703 let isPredicated = 1;
23704 let isPredicatedFalse = 1;
23705 let addrMode = Absolute;
23706 let accessSize = WordAccess;
23707 let isExtended = 1;
23708 let mayStore = 1;
23709 let CextOpcode = "S2_storeri";
23710 let BaseOpcode = "S2_storeriabs";
23711 let isNVStorable = 1;
23712 let DecoderNamespace = "MustExtend";
23713 let isExtendable = 1;
23714 let opExtendable = 1;
23715 let isExtentSigned = 0;
23716 let opExtentBits = 6;
23717 let opExtentAlign = 0;
23718 }
23719 def S4_pstorerif_rr : HInst<
23720 (outs),
23721 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23722 "if (!$Pv4) memw($Rs32+$Ru32<<#$Ii) = $Rt32",
23723 tc_3962fa26, TypeST>, Enc_6339d5, AddrModeRel {
23724 let Inst{31-21} = 0b00110101100;
23725 let isPredicated = 1;
23726 let isPredicatedFalse = 1;
23727 let addrMode = BaseRegOffset;
23728 let accessSize = WordAccess;
23729 let mayStore = 1;
23730 let CextOpcode = "S2_storeri";
23731 let InputType = "reg";
23732 let BaseOpcode = "S2_storeri_rr";
23733 let isNVStorable = 1;
23734 }
23735 def S4_pstorerifnew_abs : HInst<
23736 (outs),
23737 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
23738 "if (!$Pv4.new) memw(#$Ii) = $Rt32",
23739 tc_da4a37ed, TypeST>, Enc_1cf4ca, AddrModeRel {
23740 let Inst{2-2} = 0b1;
23741 let Inst{7-7} = 0b1;
23742 let Inst{13-13} = 0b1;
23743 let Inst{31-18} = 0b10101111100000;
23744 let isPredicated = 1;
23745 let isPredicatedFalse = 1;
23746 let addrMode = Absolute;
23747 let accessSize = WordAccess;
23748 let isPredicatedNew = 1;
23749 let isExtended = 1;
23750 let mayStore = 1;
23751 let CextOpcode = "S2_storeri";
23752 let BaseOpcode = "S2_storeriabs";
23753 let isNVStorable = 1;
23754 let DecoderNamespace = "MustExtend";
23755 let isExtendable = 1;
23756 let opExtendable = 1;
23757 let isExtentSigned = 0;
23758 let opExtentBits = 6;
23759 let opExtentAlign = 0;
23760 }
23761 def S4_pstorerifnew_io : HInst<
23762 (outs),
23763 (ins PredRegs:$Pv4, IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Rt32),
23764 "if (!$Pv4.new) memw($Rs32+#$Ii) = $Rt32",
23765 tc_da97ee82, TypeV2LDST>, Enc_397f23, AddrModeRel {
23766 let Inst{2-2} = 0b0;
23767 let Inst{31-21} = 0b01000110100;
23768 let isPredicated = 1;
23769 let isPredicatedFalse = 1;
23770 let addrMode = BaseImmOffset;
23771 let accessSize = WordAccess;
23772 let isPredicatedNew = 1;
23773 let mayStore = 1;
23774 let CextOpcode = "S2_storeri";
23775 let InputType = "imm";
23776 let BaseOpcode = "S2_storeri_io";
23777 let isNVStorable = 1;
23778 let isExtendable = 1;
23779 let opExtendable = 2;
23780 let isExtentSigned = 0;
23781 let opExtentBits = 8;
23782 let opExtentAlign = 2;
23783 }
23784 def S4_pstorerifnew_rr : HInst<
23785 (outs),
23786 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
23787 "if (!$Pv4.new) memw($Rs32+$Ru32<<#$Ii) = $Rt32",
23788 tc_40116ca8, TypeST>, Enc_6339d5, AddrModeRel {
23789 let Inst{31-21} = 0b00110111100;
23790 let isPredicated = 1;
23791 let isPredicatedFalse = 1;
23792 let addrMode = BaseRegOffset;
23793 let accessSize = WordAccess;
23794 let isPredicatedNew = 1;
23795 let mayStore = 1;
23796 let CextOpcode = "S2_storeri";
23797 let InputType = "reg";
23798 let BaseOpcode = "S2_storeri_rr";
23799 let isNVStorable = 1;
23800 }
23801 def S4_pstorerifnew_zomap : HInst<
23802 (outs),
23803 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
23804 "if (!$Pv4.new) memw($Rs32) = $Rt32",
23805 tc_da97ee82, TypeMAPPING> {
23806 let isPseudo = 1;
23807 let isCodeGenOnly = 1;
23808 }
23809 def S4_pstorerinewf_abs : HInst<
23810 (outs),
23811 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
23812 "if (!$Pv4) memw(#$Ii) = $Nt8.new",
23813 tc_4b68bce4, TypeST>, Enc_44215c, AddrModeRel {
23814 let Inst{2-2} = 0b1;
23815 let Inst{7-7} = 0b1;
23816 let Inst{13-11} = 0b010;
23817 let Inst{31-18} = 0b10101111101000;
23818 let isPredicated = 1;
23819 let isPredicatedFalse = 1;
23820 let addrMode = Absolute;
23821 let accessSize = WordAccess;
23822 let isNVStore = 1;
23823 let isNewValue = 1;
23824 let isExtended = 1;
23825 let isRestrictNoSlot1Store = 1;
23826 let mayStore = 1;
23827 let CextOpcode = "S2_storeri";
23828 let BaseOpcode = "S2_storeriabs";
23829 let DecoderNamespace = "MustExtend";
23830 let isExtendable = 1;
23831 let opExtendable = 1;
23832 let isExtentSigned = 0;
23833 let opExtentBits = 6;
23834 let opExtentAlign = 0;
23835 let opNewValue = 2;
23836 }
23837 def S4_pstorerinewf_rr : HInst<
23838 (outs),
23839 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
23840 "if (!$Pv4) memw($Rs32+$Ru32<<#$Ii) = $Nt8.new",
23841 tc_e95795ec, TypeST>, Enc_47ee5e, AddrModeRel {
23842 let Inst{4-3} = 0b10;
23843 let Inst{31-21} = 0b00110101101;
23844 let isPredicated = 1;
23845 let isPredicatedFalse = 1;
23846 let addrMode = BaseRegOffset;
23847 let accessSize = WordAccess;
23848 let isNVStore = 1;
23849 let isNewValue = 1;
23850 let isRestrictNoSlot1Store = 1;
23851 let mayStore = 1;
23852 let CextOpcode = "S2_storeri";
23853 let InputType = "reg";
23854 let BaseOpcode = "S2_storeri_rr";
23855 let opNewValue = 4;
23856 }
23857 def S4_pstorerinewfnew_abs : HInst<
23858 (outs),
23859 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
23860 "if (!$Pv4.new) memw(#$Ii) = $Nt8.new",
23861 tc_d2e63d61, TypeST>, Enc_44215c, AddrModeRel {
23862 let Inst{2-2} = 0b1;
23863 let Inst{7-7} = 0b1;
23864 let Inst{13-11} = 0b110;
23865 let Inst{31-18} = 0b10101111101000;
23866 let isPredicated = 1;
23867 let isPredicatedFalse = 1;
23868 let addrMode = Absolute;
23869 let accessSize = WordAccess;
23870 let isNVStore = 1;
23871 let isPredicatedNew = 1;
23872 let isNewValue = 1;
23873 let isExtended = 1;
23874 let isRestrictNoSlot1Store = 1;
23875 let mayStore = 1;
23876 let CextOpcode = "S2_storeri";
23877 let BaseOpcode = "S2_storeriabs";
23878 let DecoderNamespace = "MustExtend";
23879 let isExtendable = 1;
23880 let opExtendable = 1;
23881 let isExtentSigned = 0;
23882 let opExtentBits = 6;
23883 let opExtentAlign = 0;
23884 let opNewValue = 2;
23885 }
23886 def S4_pstorerinewfnew_io : HInst<
23887 (outs),
23888 (ins PredRegs:$Pv4, IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Nt8),
23889 "if (!$Pv4.new) memw($Rs32+#$Ii) = $Nt8.new",
23890 tc_c79a189f, TypeV2LDST>, Enc_8dbdfe, AddrModeRel {
23891 let Inst{2-2} = 0b0;
23892 let Inst{12-11} = 0b10;
23893 let Inst{31-21} = 0b01000110101;
23894 let isPredicated = 1;
23895 let isPredicatedFalse = 1;
23896 let addrMode = BaseImmOffset;
23897 let accessSize = WordAccess;
23898 let isNVStore = 1;
23899 let isPredicatedNew = 1;
23900 let isNewValue = 1;
23901 let isRestrictNoSlot1Store = 1;
23902 let mayStore = 1;
23903 let CextOpcode = "S2_storeri";
23904 let InputType = "imm";
23905 let BaseOpcode = "S2_storeri_io";
23906 let isExtendable = 1;
23907 let opExtendable = 2;
23908 let isExtentSigned = 0;
23909 let opExtentBits = 8;
23910 let opExtentAlign = 2;
23911 let opNewValue = 3;
23912 }
23913 def S4_pstorerinewfnew_rr : HInst<
23914 (outs),
23915 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
23916 "if (!$Pv4.new) memw($Rs32+$Ru32<<#$Ii) = $Nt8.new",
23917 tc_b90a29b1, TypeST>, Enc_47ee5e, AddrModeRel {
23918 let Inst{4-3} = 0b10;
23919 let Inst{31-21} = 0b00110111101;
23920 let isPredicated = 1;
23921 let isPredicatedFalse = 1;
23922 let addrMode = BaseRegOffset;
23923 let accessSize = WordAccess;
23924 let isNVStore = 1;
23925 let isPredicatedNew = 1;
23926 let isNewValue = 1;
23927 let isRestrictNoSlot1Store = 1;
23928 let mayStore = 1;
23929 let CextOpcode = "S2_storeri";
23930 let InputType = "reg";
23931 let BaseOpcode = "S2_storeri_rr";
23932 let opNewValue = 4;
23933 }
23934 def S4_pstorerinewfnew_zomap : HInst<
23935 (outs),
23936 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
23937 "if (!$Pv4.new) memw($Rs32) = $Nt8.new",
23938 tc_c79a189f, TypeMAPPING> {
23939 let isPseudo = 1;
23940 let isCodeGenOnly = 1;
23941 let opNewValue = 2;
23942 }
23943 def S4_pstorerinewt_abs : HInst<
23944 (outs),
23945 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
23946 "if ($Pv4) memw(#$Ii) = $Nt8.new",
23947 tc_4b68bce4, TypeST>, Enc_44215c, AddrModeRel {
23948 let Inst{2-2} = 0b0;
23949 let Inst{7-7} = 0b1;
23950 let Inst{13-11} = 0b010;
23951 let Inst{31-18} = 0b10101111101000;
23952 let isPredicated = 1;
23953 let addrMode = Absolute;
23954 let accessSize = WordAccess;
23955 let isNVStore = 1;
23956 let isNewValue = 1;
23957 let isExtended = 1;
23958 let isRestrictNoSlot1Store = 1;
23959 let mayStore = 1;
23960 let CextOpcode = "S2_storeri";
23961 let BaseOpcode = "S2_storeriabs";
23962 let DecoderNamespace = "MustExtend";
23963 let isExtendable = 1;
23964 let opExtendable = 1;
23965 let isExtentSigned = 0;
23966 let opExtentBits = 6;
23967 let opExtentAlign = 0;
23968 let opNewValue = 2;
23969 }
23970 def S4_pstorerinewt_rr : HInst<
23971 (outs),
23972 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
23973 "if ($Pv4) memw($Rs32+$Ru32<<#$Ii) = $Nt8.new",
23974 tc_e95795ec, TypeST>, Enc_47ee5e, AddrModeRel {
23975 let Inst{4-3} = 0b10;
23976 let Inst{31-21} = 0b00110100101;
23977 let isPredicated = 1;
23978 let addrMode = BaseRegOffset;
23979 let accessSize = WordAccess;
23980 let isNVStore = 1;
23981 let isNewValue = 1;
23982 let isRestrictNoSlot1Store = 1;
23983 let mayStore = 1;
23984 let CextOpcode = "S2_storeri";
23985 let InputType = "reg";
23986 let BaseOpcode = "S2_storeri_rr";
23987 let opNewValue = 4;
23988 }
23989 def S4_pstorerinewtnew_abs : HInst<
23990 (outs),
23991 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Nt8),
23992 "if ($Pv4.new) memw(#$Ii) = $Nt8.new",
23993 tc_d2e63d61, TypeST>, Enc_44215c, AddrModeRel {
23994 let Inst{2-2} = 0b0;
23995 let Inst{7-7} = 0b1;
23996 let Inst{13-11} = 0b110;
23997 let Inst{31-18} = 0b10101111101000;
23998 let isPredicated = 1;
23999 let addrMode = Absolute;
24000 let accessSize = WordAccess;
24001 let isNVStore = 1;
24002 let isPredicatedNew = 1;
24003 let isNewValue = 1;
24004 let isExtended = 1;
24005 let isRestrictNoSlot1Store = 1;
24006 let mayStore = 1;
24007 let CextOpcode = "S2_storeri";
24008 let BaseOpcode = "S2_storeriabs";
24009 let DecoderNamespace = "MustExtend";
24010 let isExtendable = 1;
24011 let opExtendable = 1;
24012 let isExtentSigned = 0;
24013 let opExtentBits = 6;
24014 let opExtentAlign = 0;
24015 let opNewValue = 2;
24016 }
24017 def S4_pstorerinewtnew_io : HInst<
24018 (outs),
24019 (ins PredRegs:$Pv4, IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Nt8),
24020 "if ($Pv4.new) memw($Rs32+#$Ii) = $Nt8.new",
24021 tc_c79a189f, TypeV2LDST>, Enc_8dbdfe, AddrModeRel {
24022 let Inst{2-2} = 0b0;
24023 let Inst{12-11} = 0b10;
24024 let Inst{31-21} = 0b01000010101;
24025 let isPredicated = 1;
24026 let addrMode = BaseImmOffset;
24027 let accessSize = WordAccess;
24028 let isNVStore = 1;
24029 let isPredicatedNew = 1;
24030 let isNewValue = 1;
24031 let isRestrictNoSlot1Store = 1;
24032 let mayStore = 1;
24033 let CextOpcode = "S2_storeri";
24034 let InputType = "imm";
24035 let BaseOpcode = "S2_storeri_io";
24036 let isExtendable = 1;
24037 let opExtendable = 2;
24038 let isExtentSigned = 0;
24039 let opExtentBits = 8;
24040 let opExtentAlign = 2;
24041 let opNewValue = 3;
24042 }
24043 def S4_pstorerinewtnew_rr : HInst<
24044 (outs),
24045 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
24046 "if ($Pv4.new) memw($Rs32+$Ru32<<#$Ii) = $Nt8.new",
24047 tc_b90a29b1, TypeST>, Enc_47ee5e, AddrModeRel {
24048 let Inst{4-3} = 0b10;
24049 let Inst{31-21} = 0b00110110101;
24050 let isPredicated = 1;
24051 let addrMode = BaseRegOffset;
24052 let accessSize = WordAccess;
24053 let isNVStore = 1;
24054 let isPredicatedNew = 1;
24055 let isNewValue = 1;
24056 let isRestrictNoSlot1Store = 1;
24057 let mayStore = 1;
24058 let CextOpcode = "S2_storeri";
24059 let InputType = "reg";
24060 let BaseOpcode = "S2_storeri_rr";
24061 let opNewValue = 4;
24062 }
24063 def S4_pstorerinewtnew_zomap : HInst<
24064 (outs),
24065 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Nt8),
24066 "if ($Pv4.new) memw($Rs32) = $Nt8.new",
24067 tc_c79a189f, TypeMAPPING> {
24068 let isPseudo = 1;
24069 let isCodeGenOnly = 1;
24070 let opNewValue = 2;
24071 }
24072 def S4_pstorerit_abs : HInst<
24073 (outs),
24074 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
24075 "if ($Pv4) memw(#$Ii) = $Rt32",
24076 tc_362c6592, TypeST>, Enc_1cf4ca, AddrModeRel {
24077 let Inst{2-2} = 0b0;
24078 let Inst{7-7} = 0b1;
24079 let Inst{13-13} = 0b0;
24080 let Inst{31-18} = 0b10101111100000;
24081 let isPredicated = 1;
24082 let addrMode = Absolute;
24083 let accessSize = WordAccess;
24084 let isExtended = 1;
24085 let mayStore = 1;
24086 let CextOpcode = "S2_storeri";
24087 let BaseOpcode = "S2_storeriabs";
24088 let isNVStorable = 1;
24089 let DecoderNamespace = "MustExtend";
24090 let isExtendable = 1;
24091 let opExtendable = 1;
24092 let isExtentSigned = 0;
24093 let opExtentBits = 6;
24094 let opExtentAlign = 0;
24095 }
24096 def S4_pstorerit_rr : HInst<
24097 (outs),
24098 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
24099 "if ($Pv4) memw($Rs32+$Ru32<<#$Ii) = $Rt32",
24100 tc_3962fa26, TypeST>, Enc_6339d5, AddrModeRel {
24101 let Inst{31-21} = 0b00110100100;
24102 let isPredicated = 1;
24103 let addrMode = BaseRegOffset;
24104 let accessSize = WordAccess;
24105 let mayStore = 1;
24106 let CextOpcode = "S2_storeri";
24107 let InputType = "reg";
24108 let BaseOpcode = "S2_storeri_rr";
24109 let isNVStorable = 1;
24110 }
24111 def S4_pstoreritnew_abs : HInst<
24112 (outs),
24113 (ins PredRegs:$Pv4, u32_0Imm:$Ii, IntRegs:$Rt32),
24114 "if ($Pv4.new) memw(#$Ii) = $Rt32",
24115 tc_da4a37ed, TypeST>, Enc_1cf4ca, AddrModeRel {
24116 let Inst{2-2} = 0b0;
24117 let Inst{7-7} = 0b1;
24118 let Inst{13-13} = 0b1;
24119 let Inst{31-18} = 0b10101111100000;
24120 let isPredicated = 1;
24121 let addrMode = Absolute;
24122 let accessSize = WordAccess;
24123 let isPredicatedNew = 1;
24124 let isExtended = 1;
24125 let mayStore = 1;
24126 let CextOpcode = "S2_storeri";
24127 let BaseOpcode = "S2_storeriabs";
24128 let isNVStorable = 1;
24129 let DecoderNamespace = "MustExtend";
24130 let isExtendable = 1;
24131 let opExtendable = 1;
24132 let isExtentSigned = 0;
24133 let opExtentBits = 6;
24134 let opExtentAlign = 0;
24135 }
24136 def S4_pstoreritnew_io : HInst<
24137 (outs),
24138 (ins PredRegs:$Pv4, IntRegs:$Rs32, u30_2Imm:$Ii, IntRegs:$Rt32),
24139 "if ($Pv4.new) memw($Rs32+#$Ii) = $Rt32",
24140 tc_da97ee82, TypeV2LDST>, Enc_397f23, AddrModeRel {
24141 let Inst{2-2} = 0b0;
24142 let Inst{31-21} = 0b01000010100;
24143 let isPredicated = 1;
24144 let addrMode = BaseImmOffset;
24145 let accessSize = WordAccess;
24146 let isPredicatedNew = 1;
24147 let mayStore = 1;
24148 let CextOpcode = "S2_storeri";
24149 let InputType = "imm";
24150 let BaseOpcode = "S2_storeri_io";
24151 let isNVStorable = 1;
24152 let isExtendable = 1;
24153 let opExtendable = 2;
24154 let isExtentSigned = 0;
24155 let opExtentBits = 8;
24156 let opExtentAlign = 2;
24157 }
24158 def S4_pstoreritnew_rr : HInst<
24159 (outs),
24160 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
24161 "if ($Pv4.new) memw($Rs32+$Ru32<<#$Ii) = $Rt32",
24162 tc_40116ca8, TypeST>, Enc_6339d5, AddrModeRel {
24163 let Inst{31-21} = 0b00110110100;
24164 let isPredicated = 1;
24165 let addrMode = BaseRegOffset;
24166 let accessSize = WordAccess;
24167 let isPredicatedNew = 1;
24168 let mayStore = 1;
24169 let CextOpcode = "S2_storeri";
24170 let InputType = "reg";
24171 let BaseOpcode = "S2_storeri_rr";
24172 let isNVStorable = 1;
24173 }
24174 def S4_pstoreritnew_zomap : HInst<
24175 (outs),
24176 (ins PredRegs:$Pv4, IntRegs:$Rs32, IntRegs:$Rt32),
24177 "if ($Pv4.new) memw($Rs32) = $Rt32",
24178 tc_da97ee82, TypeMAPPING> {
24179 let isPseudo = 1;
24180 let isCodeGenOnly = 1;
24181 }
24182 def S4_stored_locked : HInst<
24183 (outs PredRegs:$Pd4),
24184 (ins IntRegs:$Rs32, DoubleRegs:$Rtt32),
24185 "memd_locked($Rs32,$Pd4) = $Rtt32",
24186 tc_5abb5e3f, TypeST>, Enc_d7dc10 {
24187 let Inst{7-2} = 0b000000;
24188 let Inst{13-13} = 0b0;
24189 let Inst{31-21} = 0b10100000111;
24190 let accessSize = DoubleWordAccess;
24191 let isPredicateLate = 1;
24192 let isSoloAX = 1;
24193 let mayStore = 1;
24194 }
24195 def S4_storeirb_io : HInst<
24196 (outs),
24197 (ins IntRegs:$Rs32, u6_0Imm:$Ii, s32_0Imm:$II),
24198 "memb($Rs32+#$Ii) = #$II",
24199 tc_b83e6d73, TypeST>, Enc_8203bb, PredNewRel {
24200 let Inst{31-21} = 0b00111100000;
24201 let addrMode = BaseImmOffset;
24202 let accessSize = ByteAccess;
24203 let mayStore = 1;
24204 let CextOpcode = "S2_storerb";
24205 let InputType = "imm";
24206 let BaseOpcode = "S4_storeirb_io";
24207 let isPredicable = 1;
24208 let isExtendable = 1;
24209 let opExtendable = 2;
24210 let isExtentSigned = 1;
24211 let opExtentBits = 8;
24212 let opExtentAlign = 0;
24213 }
24214 def S4_storeirb_zomap : HInst<
24215 (outs),
24216 (ins IntRegs:$Rs32, s8_0Imm:$II),
24217 "memb($Rs32) = #$II",
24218 tc_b83e6d73, TypeMAPPING> {
24219 let isPseudo = 1;
24220 let isCodeGenOnly = 1;
24221 }
24222 def S4_storeirbf_io : HInst<
24223 (outs),
24224 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_0Imm:$Ii, s32_0Imm:$II),
24225 "if (!$Pv4) memb($Rs32+#$Ii) = #$II",
24226 tc_0b2be201, TypeST>, Enc_d7a65e, PredNewRel {
24227 let Inst{31-21} = 0b00111000100;
24228 let isPredicated = 1;
24229 let isPredicatedFalse = 1;
24230 let addrMode = BaseImmOffset;
24231 let accessSize = ByteAccess;
24232 let mayStore = 1;
24233 let CextOpcode = "S2_storerb";
24234 let InputType = "imm";
24235 let BaseOpcode = "S4_storeirb_io";
24236 let isExtendable = 1;
24237 let opExtendable = 3;
24238 let isExtentSigned = 1;
24239 let opExtentBits = 6;
24240 let opExtentAlign = 0;
24241 }
24242 def S4_storeirbf_zomap : HInst<
24243 (outs),
24244 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24245 "if (!$Pv4) memb($Rs32) = #$II",
24246 tc_0b2be201, TypeMAPPING> {
24247 let isPseudo = 1;
24248 let isCodeGenOnly = 1;
24249 }
24250 def S4_storeirbfnew_io : HInst<
24251 (outs),
24252 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_0Imm:$Ii, s32_0Imm:$II),
24253 "if (!$Pv4.new) memb($Rs32+#$Ii) = #$II",
24254 tc_c4f596e3, TypeST>, Enc_d7a65e, PredNewRel {
24255 let Inst{31-21} = 0b00111001100;
24256 let isPredicated = 1;
24257 let isPredicatedFalse = 1;
24258 let addrMode = BaseImmOffset;
24259 let accessSize = ByteAccess;
24260 let isPredicatedNew = 1;
24261 let mayStore = 1;
24262 let CextOpcode = "S2_storerb";
24263 let InputType = "imm";
24264 let BaseOpcode = "S4_storeirb_io";
24265 let isExtendable = 1;
24266 let opExtendable = 3;
24267 let isExtentSigned = 1;
24268 let opExtentBits = 6;
24269 let opExtentAlign = 0;
24270 }
24271 def S4_storeirbfnew_zomap : HInst<
24272 (outs),
24273 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24274 "if (!$Pv4.new) memb($Rs32) = #$II",
24275 tc_c4f596e3, TypeMAPPING> {
24276 let isPseudo = 1;
24277 let isCodeGenOnly = 1;
24278 }
24279 def S4_storeirbt_io : HInst<
24280 (outs),
24281 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_0Imm:$Ii, s32_0Imm:$II),
24282 "if ($Pv4) memb($Rs32+#$Ii) = #$II",
24283 tc_0b2be201, TypeST>, Enc_d7a65e, PredNewRel {
24284 let Inst{31-21} = 0b00111000000;
24285 let isPredicated = 1;
24286 let addrMode = BaseImmOffset;
24287 let accessSize = ByteAccess;
24288 let mayStore = 1;
24289 let CextOpcode = "S2_storerb";
24290 let InputType = "imm";
24291 let BaseOpcode = "S4_storeirb_io";
24292 let isExtendable = 1;
24293 let opExtendable = 3;
24294 let isExtentSigned = 1;
24295 let opExtentBits = 6;
24296 let opExtentAlign = 0;
24297 }
24298 def S4_storeirbt_zomap : HInst<
24299 (outs),
24300 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24301 "if ($Pv4) memb($Rs32) = #$II",
24302 tc_0b2be201, TypeMAPPING> {
24303 let isPseudo = 1;
24304 let isCodeGenOnly = 1;
24305 }
24306 def S4_storeirbtnew_io : HInst<
24307 (outs),
24308 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_0Imm:$Ii, s32_0Imm:$II),
24309 "if ($Pv4.new) memb($Rs32+#$Ii) = #$II",
24310 tc_c4f596e3, TypeST>, Enc_d7a65e, PredNewRel {
24311 let Inst{31-21} = 0b00111001000;
24312 let isPredicated = 1;
24313 let addrMode = BaseImmOffset;
24314 let accessSize = ByteAccess;
24315 let isPredicatedNew = 1;
24316 let mayStore = 1;
24317 let CextOpcode = "S2_storerb";
24318 let InputType = "imm";
24319 let BaseOpcode = "S4_storeirb_io";
24320 let isExtendable = 1;
24321 let opExtendable = 3;
24322 let isExtentSigned = 1;
24323 let opExtentBits = 6;
24324 let opExtentAlign = 0;
24325 }
24326 def S4_storeirbtnew_zomap : HInst<
24327 (outs),
24328 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24329 "if ($Pv4.new) memb($Rs32) = #$II",
24330 tc_c4f596e3, TypeMAPPING> {
24331 let isPseudo = 1;
24332 let isCodeGenOnly = 1;
24333 }
24334 def S4_storeirh_io : HInst<
24335 (outs),
24336 (ins IntRegs:$Rs32, u6_1Imm:$Ii, s32_0Imm:$II),
24337 "memh($Rs32+#$Ii) = #$II",
24338 tc_b83e6d73, TypeST>, Enc_a803e0, PredNewRel {
24339 let Inst{31-21} = 0b00111100001;
24340 let addrMode = BaseImmOffset;
24341 let accessSize = HalfWordAccess;
24342 let mayStore = 1;
24343 let CextOpcode = "S2_storerh";
24344 let InputType = "imm";
24345 let BaseOpcode = "S4_storeirh_io";
24346 let isPredicable = 1;
24347 let isExtendable = 1;
24348 let opExtendable = 2;
24349 let isExtentSigned = 1;
24350 let opExtentBits = 8;
24351 let opExtentAlign = 0;
24352 }
24353 def S4_storeirh_zomap : HInst<
24354 (outs),
24355 (ins IntRegs:$Rs32, s8_0Imm:$II),
24356 "memh($Rs32) = #$II",
24357 tc_b83e6d73, TypeMAPPING> {
24358 let isPseudo = 1;
24359 let isCodeGenOnly = 1;
24360 }
24361 def S4_storeirhf_io : HInst<
24362 (outs),
24363 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_1Imm:$Ii, s32_0Imm:$II),
24364 "if (!$Pv4) memh($Rs32+#$Ii) = #$II",
24365 tc_0b2be201, TypeST>, Enc_f20719, PredNewRel {
24366 let Inst{31-21} = 0b00111000101;
24367 let isPredicated = 1;
24368 let isPredicatedFalse = 1;
24369 let addrMode = BaseImmOffset;
24370 let accessSize = HalfWordAccess;
24371 let mayStore = 1;
24372 let CextOpcode = "S2_storerh";
24373 let InputType = "imm";
24374 let BaseOpcode = "S4_storeirh_io";
24375 let isExtendable = 1;
24376 let opExtendable = 3;
24377 let isExtentSigned = 1;
24378 let opExtentBits = 6;
24379 let opExtentAlign = 0;
24380 }
24381 def S4_storeirhf_zomap : HInst<
24382 (outs),
24383 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24384 "if (!$Pv4) memh($Rs32) = #$II",
24385 tc_0b2be201, TypeMAPPING> {
24386 let isPseudo = 1;
24387 let isCodeGenOnly = 1;
24388 }
24389 def S4_storeirhfnew_io : HInst<
24390 (outs),
24391 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_1Imm:$Ii, s32_0Imm:$II),
24392 "if (!$Pv4.new) memh($Rs32+#$Ii) = #$II",
24393 tc_c4f596e3, TypeST>, Enc_f20719, PredNewRel {
24394 let Inst{31-21} = 0b00111001101;
24395 let isPredicated = 1;
24396 let isPredicatedFalse = 1;
24397 let addrMode = BaseImmOffset;
24398 let accessSize = HalfWordAccess;
24399 let isPredicatedNew = 1;
24400 let mayStore = 1;
24401 let CextOpcode = "S2_storerh";
24402 let InputType = "imm";
24403 let BaseOpcode = "S4_storeirh_io";
24404 let isExtendable = 1;
24405 let opExtendable = 3;
24406 let isExtentSigned = 1;
24407 let opExtentBits = 6;
24408 let opExtentAlign = 0;
24409 }
24410 def S4_storeirhfnew_zomap : HInst<
24411 (outs),
24412 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24413 "if (!$Pv4.new) memh($Rs32) = #$II",
24414 tc_c4f596e3, TypeMAPPING> {
24415 let isPseudo = 1;
24416 let isCodeGenOnly = 1;
24417 }
24418 def S4_storeirht_io : HInst<
24419 (outs),
24420 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_1Imm:$Ii, s32_0Imm:$II),
24421 "if ($Pv4) memh($Rs32+#$Ii) = #$II",
24422 tc_0b2be201, TypeST>, Enc_f20719, PredNewRel {
24423 let Inst{31-21} = 0b00111000001;
24424 let isPredicated = 1;
24425 let addrMode = BaseImmOffset;
24426 let accessSize = HalfWordAccess;
24427 let mayStore = 1;
24428 let CextOpcode = "S2_storerh";
24429 let InputType = "imm";
24430 let BaseOpcode = "S4_storeirh_io";
24431 let isExtendable = 1;
24432 let opExtendable = 3;
24433 let isExtentSigned = 1;
24434 let opExtentBits = 6;
24435 let opExtentAlign = 0;
24436 }
24437 def S4_storeirht_zomap : HInst<
24438 (outs),
24439 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24440 "if ($Pv4) memh($Rs32) = #$II",
24441 tc_0b2be201, TypeMAPPING> {
24442 let isPseudo = 1;
24443 let isCodeGenOnly = 1;
24444 }
24445 def S4_storeirhtnew_io : HInst<
24446 (outs),
24447 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_1Imm:$Ii, s32_0Imm:$II),
24448 "if ($Pv4.new) memh($Rs32+#$Ii) = #$II",
24449 tc_c4f596e3, TypeST>, Enc_f20719, PredNewRel {
24450 let Inst{31-21} = 0b00111001001;
24451 let isPredicated = 1;
24452 let addrMode = BaseImmOffset;
24453 let accessSize = HalfWordAccess;
24454 let isPredicatedNew = 1;
24455 let mayStore = 1;
24456 let CextOpcode = "S2_storerh";
24457 let InputType = "imm";
24458 let BaseOpcode = "S4_storeirh_io";
24459 let isExtendable = 1;
24460 let opExtendable = 3;
24461 let isExtentSigned = 1;
24462 let opExtentBits = 6;
24463 let opExtentAlign = 0;
24464 }
24465 def S4_storeirhtnew_zomap : HInst<
24466 (outs),
24467 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24468 "if ($Pv4.new) memh($Rs32) = #$II",
24469 tc_c4f596e3, TypeMAPPING> {
24470 let isPseudo = 1;
24471 let isCodeGenOnly = 1;
24472 }
24473 def S4_storeiri_io : HInst<
24474 (outs),
24475 (ins IntRegs:$Rs32, u6_2Imm:$Ii, s32_0Imm:$II),
24476 "memw($Rs32+#$Ii) = #$II",
24477 tc_b83e6d73, TypeST>, Enc_f37377, PredNewRel {
24478 let Inst{31-21} = 0b00111100010;
24479 let addrMode = BaseImmOffset;
24480 let accessSize = WordAccess;
24481 let mayStore = 1;
24482 let CextOpcode = "S2_storeri";
24483 let InputType = "imm";
24484 let BaseOpcode = "S4_storeiri_io";
24485 let isPredicable = 1;
24486 let isExtendable = 1;
24487 let opExtendable = 2;
24488 let isExtentSigned = 1;
24489 let opExtentBits = 8;
24490 let opExtentAlign = 0;
24491 }
24492 def S4_storeiri_zomap : HInst<
24493 (outs),
24494 (ins IntRegs:$Rs32, s8_0Imm:$II),
24495 "memw($Rs32) = #$II",
24496 tc_b83e6d73, TypeMAPPING> {
24497 let isPseudo = 1;
24498 let isCodeGenOnly = 1;
24499 }
24500 def S4_storeirif_io : HInst<
24501 (outs),
24502 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_2Imm:$Ii, s32_0Imm:$II),
24503 "if (!$Pv4) memw($Rs32+#$Ii) = #$II",
24504 tc_0b2be201, TypeST>, Enc_5ccba9, PredNewRel {
24505 let Inst{31-21} = 0b00111000110;
24506 let isPredicated = 1;
24507 let isPredicatedFalse = 1;
24508 let addrMode = BaseImmOffset;
24509 let accessSize = WordAccess;
24510 let mayStore = 1;
24511 let CextOpcode = "S2_storeri";
24512 let InputType = "imm";
24513 let BaseOpcode = "S4_storeiri_io";
24514 let isExtendable = 1;
24515 let opExtendable = 3;
24516 let isExtentSigned = 1;
24517 let opExtentBits = 6;
24518 let opExtentAlign = 0;
24519 }
24520 def S4_storeirif_zomap : HInst<
24521 (outs),
24522 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24523 "if (!$Pv4) memw($Rs32) = #$II",
24524 tc_0b2be201, TypeMAPPING> {
24525 let isPseudo = 1;
24526 let isCodeGenOnly = 1;
24527 }
24528 def S4_storeirifnew_io : HInst<
24529 (outs),
24530 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_2Imm:$Ii, s32_0Imm:$II),
24531 "if (!$Pv4.new) memw($Rs32+#$Ii) = #$II",
24532 tc_c4f596e3, TypeST>, Enc_5ccba9, PredNewRel {
24533 let Inst{31-21} = 0b00111001110;
24534 let isPredicated = 1;
24535 let isPredicatedFalse = 1;
24536 let addrMode = BaseImmOffset;
24537 let accessSize = WordAccess;
24538 let isPredicatedNew = 1;
24539 let mayStore = 1;
24540 let CextOpcode = "S2_storeri";
24541 let InputType = "imm";
24542 let BaseOpcode = "S4_storeiri_io";
24543 let isExtendable = 1;
24544 let opExtendable = 3;
24545 let isExtentSigned = 1;
24546 let opExtentBits = 6;
24547 let opExtentAlign = 0;
24548 }
24549 def S4_storeirifnew_zomap : HInst<
24550 (outs),
24551 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24552 "if (!$Pv4.new) memw($Rs32) = #$II",
24553 tc_c4f596e3, TypeMAPPING> {
24554 let isPseudo = 1;
24555 let isCodeGenOnly = 1;
24556 }
24557 def S4_storeirit_io : HInst<
24558 (outs),
24559 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_2Imm:$Ii, s32_0Imm:$II),
24560 "if ($Pv4) memw($Rs32+#$Ii) = #$II",
24561 tc_0b2be201, TypeST>, Enc_5ccba9, PredNewRel {
24562 let Inst{31-21} = 0b00111000010;
24563 let isPredicated = 1;
24564 let addrMode = BaseImmOffset;
24565 let accessSize = WordAccess;
24566 let mayStore = 1;
24567 let CextOpcode = "S2_storeri";
24568 let InputType = "imm";
24569 let BaseOpcode = "S4_storeiri_io";
24570 let isExtendable = 1;
24571 let opExtendable = 3;
24572 let isExtentSigned = 1;
24573 let opExtentBits = 6;
24574 let opExtentAlign = 0;
24575 }
24576 def S4_storeirit_zomap : HInst<
24577 (outs),
24578 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24579 "if ($Pv4) memw($Rs32) = #$II",
24580 tc_0b2be201, TypeMAPPING> {
24581 let isPseudo = 1;
24582 let isCodeGenOnly = 1;
24583 }
24584 def S4_storeiritnew_io : HInst<
24585 (outs),
24586 (ins PredRegs:$Pv4, IntRegs:$Rs32, u6_2Imm:$Ii, s32_0Imm:$II),
24587 "if ($Pv4.new) memw($Rs32+#$Ii) = #$II",
24588 tc_c4f596e3, TypeST>, Enc_5ccba9, PredNewRel {
24589 let Inst{31-21} = 0b00111001010;
24590 let isPredicated = 1;
24591 let addrMode = BaseImmOffset;
24592 let accessSize = WordAccess;
24593 let isPredicatedNew = 1;
24594 let mayStore = 1;
24595 let CextOpcode = "S2_storeri";
24596 let InputType = "imm";
24597 let BaseOpcode = "S4_storeiri_io";
24598 let isExtendable = 1;
24599 let opExtendable = 3;
24600 let isExtentSigned = 1;
24601 let opExtentBits = 6;
24602 let opExtentAlign = 0;
24603 }
24604 def S4_storeiritnew_zomap : HInst<
24605 (outs),
24606 (ins PredRegs:$Pv4, IntRegs:$Rs32, s6_0Imm:$II),
24607 "if ($Pv4.new) memw($Rs32) = #$II",
24608 tc_c4f596e3, TypeMAPPING> {
24609 let isPseudo = 1;
24610 let isCodeGenOnly = 1;
24611 }
24612 def S4_storerb_ap : HInst<
24613 (outs IntRegs:$Re32),
24614 (ins u32_0Imm:$II, IntRegs:$Rt32),
24615 "memb($Re32=#$II) = $Rt32",
24616 tc_da4a37ed, TypeST>, Enc_8bcba4, AddrModeRel {
24617 let Inst{7-6} = 0b10;
24618 let Inst{13-13} = 0b0;
24619 let Inst{31-21} = 0b10101011000;
24620 let addrMode = AbsoluteSet;
24621 let accessSize = ByteAccess;
24622 let isExtended = 1;
24623 let mayStore = 1;
24624 let BaseOpcode = "S2_storerb_ap";
24625 let isNVStorable = 1;
24626 let DecoderNamespace = "MustExtend";
24627 let isExtendable = 1;
24628 let opExtendable = 1;
24629 let isExtentSigned = 0;
24630 let opExtentBits = 6;
24631 let opExtentAlign = 0;
24632 }
24633 def S4_storerb_rr : HInst<
24634 (outs),
24635 (ins IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
24636 "memb($Rs32+$Ru32<<#$Ii) = $Rt32",
24637 tc_5aee39f7, TypeST>, Enc_eca7c8, AddrModeRel, ImmRegShl {
24638 let Inst{6-5} = 0b00;
24639 let Inst{31-21} = 0b00111011000;
24640 let addrMode = BaseRegOffset;
24641 let accessSize = ByteAccess;
24642 let mayStore = 1;
24643 let CextOpcode = "S2_storerb";
24644 let InputType = "reg";
24645 let BaseOpcode = "S4_storerb_rr";
24646 let isNVStorable = 1;
24647 let isPredicable = 1;
24648 }
24649 def S4_storerb_ur : HInst<
24650 (outs),
24651 (ins IntRegs:$Ru32, u2_0Imm:$Ii, u32_0Imm:$II, IntRegs:$Rt32),
24652 "memb($Ru32<<#$Ii+#$II) = $Rt32",
24653 tc_14b272fa, TypeST>, Enc_9ea4cf, AddrModeRel, ImmRegShl {
24654 let Inst{7-7} = 0b1;
24655 let Inst{31-21} = 0b10101101000;
24656 let addrMode = BaseLongOffset;
24657 let accessSize = ByteAccess;
24658 let isExtended = 1;
24659 let mayStore = 1;
24660 let CextOpcode = "S2_storerb";
24661 let InputType = "imm";
24662 let BaseOpcode = "S4_storerb_ur";
24663 let isNVStorable = 1;
24664 let DecoderNamespace = "MustExtend";
24665 let isExtendable = 1;
24666 let opExtendable = 2;
24667 let isExtentSigned = 0;
24668 let opExtentBits = 6;
24669 let opExtentAlign = 0;
24670 }
24671 def S4_storerbnew_ap : HInst<
24672 (outs IntRegs:$Re32),
24673 (ins u32_0Imm:$II, IntRegs:$Nt8),
24674 "memb($Re32=#$II) = $Nt8.new",
24675 tc_d2e63d61, TypeST>, Enc_724154, AddrModeRel {
24676 let Inst{7-6} = 0b10;
24677 let Inst{13-11} = 0b000;
24678 let Inst{31-21} = 0b10101011101;
24679 let addrMode = AbsoluteSet;
24680 let accessSize = ByteAccess;
24681 let isNVStore = 1;
24682 let isNewValue = 1;
24683 let isExtended = 1;
24684 let isRestrictNoSlot1Store = 1;
24685 let mayStore = 1;
24686 let BaseOpcode = "S2_storerb_ap";
24687 let DecoderNamespace = "MustExtend";
24688 let isExtendable = 1;
24689 let opExtendable = 1;
24690 let isExtentSigned = 0;
24691 let opExtentBits = 6;
24692 let opExtentAlign = 0;
24693 let opNewValue = 2;
24694 }
24695 def S4_storerbnew_rr : HInst<
24696 (outs),
24697 (ins IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
24698 "memb($Rs32+$Ru32<<#$Ii) = $Nt8.new",
24699 tc_67435e81, TypeST>, Enc_c6220b, AddrModeRel {
24700 let Inst{6-3} = 0b0000;
24701 let Inst{31-21} = 0b00111011101;
24702 let addrMode = BaseRegOffset;
24703 let accessSize = ByteAccess;
24704 let isNVStore = 1;
24705 let isNewValue = 1;
24706 let isRestrictNoSlot1Store = 1;
24707 let mayStore = 1;
24708 let CextOpcode = "S2_storerb";
24709 let InputType = "reg";
24710 let BaseOpcode = "S4_storerb_rr";
24711 let isPredicable = 1;
24712 let opNewValue = 3;
24713 }
24714 def S4_storerbnew_ur : HInst<
24715 (outs),
24716 (ins IntRegs:$Ru32, u2_0Imm:$Ii, u32_0Imm:$II, IntRegs:$Nt8),
24717 "memb($Ru32<<#$Ii+#$II) = $Nt8.new",
24718 tc_fcc3ddf9, TypeST>, Enc_7eb485, AddrModeRel {
24719 let Inst{7-7} = 0b1;
24720 let Inst{12-11} = 0b00;
24721 let Inst{31-21} = 0b10101101101;
24722 let addrMode = BaseLongOffset;
24723 let accessSize = ByteAccess;
24724 let isNVStore = 1;
24725 let isNewValue = 1;
24726 let isExtended = 1;
24727 let isRestrictNoSlot1Store = 1;
24728 let mayStore = 1;
24729 let CextOpcode = "S2_storerb";
24730 let BaseOpcode = "S4_storerb_ur";
24731 let DecoderNamespace = "MustExtend";
24732 let isExtendable = 1;
24733 let opExtendable = 2;
24734 let isExtentSigned = 0;
24735 let opExtentBits = 6;
24736 let opExtentAlign = 0;
24737 let opNewValue = 3;
24738 }
24739 def S4_storerd_ap : HInst<
24740 (outs IntRegs:$Re32),
24741 (ins u32_0Imm:$II, DoubleRegs:$Rtt32),
24742 "memd($Re32=#$II) = $Rtt32",
24743 tc_da4a37ed, TypeST>, Enc_c7a204 {
24744 let Inst{7-6} = 0b10;
24745 let Inst{13-13} = 0b0;
24746 let Inst{31-21} = 0b10101011110;
24747 let addrMode = AbsoluteSet;
24748 let accessSize = DoubleWordAccess;
24749 let isExtended = 1;
24750 let mayStore = 1;
24751 let BaseOpcode = "S4_storerd_ap";
24752 let DecoderNamespace = "MustExtend";
24753 let isExtendable = 1;
24754 let opExtendable = 1;
24755 let isExtentSigned = 0;
24756 let opExtentBits = 6;
24757 let opExtentAlign = 0;
24758 }
24759 def S4_storerd_rr : HInst<
24760 (outs),
24761 (ins IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, DoubleRegs:$Rtt32),
24762 "memd($Rs32+$Ru32<<#$Ii) = $Rtt32",
24763 tc_5aee39f7, TypeST>, Enc_55355c, AddrModeRel, ImmRegShl {
24764 let Inst{6-5} = 0b00;
24765 let Inst{31-21} = 0b00111011110;
24766 let addrMode = BaseRegOffset;
24767 let accessSize = DoubleWordAccess;
24768 let mayStore = 1;
24769 let CextOpcode = "S2_storerd";
24770 let InputType = "reg";
24771 let BaseOpcode = "S2_storerd_rr";
24772 let isPredicable = 1;
24773 }
24774 def S4_storerd_ur : HInst<
24775 (outs),
24776 (ins IntRegs:$Ru32, u2_0Imm:$Ii, u32_0Imm:$II, DoubleRegs:$Rtt32),
24777 "memd($Ru32<<#$Ii+#$II) = $Rtt32",
24778 tc_14b272fa, TypeST>, Enc_f79415, AddrModeRel, ImmRegShl {
24779 let Inst{7-7} = 0b1;
24780 let Inst{31-21} = 0b10101101110;
24781 let addrMode = BaseLongOffset;
24782 let accessSize = DoubleWordAccess;
24783 let isExtended = 1;
24784 let mayStore = 1;
24785 let CextOpcode = "S2_storerd";
24786 let InputType = "imm";
24787 let BaseOpcode = "S2_storerd_ur";
24788 let DecoderNamespace = "MustExtend";
24789 let isExtendable = 1;
24790 let opExtendable = 2;
24791 let isExtentSigned = 0;
24792 let opExtentBits = 6;
24793 let opExtentAlign = 0;
24794 }
24795 def S4_storerf_ap : HInst<
24796 (outs IntRegs:$Re32),
24797 (ins u32_0Imm:$II, IntRegs:$Rt32),
24798 "memh($Re32=#$II) = $Rt32.h",
24799 tc_da4a37ed, TypeST>, Enc_8bcba4 {
24800 let Inst{7-6} = 0b10;
24801 let Inst{13-13} = 0b0;
24802 let Inst{31-21} = 0b10101011011;
24803 let addrMode = AbsoluteSet;
24804 let accessSize = HalfWordAccess;
24805 let isExtended = 1;
24806 let mayStore = 1;
24807 let BaseOpcode = "S4_storerf_ap";
24808 let DecoderNamespace = "MustExtend";
24809 let isExtendable = 1;
24810 let opExtendable = 1;
24811 let isExtentSigned = 0;
24812 let opExtentBits = 6;
24813 let opExtentAlign = 0;
24814 }
24815 def S4_storerf_rr : HInst<
24816 (outs),
24817 (ins IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
24818 "memh($Rs32+$Ru32<<#$Ii) = $Rt32.h",
24819 tc_5aee39f7, TypeST>, Enc_eca7c8, AddrModeRel, ImmRegShl {
24820 let Inst{6-5} = 0b00;
24821 let Inst{31-21} = 0b00111011011;
24822 let addrMode = BaseRegOffset;
24823 let accessSize = HalfWordAccess;
24824 let mayStore = 1;
24825 let CextOpcode = "S2_storerf";
24826 let InputType = "reg";
24827 let BaseOpcode = "S4_storerf_rr";
24828 let isPredicable = 1;
24829 }
24830 def S4_storerf_ur : HInst<
24831 (outs),
24832 (ins IntRegs:$Ru32, u2_0Imm:$Ii, u32_0Imm:$II, IntRegs:$Rt32),
24833 "memh($Ru32<<#$Ii+#$II) = $Rt32.h",
24834 tc_14b272fa, TypeST>, Enc_9ea4cf, AddrModeRel, ImmRegShl {
24835 let Inst{7-7} = 0b1;
24836 let Inst{31-21} = 0b10101101011;
24837 let addrMode = BaseLongOffset;
24838 let accessSize = HalfWordAccess;
24839 let isExtended = 1;
24840 let mayStore = 1;
24841 let CextOpcode = "S2_storerf";
24842 let InputType = "imm";
24843 let BaseOpcode = "S4_storerf_rr";
24844 let DecoderNamespace = "MustExtend";
24845 let isExtendable = 1;
24846 let opExtendable = 2;
24847 let isExtentSigned = 0;
24848 let opExtentBits = 6;
24849 let opExtentAlign = 0;
24850 }
24851 def S4_storerh_ap : HInst<
24852 (outs IntRegs:$Re32),
24853 (ins u32_0Imm:$II, IntRegs:$Rt32),
24854 "memh($Re32=#$II) = $Rt32",
24855 tc_da4a37ed, TypeST>, Enc_8bcba4, AddrModeRel {
24856 let Inst{7-6} = 0b10;
24857 let Inst{13-13} = 0b0;
24858 let Inst{31-21} = 0b10101011010;
24859 let addrMode = AbsoluteSet;
24860 let accessSize = HalfWordAccess;
24861 let isExtended = 1;
24862 let mayStore = 1;
24863 let BaseOpcode = "S2_storerh_ap";
24864 let isNVStorable = 1;
24865 let DecoderNamespace = "MustExtend";
24866 let isExtendable = 1;
24867 let opExtendable = 1;
24868 let isExtentSigned = 0;
24869 let opExtentBits = 6;
24870 let opExtentAlign = 0;
24871 }
24872 def S4_storerh_rr : HInst<
24873 (outs),
24874 (ins IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
24875 "memh($Rs32+$Ru32<<#$Ii) = $Rt32",
24876 tc_5aee39f7, TypeST>, Enc_eca7c8, AddrModeRel, ImmRegShl {
24877 let Inst{6-5} = 0b00;
24878 let Inst{31-21} = 0b00111011010;
24879 let addrMode = BaseRegOffset;
24880 let accessSize = HalfWordAccess;
24881 let mayStore = 1;
24882 let CextOpcode = "S2_storerh";
24883 let InputType = "reg";
24884 let BaseOpcode = "S2_storerh_rr";
24885 let isNVStorable = 1;
24886 let isPredicable = 1;
24887 }
24888 def S4_storerh_ur : HInst<
24889 (outs),
24890 (ins IntRegs:$Ru32, u2_0Imm:$Ii, u32_0Imm:$II, IntRegs:$Rt32),
24891 "memh($Ru32<<#$Ii+#$II) = $Rt32",
24892 tc_14b272fa, TypeST>, Enc_9ea4cf, AddrModeRel, ImmRegShl {
24893 let Inst{7-7} = 0b1;
24894 let Inst{31-21} = 0b10101101010;
24895 let addrMode = BaseLongOffset;
24896 let accessSize = HalfWordAccess;
24897 let isExtended = 1;
24898 let mayStore = 1;
24899 let CextOpcode = "S2_storerh";
24900 let InputType = "imm";
24901 let BaseOpcode = "S2_storerh_ur";
24902 let isNVStorable = 1;
24903 let DecoderNamespace = "MustExtend";
24904 let isExtendable = 1;
24905 let opExtendable = 2;
24906 let isExtentSigned = 0;
24907 let opExtentBits = 6;
24908 let opExtentAlign = 0;
24909 }
24910 def S4_storerhnew_ap : HInst<
24911 (outs IntRegs:$Re32),
24912 (ins u32_0Imm:$II, IntRegs:$Nt8),
24913 "memh($Re32=#$II) = $Nt8.new",
24914 tc_d2e63d61, TypeST>, Enc_724154, AddrModeRel {
24915 let Inst{7-6} = 0b10;
24916 let Inst{13-11} = 0b001;
24917 let Inst{31-21} = 0b10101011101;
24918 let addrMode = AbsoluteSet;
24919 let accessSize = HalfWordAccess;
24920 let isNVStore = 1;
24921 let isNewValue = 1;
24922 let isExtended = 1;
24923 let isRestrictNoSlot1Store = 1;
24924 let mayStore = 1;
24925 let BaseOpcode = "S2_storerh_ap";
24926 let DecoderNamespace = "MustExtend";
24927 let isExtendable = 1;
24928 let opExtendable = 1;
24929 let isExtentSigned = 0;
24930 let opExtentBits = 6;
24931 let opExtentAlign = 0;
24932 let opNewValue = 2;
24933 }
24934 def S4_storerhnew_rr : HInst<
24935 (outs),
24936 (ins IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
24937 "memh($Rs32+$Ru32<<#$Ii) = $Nt8.new",
24938 tc_67435e81, TypeST>, Enc_c6220b, AddrModeRel {
24939 let Inst{6-3} = 0b0001;
24940 let Inst{31-21} = 0b00111011101;
24941 let addrMode = BaseRegOffset;
24942 let accessSize = HalfWordAccess;
24943 let isNVStore = 1;
24944 let isNewValue = 1;
24945 let isRestrictNoSlot1Store = 1;
24946 let mayStore = 1;
24947 let CextOpcode = "S2_storerh";
24948 let InputType = "reg";
24949 let BaseOpcode = "S2_storerh_rr";
24950 let isPredicable = 1;
24951 let opNewValue = 3;
24952 }
24953 def S4_storerhnew_ur : HInst<
24954 (outs),
24955 (ins IntRegs:$Ru32, u2_0Imm:$Ii, u32_0Imm:$II, IntRegs:$Nt8),
24956 "memh($Ru32<<#$Ii+#$II) = $Nt8.new",
24957 tc_fcc3ddf9, TypeST>, Enc_7eb485, AddrModeRel {
24958 let Inst{7-7} = 0b1;
24959 let Inst{12-11} = 0b01;
24960 let Inst{31-21} = 0b10101101101;
24961 let addrMode = BaseLongOffset;
24962 let accessSize = HalfWordAccess;
24963 let isNVStore = 1;
24964 let isNewValue = 1;
24965 let isExtended = 1;
24966 let isRestrictNoSlot1Store = 1;
24967 let mayStore = 1;
24968 let CextOpcode = "S2_storerh";
24969 let BaseOpcode = "S2_storerh_ur";
24970 let DecoderNamespace = "MustExtend";
24971 let isExtendable = 1;
24972 let opExtendable = 2;
24973 let isExtentSigned = 0;
24974 let opExtentBits = 6;
24975 let opExtentAlign = 0;
24976 let opNewValue = 3;
24977 }
24978 def S4_storeri_ap : HInst<
24979 (outs IntRegs:$Re32),
24980 (ins u32_0Imm:$II, IntRegs:$Rt32),
24981 "memw($Re32=#$II) = $Rt32",
24982 tc_da4a37ed, TypeST>, Enc_8bcba4, AddrModeRel {
24983 let Inst{7-6} = 0b10;
24984 let Inst{13-13} = 0b0;
24985 let Inst{31-21} = 0b10101011100;
24986 let addrMode = AbsoluteSet;
24987 let accessSize = WordAccess;
24988 let isExtended = 1;
24989 let mayStore = 1;
24990 let BaseOpcode = "S2_storeri_ap";
24991 let isNVStorable = 1;
24992 let DecoderNamespace = "MustExtend";
24993 let isExtendable = 1;
24994 let opExtendable = 1;
24995 let isExtentSigned = 0;
24996 let opExtentBits = 6;
24997 let opExtentAlign = 0;
24998 }
24999 def S4_storeri_rr : HInst<
25000 (outs),
25001 (ins IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Rt32),
25002 "memw($Rs32+$Ru32<<#$Ii) = $Rt32",
25003 tc_5aee39f7, TypeST>, Enc_eca7c8, AddrModeRel, ImmRegShl {
25004 let Inst{6-5} = 0b00;
25005 let Inst{31-21} = 0b00111011100;
25006 let addrMode = BaseRegOffset;
25007 let accessSize = WordAccess;
25008 let mayStore = 1;
25009 let CextOpcode = "S2_storeri";
25010 let InputType = "reg";
25011 let BaseOpcode = "S2_storeri_rr";
25012 let isNVStorable = 1;
25013 let isPredicable = 1;
25014 }
25015 def S4_storeri_ur : HInst<
25016 (outs),
25017 (ins IntRegs:$Ru32, u2_0Imm:$Ii, u32_0Imm:$II, IntRegs:$Rt32),
25018 "memw($Ru32<<#$Ii+#$II) = $Rt32",
25019 tc_14b272fa, TypeST>, Enc_9ea4cf, AddrModeRel, ImmRegShl {
25020 let Inst{7-7} = 0b1;
25021 let Inst{31-21} = 0b10101101100;
25022 let addrMode = BaseLongOffset;
25023 let accessSize = WordAccess;
25024 let isExtended = 1;
25025 let mayStore = 1;
25026 let CextOpcode = "S2_storeri";
25027 let InputType = "imm";
25028 let BaseOpcode = "S2_storeri_ur";
25029 let isNVStorable = 1;
25030 let DecoderNamespace = "MustExtend";
25031 let isExtendable = 1;
25032 let opExtendable = 2;
25033 let isExtentSigned = 0;
25034 let opExtentBits = 6;
25035 let opExtentAlign = 0;
25036 }
25037 def S4_storerinew_ap : HInst<
25038 (outs IntRegs:$Re32),
25039 (ins u32_0Imm:$II, IntRegs:$Nt8),
25040 "memw($Re32=#$II) = $Nt8.new",
25041 tc_d2e63d61, TypeST>, Enc_724154, AddrModeRel {
25042 let Inst{7-6} = 0b10;
25043 let Inst{13-11} = 0b010;
25044 let Inst{31-21} = 0b10101011101;
25045 let addrMode = AbsoluteSet;
25046 let accessSize = WordAccess;
25047 let isNVStore = 1;
25048 let isNewValue = 1;
25049 let isExtended = 1;
25050 let isRestrictNoSlot1Store = 1;
25051 let mayStore = 1;
25052 let BaseOpcode = "S2_storeri_ap";
25053 let DecoderNamespace = "MustExtend";
25054 let isExtendable = 1;
25055 let opExtendable = 1;
25056 let isExtentSigned = 0;
25057 let opExtentBits = 6;
25058 let opExtentAlign = 0;
25059 let opNewValue = 2;
25060 }
25061 def S4_storerinew_rr : HInst<
25062 (outs),
25063 (ins IntRegs:$Rs32, IntRegs:$Ru32, u2_0Imm:$Ii, IntRegs:$Nt8),
25064 "memw($Rs32+$Ru32<<#$Ii) = $Nt8.new",
25065 tc_67435e81, TypeST>, Enc_c6220b, AddrModeRel {
25066 let Inst{6-3} = 0b0010;
25067 let Inst{31-21} = 0b00111011101;
25068 let addrMode = BaseRegOffset;
25069 let accessSize = WordAccess;
25070 let isNVStore = 1;
25071 let isNewValue = 1;
25072 let isRestrictNoSlot1Store = 1;
25073 let mayStore = 1;
25074 let CextOpcode = "S2_storeri";
25075 let InputType = "reg";
25076 let BaseOpcode = "S2_storeri_rr";
25077 let isPredicable = 1;
25078 let opNewValue = 3;
25079 }
25080 def S4_storerinew_ur : HInst<
25081 (outs),
25082 (ins IntRegs:$Ru32, u2_0Imm:$Ii, u32_0Imm:$II, IntRegs:$Nt8),
25083 "memw($Ru32<<#$Ii+#$II) = $Nt8.new",
25084 tc_fcc3ddf9, TypeST>, Enc_7eb485, AddrModeRel {
25085 let Inst{7-7} = 0b1;
25086 let Inst{12-11} = 0b10;
25087 let Inst{31-21} = 0b10101101101;
25088 let addrMode = BaseLongOffset;
25089 let accessSize = WordAccess;
25090 let isNVStore = 1;
25091 let isNewValue = 1;
25092 let isExtended = 1;
25093 let isRestrictNoSlot1Store = 1;
25094 let mayStore = 1;
25095 let CextOpcode = "S2_storeri";
25096 let BaseOpcode = "S2_storeri_ur";
25097 let DecoderNamespace = "MustExtend";
25098 let isExtendable = 1;
25099 let opExtendable = 2;
25100 let isExtentSigned = 0;
25101 let opExtentBits = 6;
25102 let opExtentAlign = 0;
25103 let opNewValue = 3;
25104 }
25105 def S4_subaddi : HInst<
25106 (outs IntRegs:$Rd32),
25107 (ins IntRegs:$Rs32, s32_0Imm:$Ii, IntRegs:$Ru32),
25108 "$Rd32 = add($Rs32,sub(#$Ii,$Ru32))",
25109 tc_f675fee8, TypeALU64>, Enc_8b8d61 {
25110 let Inst{31-23} = 0b110110111;
25111 let hasNewValue = 1;
25112 let opNewValue = 0;
25113 let prefersSlot3 = 1;
25114 let isExtendable = 1;
25115 let opExtendable = 2;
25116 let isExtentSigned = 1;
25117 let opExtentBits = 6;
25118 let opExtentAlign = 0;
25119 }
25120 def S4_subi_asl_ri : HInst<
25121 (outs IntRegs:$Rx32),
25122 (ins u32_0Imm:$Ii, IntRegs:$Rx32in, u5_0Imm:$II),
25123 "$Rx32 = sub(#$Ii,asl($Rx32in,#$II))",
25124 tc_f675fee8, TypeALU64>, Enc_c31910 {
25125 let Inst{2-0} = 0b110;
25126 let Inst{4-4} = 0b0;
25127 let Inst{31-24} = 0b11011110;
25128 let hasNewValue = 1;
25129 let opNewValue = 0;
25130 let prefersSlot3 = 1;
25131 let isExtendable = 1;
25132 let opExtendable = 1;
25133 let isExtentSigned = 0;
25134 let opExtentBits = 8;
25135 let opExtentAlign = 0;
25136 let Constraints = "$Rx32 = $Rx32in";
25137 }
25138 def S4_subi_lsr_ri : HInst<
25139 (outs IntRegs:$Rx32),
25140 (ins u32_0Imm:$Ii, IntRegs:$Rx32in, u5_0Imm:$II),
25141 "$Rx32 = sub(#$Ii,lsr($Rx32in,#$II))",
25142 tc_f675fee8, TypeALU64>, Enc_c31910 {
25143 let Inst{2-0} = 0b110;
25144 let Inst{4-4} = 0b1;
25145 let Inst{31-24} = 0b11011110;
25146 let hasNewValue = 1;
25147 let opNewValue = 0;
25148 let prefersSlot3 = 1;
25149 let isExtendable = 1;
25150 let opExtendable = 1;
25151 let isExtentSigned = 0;
25152 let opExtentBits = 8;
25153 let opExtentAlign = 0;
25154 let Constraints = "$Rx32 = $Rx32in";
25155 }
25156 def S4_vrcrotate : HInst<
25157 (outs DoubleRegs:$Rdd32),
25158 (ins DoubleRegs:$Rss32, IntRegs:$Rt32, u2_0Imm:$Ii),
25159 "$Rdd32 = vrcrotate($Rss32,$Rt32,#$Ii)",
25160 tc_13bfbcf9, TypeS_3op>, Enc_645d54 {
25161 let Inst{7-6} = 0b11;
25162 let Inst{31-21} = 0b11000011110;
25163 let prefersSlot3 = 1;
25164 }
25165 def S4_vrcrotate_acc : HInst<
25166 (outs DoubleRegs:$Rxx32),
25167 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, IntRegs:$Rt32, u2_0Imm:$Ii),
25168 "$Rxx32 += vrcrotate($Rss32,$Rt32,#$Ii)",
25169 tc_9debc299, TypeS_3op>, Enc_b72622 {
25170 let Inst{7-6} = 0b00;
25171 let Inst{31-21} = 0b11001011101;
25172 let prefersSlot3 = 1;
25173 let Constraints = "$Rxx32 = $Rxx32in";
25174 }
25175 def S4_vxaddsubh : HInst<
25176 (outs DoubleRegs:$Rdd32),
25177 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
25178 "$Rdd32 = vxaddsubh($Rss32,$Rtt32):sat",
25179 tc_779080bf, TypeS_3op>, Enc_a56825 {
25180 let Inst{7-5} = 0b100;
25181 let Inst{13-13} = 0b0;
25182 let Inst{31-21} = 0b11000001010;
25183 let prefersSlot3 = 1;
25184 let Defs = [USR_OVF];
25185 }
25186 def S4_vxaddsubhr : HInst<
25187 (outs DoubleRegs:$Rdd32),
25188 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
25189 "$Rdd32 = vxaddsubh($Rss32,$Rtt32):rnd:>>1:sat",
25190 tc_002cb246, TypeS_3op>, Enc_a56825 {
25191 let Inst{7-5} = 0b000;
25192 let Inst{13-13} = 0b0;
25193 let Inst{31-21} = 0b11000001110;
25194 let prefersSlot3 = 1;
25195 let Defs = [USR_OVF];
25196 }
25197 def S4_vxaddsubw : HInst<
25198 (outs DoubleRegs:$Rdd32),
25199 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
25200 "$Rdd32 = vxaddsubw($Rss32,$Rtt32):sat",
25201 tc_779080bf, TypeS_3op>, Enc_a56825 {
25202 let Inst{7-5} = 0b000;
25203 let Inst{13-13} = 0b0;
25204 let Inst{31-21} = 0b11000001010;
25205 let prefersSlot3 = 1;
25206 let Defs = [USR_OVF];
25207 }
25208 def S4_vxsubaddh : HInst<
25209 (outs DoubleRegs:$Rdd32),
25210 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
25211 "$Rdd32 = vxsubaddh($Rss32,$Rtt32):sat",
25212 tc_779080bf, TypeS_3op>, Enc_a56825 {
25213 let Inst{7-5} = 0b110;
25214 let Inst{13-13} = 0b0;
25215 let Inst{31-21} = 0b11000001010;
25216 let prefersSlot3 = 1;
25217 let Defs = [USR_OVF];
25218 }
25219 def S4_vxsubaddhr : HInst<
25220 (outs DoubleRegs:$Rdd32),
25221 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
25222 "$Rdd32 = vxsubaddh($Rss32,$Rtt32):rnd:>>1:sat",
25223 tc_002cb246, TypeS_3op>, Enc_a56825 {
25224 let Inst{7-5} = 0b010;
25225 let Inst{13-13} = 0b0;
25226 let Inst{31-21} = 0b11000001110;
25227 let prefersSlot3 = 1;
25228 let Defs = [USR_OVF];
25229 }
25230 def S4_vxsubaddw : HInst<
25231 (outs DoubleRegs:$Rdd32),
25232 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
25233 "$Rdd32 = vxsubaddw($Rss32,$Rtt32):sat",
25234 tc_779080bf, TypeS_3op>, Enc_a56825 {
25235 let Inst{7-5} = 0b010;
25236 let Inst{13-13} = 0b0;
25237 let Inst{31-21} = 0b11000001010;
25238 let prefersSlot3 = 1;
25239 let Defs = [USR_OVF];
25240 }
25241 def S5_asrhub_rnd_sat : HInst<
25242 (outs IntRegs:$Rd32),
25243 (ins DoubleRegs:$Rss32, u4_0Imm:$Ii),
25244 "$Rd32 = vasrhub($Rss32,#$Ii):raw",
25245 tc_002cb246, TypeS_2op>, Enc_11a146 {
25246 let Inst{7-5} = 0b100;
25247 let Inst{13-12} = 0b00;
25248 let Inst{31-21} = 0b10001000011;
25249 let hasNewValue = 1;
25250 let opNewValue = 0;
25251 let prefersSlot3 = 1;
25252 let Defs = [USR_OVF];
25253 }
25254 def S5_asrhub_rnd_sat_goodsyntax : HInst<
25255 (outs IntRegs:$Rd32),
25256 (ins DoubleRegs:$Rss32, u4_0Imm:$Ii),
25257 "$Rd32 = vasrhub($Rss32,#$Ii):rnd:sat",
25258 tc_002cb246, TypeS_2op> {
25259 let hasNewValue = 1;
25260 let opNewValue = 0;
25261 let isPseudo = 1;
25262 }
25263 def S5_asrhub_sat : HInst<
25264 (outs IntRegs:$Rd32),
25265 (ins DoubleRegs:$Rss32, u4_0Imm:$Ii),
25266 "$Rd32 = vasrhub($Rss32,#$Ii):sat",
25267 tc_002cb246, TypeS_2op>, Enc_11a146 {
25268 let Inst{7-5} = 0b101;
25269 let Inst{13-12} = 0b00;
25270 let Inst{31-21} = 0b10001000011;
25271 let hasNewValue = 1;
25272 let opNewValue = 0;
25273 let prefersSlot3 = 1;
25274 let Defs = [USR_OVF];
25275 }
25276 def S5_popcountp : HInst<
25277 (outs IntRegs:$Rd32),
25278 (ins DoubleRegs:$Rss32),
25279 "$Rd32 = popcount($Rss32)",
25280 tc_703e822c, TypeS_2op>, Enc_90cd8b {
25281 let Inst{13-5} = 0b000000011;
25282 let Inst{31-21} = 0b10001000011;
25283 let hasNewValue = 1;
25284 let opNewValue = 0;
25285 let prefersSlot3 = 1;
25286 }
25287 def S5_vasrhrnd : HInst<
25288 (outs DoubleRegs:$Rdd32),
25289 (ins DoubleRegs:$Rss32, u4_0Imm:$Ii),
25290 "$Rdd32 = vasrh($Rss32,#$Ii):raw",
25291 tc_002cb246, TypeS_2op>, Enc_12b6e9 {
25292 let Inst{7-5} = 0b000;
25293 let Inst{13-12} = 0b00;
25294 let Inst{31-21} = 0b10000000001;
25295 let prefersSlot3 = 1;
25296 }
25297 def S5_vasrhrnd_goodsyntax : HInst<
25298 (outs DoubleRegs:$Rdd32),
25299 (ins DoubleRegs:$Rss32, u4_0Imm:$Ii),
25300 "$Rdd32 = vasrh($Rss32,#$Ii):rnd",
25301 tc_002cb246, TypeS_2op> {
25302 let isPseudo = 1;
25303 }
25304 def S6_allocframe_to_raw : HInst<
25305 (outs),
25306 (ins u11_3Imm:$Ii),
25307 "allocframe(#$Ii)",
25308 tc_b44ecf75, TypeMAPPING>, Requires<[HasV65]> {
25309 let isPseudo = 1;
25310 let isCodeGenOnly = 1;
25311 }
25312 def S6_rol_i_p : HInst<
25313 (outs DoubleRegs:$Rdd32),
25314 (ins DoubleRegs:$Rss32, u6_0Imm:$Ii),
25315 "$Rdd32 = rol($Rss32,#$Ii)",
25316 tc_1fc97744, TypeS_2op>, Enc_5eac98, Requires<[HasV60]> {
25317 let Inst{7-5} = 0b011;
25318 let Inst{31-21} = 0b10000000000;
25319 }
25320 def S6_rol_i_p_acc : HInst<
25321 (outs DoubleRegs:$Rxx32),
25322 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
25323 "$Rxx32 += rol($Rss32,#$Ii)",
25324 tc_784490da, TypeS_2op>, Enc_70fb07, Requires<[HasV60]> {
25325 let Inst{7-5} = 0b111;
25326 let Inst{31-21} = 0b10000010000;
25327 let prefersSlot3 = 1;
25328 let Constraints = "$Rxx32 = $Rxx32in";
25329 }
25330 def S6_rol_i_p_and : HInst<
25331 (outs DoubleRegs:$Rxx32),
25332 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
25333 "$Rxx32 &= rol($Rss32,#$Ii)",
25334 tc_784490da, TypeS_2op>, Enc_70fb07, Requires<[HasV60]> {
25335 let Inst{7-5} = 0b011;
25336 let Inst{31-21} = 0b10000010010;
25337 let prefersSlot3 = 1;
25338 let Constraints = "$Rxx32 = $Rxx32in";
25339 }
25340 def S6_rol_i_p_nac : HInst<
25341 (outs DoubleRegs:$Rxx32),
25342 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
25343 "$Rxx32 -= rol($Rss32,#$Ii)",
25344 tc_784490da, TypeS_2op>, Enc_70fb07, Requires<[HasV60]> {
25345 let Inst{7-5} = 0b011;
25346 let Inst{31-21} = 0b10000010000;
25347 let prefersSlot3 = 1;
25348 let Constraints = "$Rxx32 = $Rxx32in";
25349 }
25350 def S6_rol_i_p_or : HInst<
25351 (outs DoubleRegs:$Rxx32),
25352 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
25353 "$Rxx32 |= rol($Rss32,#$Ii)",
25354 tc_784490da, TypeS_2op>, Enc_70fb07, Requires<[HasV60]> {
25355 let Inst{7-5} = 0b111;
25356 let Inst{31-21} = 0b10000010010;
25357 let prefersSlot3 = 1;
25358 let Constraints = "$Rxx32 = $Rxx32in";
25359 }
25360 def S6_rol_i_p_xacc : HInst<
25361 (outs DoubleRegs:$Rxx32),
25362 (ins DoubleRegs:$Rxx32in, DoubleRegs:$Rss32, u6_0Imm:$Ii),
25363 "$Rxx32 ^= rol($Rss32,#$Ii)",
25364 tc_784490da, TypeS_2op>, Enc_70fb07, Requires<[HasV60]> {
25365 let Inst{7-5} = 0b011;
25366 let Inst{31-21} = 0b10000010100;
25367 let prefersSlot3 = 1;
25368 let Constraints = "$Rxx32 = $Rxx32in";
25369 }
25370 def S6_rol_i_r : HInst<
25371 (outs IntRegs:$Rd32),
25372 (ins IntRegs:$Rs32, u5_0Imm:$Ii),
25373 "$Rd32 = rol($Rs32,#$Ii)",
25374 tc_1fc97744, TypeS_2op>, Enc_a05677, Requires<[HasV60]> {
25375 let Inst{7-5} = 0b011;
25376 let Inst{13-13} = 0b0;
25377 let Inst{31-21} = 0b10001100000;
25378 let hasNewValue = 1;
25379 let opNewValue = 0;
25380 }
25381 def S6_rol_i_r_acc : HInst<
25382 (outs IntRegs:$Rx32),
25383 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
25384 "$Rx32 += rol($Rs32,#$Ii)",
25385 tc_784490da, TypeS_2op>, Enc_28a2dc, Requires<[HasV60]> {
25386 let Inst{7-5} = 0b111;
25387 let Inst{13-13} = 0b0;
25388 let Inst{31-21} = 0b10001110000;
25389 let hasNewValue = 1;
25390 let opNewValue = 0;
25391 let prefersSlot3 = 1;
25392 let Constraints = "$Rx32 = $Rx32in";
25393 }
25394 def S6_rol_i_r_and : HInst<
25395 (outs IntRegs:$Rx32),
25396 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
25397 "$Rx32 &= rol($Rs32,#$Ii)",
25398 tc_784490da, TypeS_2op>, Enc_28a2dc, Requires<[HasV60]> {
25399 let Inst{7-5} = 0b011;
25400 let Inst{13-13} = 0b0;
25401 let Inst{31-21} = 0b10001110010;
25402 let hasNewValue = 1;
25403 let opNewValue = 0;
25404 let prefersSlot3 = 1;
25405 let Constraints = "$Rx32 = $Rx32in";
25406 }
25407 def S6_rol_i_r_nac : HInst<
25408 (outs IntRegs:$Rx32),
25409 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
25410 "$Rx32 -= rol($Rs32,#$Ii)",
25411 tc_784490da, TypeS_2op>, Enc_28a2dc, Requires<[HasV60]> {
25412 let Inst{7-5} = 0b011;
25413 let Inst{13-13} = 0b0;
25414 let Inst{31-21} = 0b10001110000;
25415 let hasNewValue = 1;
25416 let opNewValue = 0;
25417 let prefersSlot3 = 1;
25418 let Constraints = "$Rx32 = $Rx32in";
25419 }
25420 def S6_rol_i_r_or : HInst<
25421 (outs IntRegs:$Rx32),
25422 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
25423 "$Rx32 |= rol($Rs32,#$Ii)",
25424 tc_784490da, TypeS_2op>, Enc_28a2dc, Requires<[HasV60]> {
25425 let Inst{7-5} = 0b111;
25426 let Inst{13-13} = 0b0;
25427 let Inst{31-21} = 0b10001110010;
25428 let hasNewValue = 1;
25429 let opNewValue = 0;
25430 let prefersSlot3 = 1;
25431 let Constraints = "$Rx32 = $Rx32in";
25432 }
25433 def S6_rol_i_r_xacc : HInst<
25434 (outs IntRegs:$Rx32),
25435 (ins IntRegs:$Rx32in, IntRegs:$Rs32, u5_0Imm:$Ii),
25436 "$Rx32 ^= rol($Rs32,#$Ii)",
25437 tc_784490da, TypeS_2op>, Enc_28a2dc, Requires<[HasV60]> {
25438 let Inst{7-5} = 0b011;
25439 let Inst{13-13} = 0b0;
25440 let Inst{31-21} = 0b10001110100;
25441 let hasNewValue = 1;
25442 let opNewValue = 0;
25443 let prefersSlot3 = 1;
25444 let Constraints = "$Rx32 = $Rx32in";
25445 }
25446 def S6_vsplatrbp : HInst<
25447 (outs DoubleRegs:$Rdd32),
25448 (ins IntRegs:$Rs32),
25449 "$Rdd32 = vsplatb($Rs32)",
25450 tc_a1c00888, TypeS_2op>, Enc_3a3d62, Requires<[HasV62]> {
25451 let Inst{13-5} = 0b000000100;
25452 let Inst{31-21} = 0b10000100010;
25453 }
25454 def S6_vtrunehb_ppp : HInst<
25455 (outs DoubleRegs:$Rdd32),
25456 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
25457 "$Rdd32 = vtrunehb($Rss32,$Rtt32)",
25458 tc_1fc97744, TypeS_3op>, Enc_a56825, Requires<[HasV62]> {
25459 let Inst{7-5} = 0b011;
25460 let Inst{13-13} = 0b0;
25461 let Inst{31-21} = 0b11000001100;
25462 }
25463 def S6_vtrunohb_ppp : HInst<
25464 (outs DoubleRegs:$Rdd32),
25465 (ins DoubleRegs:$Rss32, DoubleRegs:$Rtt32),
25466 "$Rdd32 = vtrunohb($Rss32,$Rtt32)",
25467 tc_1fc97744, TypeS_3op>, Enc_a56825, Requires<[HasV62]> {
25468 let Inst{7-5} = 0b101;
25469 let Inst{13-13} = 0b0;
25470 let Inst{31-21} = 0b11000001100;
25471 }
25472 def SA1_addi : HInst<
25473 (outs GeneralSubRegs:$Rx16),
25474 (ins IntRegs:$Rx16in, s32_0Imm:$Ii),
25475 "$Rx16 = add($Rx16in,#$Ii)",
25476 tc_0a705168, TypeSUBINSN>, Enc_93af4c {
25477 let Inst{12-11} = 0b00;
25478 let hasNewValue = 1;
25479 let opNewValue = 0;
25480 let AsmVariantName = "NonParsable";
25481 let DecoderNamespace = "SUBINSN_A";
25482 let isExtendable = 1;
25483 let opExtendable = 2;
25484 let isExtentSigned = 1;
25485 let opExtentBits = 7;
25486 let opExtentAlign = 0;
25487 let Constraints = "$Rx16 = $Rx16in";
25488 }
25489 def SA1_addrx : HInst<
25490 (outs GeneralSubRegs:$Rx16),
25491 (ins IntRegs:$Rx16in, GeneralSubRegs:$Rs16),
25492 "$Rx16 = add($Rx16in,$Rs16)",
25493 tc_0a705168, TypeSUBINSN>, Enc_0527db {
25494 let Inst{12-8} = 0b11000;
25495 let hasNewValue = 1;
25496 let opNewValue = 0;
25497 let AsmVariantName = "NonParsable";
25498 let DecoderNamespace = "SUBINSN_A";
25499 let Constraints = "$Rx16 = $Rx16in";
25500 }
25501 def SA1_addsp : HInst<
25502 (outs GeneralSubRegs:$Rd16),
25503 (ins u6_2Imm:$Ii),
25504 "$Rd16 = add(r29,#$Ii)",
25505 tc_9fc3dae0, TypeSUBINSN>, Enc_2df31d {
25506 let Inst{12-10} = 0b011;
25507 let hasNewValue = 1;
25508 let opNewValue = 0;
25509 let AsmVariantName = "NonParsable";
25510 let Uses = [R29];
25511 let DecoderNamespace = "SUBINSN_A";
25512 }
25513 def SA1_and1 : HInst<
25514 (outs GeneralSubRegs:$Rd16),
25515 (ins GeneralSubRegs:$Rs16),
25516 "$Rd16 = and($Rs16,#1)",
25517 tc_9fc3dae0, TypeSUBINSN>, Enc_97d666 {
25518 let Inst{12-8} = 0b10010;
25519 let hasNewValue = 1;
25520 let opNewValue = 0;
25521 let AsmVariantName = "NonParsable";
25522 let DecoderNamespace = "SUBINSN_A";
25523 }
25524 def SA1_clrf : HInst<
25525 (outs GeneralSubRegs:$Rd16),
25526 (ins),
25527 "if (!p0) $Rd16 = #0",
25528 tc_a1123dda, TypeSUBINSN>, Enc_1f5ba6 {
25529 let Inst{12-4} = 0b110100111;
25530 let isPredicated = 1;
25531 let isPredicatedFalse = 1;
25532 let hasNewValue = 1;
25533 let opNewValue = 0;
25534 let AsmVariantName = "NonParsable";
25535 let Uses = [P0];
25536 let DecoderNamespace = "SUBINSN_A";
25537 }
25538 def SA1_clrfnew : HInst<
25539 (outs GeneralSubRegs:$Rd16),
25540 (ins),
25541 "if (!p0.new) $Rd16 = #0",
25542 tc_8b3e402a, TypeSUBINSN>, Enc_1f5ba6 {
25543 let Inst{12-4} = 0b110100101;
25544 let isPredicated = 1;
25545 let isPredicatedFalse = 1;
25546 let hasNewValue = 1;
25547 let opNewValue = 0;
25548 let AsmVariantName = "NonParsable";
25549 let isPredicatedNew = 1;
25550 let Uses = [P0];
25551 let DecoderNamespace = "SUBINSN_A";
25552 }
25553 def SA1_clrt : HInst<
25554 (outs GeneralSubRegs:$Rd16),
25555 (ins),
25556 "if (p0) $Rd16 = #0",
25557 tc_a1123dda, TypeSUBINSN>, Enc_1f5ba6 {
25558 let Inst{12-4} = 0b110100110;
25559 let isPredicated = 1;
25560 let hasNewValue = 1;
25561 let opNewValue = 0;
25562 let AsmVariantName = "NonParsable";
25563 let Uses = [P0];
25564 let DecoderNamespace = "SUBINSN_A";
25565 }
25566 def SA1_clrtnew : HInst<
25567 (outs GeneralSubRegs:$Rd16),
25568 (ins),
25569 "if (p0.new) $Rd16 = #0",
25570 tc_8b3e402a, TypeSUBINSN>, Enc_1f5ba6 {
25571 let Inst{12-4} = 0b110100100;
25572 let isPredicated = 1;
25573 let hasNewValue = 1;
25574 let opNewValue = 0;
25575 let AsmVariantName = "NonParsable";
25576 let isPredicatedNew = 1;
25577 let Uses = [P0];
25578 let DecoderNamespace = "SUBINSN_A";
25579 }
25580 def SA1_cmpeqi : HInst<
25581 (outs),
25582 (ins GeneralSubRegs:$Rs16, u2_0Imm:$Ii),
25583 "p0 = cmp.eq($Rs16,#$Ii)",
25584 tc_5b7c0967, TypeSUBINSN>, Enc_63eaeb {
25585 let Inst{3-2} = 0b00;
25586 let Inst{12-8} = 0b11001;
25587 let AsmVariantName = "NonParsable";
25588 let Defs = [P0];
25589 let DecoderNamespace = "SUBINSN_A";
25590 }
25591 def SA1_combine0i : HInst<
25592 (outs GeneralDoubleLow8Regs:$Rdd8),
25593 (ins u2_0Imm:$Ii),
25594 "$Rdd8 = combine(#0,#$Ii)",
25595 tc_9fc3dae0, TypeSUBINSN>, Enc_ed48be {
25596 let Inst{4-3} = 0b00;
25597 let Inst{12-7} = 0b111000;
25598 let hasNewValue = 1;
25599 let opNewValue = 0;
25600 let AsmVariantName = "NonParsable";
25601 let DecoderNamespace = "SUBINSN_A";
25602 }
25603 def SA1_combine1i : HInst<
25604 (outs GeneralDoubleLow8Regs:$Rdd8),
25605 (ins u2_0Imm:$Ii),
25606 "$Rdd8 = combine(#1,#$Ii)",
25607 tc_9fc3dae0, TypeSUBINSN>, Enc_ed48be {
25608 let Inst{4-3} = 0b01;
25609 let Inst{12-7} = 0b111000;
25610 let hasNewValue = 1;
25611 let opNewValue = 0;
25612 let AsmVariantName = "NonParsable";
25613 let DecoderNamespace = "SUBINSN_A";
25614 }
25615 def SA1_combine2i : HInst<
25616 (outs GeneralDoubleLow8Regs:$Rdd8),
25617 (ins u2_0Imm:$Ii),
25618 "$Rdd8 = combine(#2,#$Ii)",
25619 tc_9fc3dae0, TypeSUBINSN>, Enc_ed48be {
25620 let Inst{4-3} = 0b10;
25621 let Inst{12-7} = 0b111000;
25622 let hasNewValue = 1;
25623 let opNewValue = 0;
25624 let AsmVariantName = "NonParsable";
25625 let DecoderNamespace = "SUBINSN_A";
25626 }
25627 def SA1_combine3i : HInst<
25628 (outs GeneralDoubleLow8Regs:$Rdd8),
25629 (ins u2_0Imm:$Ii),
25630 "$Rdd8 = combine(#3,#$Ii)",
25631 tc_9fc3dae0, TypeSUBINSN>, Enc_ed48be {
25632 let Inst{4-3} = 0b11;
25633 let Inst{12-7} = 0b111000;
25634 let hasNewValue = 1;
25635 let opNewValue = 0;
25636 let AsmVariantName = "NonParsable";
25637 let DecoderNamespace = "SUBINSN_A";
25638 }
25639 def SA1_combinerz : HInst<
25640 (outs GeneralDoubleLow8Regs:$Rdd8),
25641 (ins GeneralSubRegs:$Rs16),
25642 "$Rdd8 = combine($Rs16,#0)",
25643 tc_9fc3dae0, TypeSUBINSN>, Enc_399e12 {
25644 let Inst{3-3} = 0b1;
25645 let Inst{12-8} = 0b11101;
25646 let hasNewValue = 1;
25647 let opNewValue = 0;
25648 let AsmVariantName = "NonParsable";
25649 let DecoderNamespace = "SUBINSN_A";
25650 }
25651 def SA1_combinezr : HInst<
25652 (outs GeneralDoubleLow8Regs:$Rdd8),
25653 (ins GeneralSubRegs:$Rs16),
25654 "$Rdd8 = combine(#0,$Rs16)",
25655 tc_9fc3dae0, TypeSUBINSN>, Enc_399e12 {
25656 let Inst{3-3} = 0b0;
25657 let Inst{12-8} = 0b11101;
25658 let hasNewValue = 1;
25659 let opNewValue = 0;
25660 let AsmVariantName = "NonParsable";
25661 let DecoderNamespace = "SUBINSN_A";
25662 }
25663 def SA1_dec : HInst<
25664 (outs GeneralSubRegs:$Rd16),
25665 (ins GeneralSubRegs:$Rs16, n1Const:$n1),
25666 "$Rd16 = add($Rs16,#$n1)",
25667 tc_0a705168, TypeSUBINSN>, Enc_ee5ed0 {
25668 let Inst{12-8} = 0b10011;
25669 let hasNewValue = 1;
25670 let opNewValue = 0;
25671 let AsmVariantName = "NonParsable";
25672 let DecoderNamespace = "SUBINSN_A";
25673 }
25674 def SA1_inc : HInst<
25675 (outs GeneralSubRegs:$Rd16),
25676 (ins GeneralSubRegs:$Rs16),
25677 "$Rd16 = add($Rs16,#1)",
25678 tc_9fc3dae0, TypeSUBINSN>, Enc_97d666 {
25679 let Inst{12-8} = 0b10001;
25680 let hasNewValue = 1;
25681 let opNewValue = 0;
25682 let AsmVariantName = "NonParsable";
25683 let DecoderNamespace = "SUBINSN_A";
25684 }
25685 def SA1_seti : HInst<
25686 (outs GeneralSubRegs:$Rd16),
25687 (ins u32_0Imm:$Ii),
25688 "$Rd16 = #$Ii",
25689 tc_9fc3dae0, TypeSUBINSN>, Enc_e39bb2 {
25690 let Inst{12-10} = 0b010;
25691 let hasNewValue = 1;
25692 let opNewValue = 0;
25693 let AsmVariantName = "NonParsable";
25694 let DecoderNamespace = "SUBINSN_A";
25695 let isExtendable = 1;
25696 let opExtendable = 1;
25697 let isExtentSigned = 0;
25698 let opExtentBits = 6;
25699 let opExtentAlign = 0;
25700 }
25701 def SA1_setin1 : HInst<
25702 (outs GeneralSubRegs:$Rd16),
25703 (ins n1Const:$n1),
25704 "$Rd16 = #$n1",
25705 tc_9fc3dae0, TypeSUBINSN>, Enc_7a0ea6 {
25706 let Inst{12-4} = 0b110100000;
25707 let hasNewValue = 1;
25708 let opNewValue = 0;
25709 let AsmVariantName = "NonParsable";
25710 let DecoderNamespace = "SUBINSN_A";
25711 }
25712 def SA1_sxtb : HInst<
25713 (outs GeneralSubRegs:$Rd16),
25714 (ins GeneralSubRegs:$Rs16),
25715 "$Rd16 = sxtb($Rs16)",
25716 tc_9fc3dae0, TypeSUBINSN>, Enc_97d666 {
25717 let Inst{12-8} = 0b10101;
25718 let hasNewValue = 1;
25719 let opNewValue = 0;
25720 let AsmVariantName = "NonParsable";
25721 let DecoderNamespace = "SUBINSN_A";
25722 }
25723 def SA1_sxth : HInst<
25724 (outs GeneralSubRegs:$Rd16),
25725 (ins GeneralSubRegs:$Rs16),
25726 "$Rd16 = sxth($Rs16)",
25727 tc_9fc3dae0, TypeSUBINSN>, Enc_97d666 {
25728 let Inst{12-8} = 0b10100;
25729 let hasNewValue = 1;
25730 let opNewValue = 0;
25731 let AsmVariantName = "NonParsable";
25732 let DecoderNamespace = "SUBINSN_A";
25733 }
25734 def SA1_tfr : HInst<
25735 (outs GeneralSubRegs:$Rd16),
25736 (ins GeneralSubRegs:$Rs16),
25737 "$Rd16 = $Rs16",
25738 tc_9fc3dae0, TypeSUBINSN>, Enc_97d666 {
25739 let Inst{12-8} = 0b10000;
25740 let hasNewValue = 1;
25741 let opNewValue = 0;
25742 let AsmVariantName = "NonParsable";
25743 let DecoderNamespace = "SUBINSN_A";
25744 }
25745 def SA1_zxtb : HInst<
25746 (outs GeneralSubRegs:$Rd16),
25747 (ins GeneralSubRegs:$Rs16),
25748 "$Rd16 = and($Rs16,#255)",
25749 tc_9fc3dae0, TypeSUBINSN>, Enc_97d666 {
25750 let Inst{12-8} = 0b10111;
25751 let hasNewValue = 1;
25752 let opNewValue = 0;
25753 let AsmVariantName = "NonParsable";
25754 let DecoderNamespace = "SUBINSN_A";
25755 }
25756 def SA1_zxth : HInst<
25757 (outs GeneralSubRegs:$Rd16),
25758 (ins GeneralSubRegs:$Rs16),
25759 "$Rd16 = zxth($Rs16)",
25760 tc_9fc3dae0, TypeSUBINSN>, Enc_97d666 {
25761 let Inst{12-8} = 0b10110;
25762 let hasNewValue = 1;
25763 let opNewValue = 0;
25764 let AsmVariantName = "NonParsable";
25765 let DecoderNamespace = "SUBINSN_A";
25766 }
25767 def SL1_loadri_io : HInst<
25768 (outs GeneralSubRegs:$Rd16),
25769 (ins GeneralSubRegs:$Rs16, u4_2Imm:$Ii),
25770 "$Rd16 = memw($Rs16+#$Ii)",
25771 tc_17e0d2cd, TypeSUBINSN>, Enc_53dca9 {
25772 let Inst{12-12} = 0b0;
25773 let hasNewValue = 1;
25774 let opNewValue = 0;
25775 let addrMode = BaseImmOffset;
25776 let accessSize = WordAccess;
25777 let AsmVariantName = "NonParsable";
25778 let mayLoad = 1;
25779 let DecoderNamespace = "SUBINSN_L1";
25780 }
25781 def SL1_loadrub_io : HInst<
25782 (outs GeneralSubRegs:$Rd16),
25783 (ins GeneralSubRegs:$Rs16, u4_0Imm:$Ii),
25784 "$Rd16 = memub($Rs16+#$Ii)",
25785 tc_17e0d2cd, TypeSUBINSN>, Enc_c175d0 {
25786 let Inst{12-12} = 0b1;
25787 let hasNewValue = 1;
25788 let opNewValue = 0;
25789 let addrMode = BaseImmOffset;
25790 let accessSize = ByteAccess;
25791 let AsmVariantName = "NonParsable";
25792 let mayLoad = 1;
25793 let DecoderNamespace = "SUBINSN_L1";
25794 }
25795 def SL2_deallocframe : HInst<
25796 (outs),
25797 (ins),
25798 "deallocframe",
25799 tc_39dfefe8, TypeSUBINSN>, Enc_e3b0c4 {
25800 let Inst{12-0} = 0b1111100000000;
25801 let accessSize = DoubleWordAccess;
25802 let AsmVariantName = "NonParsable";
25803 let mayLoad = 1;
25804 let Uses = [FRAMEKEY, R30];
25805 let Defs = [R30, R29, R31];
25806 let DecoderNamespace = "SUBINSN_L2";
25807 }
25808 def SL2_jumpr31 : HInst<
25809 (outs),
25810 (ins),
25811 "jumpr r31",
25812 tc_b4407292, TypeSUBINSN>, Enc_e3b0c4 {
25813 let Inst{12-0} = 0b1111111000000;
25814 let isTerminator = 1;
25815 let isIndirectBranch = 1;
25816 let AsmVariantName = "NonParsable";
25817 let cofMax1 = 1;
25818 let isReturn = 1;
25819 let Uses = [R31];
25820 let Defs = [PC];
25821 let DecoderNamespace = "SUBINSN_L2";
25822 }
25823 def SL2_jumpr31_f : HInst<
25824 (outs),
25825 (ins),
25826 "if (!p0) jumpr r31",
25827 tc_b4407292, TypeSUBINSN>, Enc_e3b0c4 {
25828 let Inst{12-0} = 0b1111111000101;
25829 let isPredicated = 1;
25830 let isPredicatedFalse = 1;
25831 let isTerminator = 1;
25832 let isIndirectBranch = 1;
25833 let AsmVariantName = "NonParsable";
25834 let cofMax1 = 1;
25835 let isReturn = 1;
25836 let Uses = [P0, R31];
25837 let Defs = [PC];
25838 let isTaken = Inst{4};
25839 let DecoderNamespace = "SUBINSN_L2";
25840 }
25841 def SL2_jumpr31_fnew : HInst<
25842 (outs),
25843 (ins),
25844 "if (!p0.new) jumpr:nt r31",
25845 tc_b4407292, TypeSUBINSN>, Enc_e3b0c4 {
25846 let Inst{12-0} = 0b1111111000111;
25847 let isPredicated = 1;
25848 let isPredicatedFalse = 1;
25849 let isTerminator = 1;
25850 let isIndirectBranch = 1;
25851 let AsmVariantName = "NonParsable";
25852 let isPredicatedNew = 1;
25853 let cofMax1 = 1;
25854 let isReturn = 1;
25855 let Uses = [P0, R31];
25856 let Defs = [PC];
25857 let isTaken = Inst{4};
25858 let DecoderNamespace = "SUBINSN_L2";
25859 }
25860 def SL2_jumpr31_t : HInst<
25861 (outs),
25862 (ins),
25863 "if (p0) jumpr r31",
25864 tc_b4407292, TypeSUBINSN>, Enc_e3b0c4 {
25865 let Inst{12-0} = 0b1111111000100;
25866 let isPredicated = 1;
25867 let isTerminator = 1;
25868 let isIndirectBranch = 1;
25869 let AsmVariantName = "NonParsable";
25870 let cofMax1 = 1;
25871 let isReturn = 1;
25872 let Uses = [P0, R31];
25873 let Defs = [PC];
25874 let isTaken = Inst{4};
25875 let DecoderNamespace = "SUBINSN_L2";
25876 }
25877 def SL2_jumpr31_tnew : HInst<
25878 (outs),
25879 (ins),
25880 "if (p0.new) jumpr:nt r31",
25881 tc_b4407292, TypeSUBINSN>, Enc_e3b0c4 {
25882 let Inst{12-0} = 0b1111111000110;
25883 let isPredicated = 1;
25884 let isTerminator = 1;
25885 let isIndirectBranch = 1;
25886 let AsmVariantName = "NonParsable";
25887 let isPredicatedNew = 1;
25888 let cofMax1 = 1;
25889 let isReturn = 1;
25890 let Uses = [P0, R31];
25891 let Defs = [PC];
25892 let isTaken = Inst{4};
25893 let DecoderNamespace = "SUBINSN_L2";
25894 }
25895 def SL2_loadrb_io : HInst<
25896 (outs GeneralSubRegs:$Rd16),
25897 (ins GeneralSubRegs:$Rs16, u3_0Imm:$Ii),
25898 "$Rd16 = memb($Rs16+#$Ii)",
25899 tc_17e0d2cd, TypeSUBINSN>, Enc_2fbf3c {
25900 let Inst{12-11} = 0b10;
25901 let hasNewValue = 1;
25902 let opNewValue = 0;
25903 let addrMode = BaseImmOffset;
25904 let accessSize = ByteAccess;
25905 let AsmVariantName = "NonParsable";
25906 let mayLoad = 1;
25907 let DecoderNamespace = "SUBINSN_L2";
25908 }
25909 def SL2_loadrd_sp : HInst<
25910 (outs GeneralDoubleLow8Regs:$Rdd8),
25911 (ins u5_3Imm:$Ii),
25912 "$Rdd8 = memd(r29+#$Ii)",
25913 tc_c4db48cb, TypeSUBINSN>, Enc_86a14b {
25914 let Inst{12-8} = 0b11110;
25915 let hasNewValue = 1;
25916 let opNewValue = 0;
25917 let addrMode = BaseImmOffset;
25918 let accessSize = DoubleWordAccess;
25919 let AsmVariantName = "NonParsable";
25920 let mayLoad = 1;
25921 let Uses = [R29];
25922 let DecoderNamespace = "SUBINSN_L2";
25923 }
25924 def SL2_loadrh_io : HInst<
25925 (outs GeneralSubRegs:$Rd16),
25926 (ins GeneralSubRegs:$Rs16, u3_1Imm:$Ii),
25927 "$Rd16 = memh($Rs16+#$Ii)",
25928 tc_17e0d2cd, TypeSUBINSN>, Enc_2bae10 {
25929 let Inst{12-11} = 0b00;
25930 let hasNewValue = 1;
25931 let opNewValue = 0;
25932 let addrMode = BaseImmOffset;
25933 let accessSize = HalfWordAccess;
25934 let AsmVariantName = "NonParsable";
25935 let mayLoad = 1;
25936 let DecoderNamespace = "SUBINSN_L2";
25937 }
25938 def SL2_loadri_sp : HInst<
25939 (outs GeneralSubRegs:$Rd16),
25940 (ins u5_2Imm:$Ii),
25941 "$Rd16 = memw(r29+#$Ii)",
25942 tc_c4db48cb, TypeSUBINSN>, Enc_51635c {
25943 let Inst{12-9} = 0b1110;
25944 let hasNewValue = 1;
25945 let opNewValue = 0;
25946 let addrMode = BaseImmOffset;
25947 let accessSize = WordAccess;
25948 let AsmVariantName = "NonParsable";
25949 let mayLoad = 1;
25950 let Uses = [R29];
25951 let DecoderNamespace = "SUBINSN_L2";
25952 }
25953 def SL2_loadruh_io : HInst<
25954 (outs GeneralSubRegs:$Rd16),
25955 (ins GeneralSubRegs:$Rs16, u3_1Imm:$Ii),
25956 "$Rd16 = memuh($Rs16+#$Ii)",
25957 tc_17e0d2cd, TypeSUBINSN>, Enc_2bae10 {
25958 let Inst{12-11} = 0b01;
25959 let hasNewValue = 1;
25960 let opNewValue = 0;
25961 let addrMode = BaseImmOffset;
25962 let accessSize = HalfWordAccess;
25963 let AsmVariantName = "NonParsable";
25964 let mayLoad = 1;
25965 let DecoderNamespace = "SUBINSN_L2";
25966 }
25967 def SL2_return : HInst<
25968 (outs),
25969 (ins),
25970 "dealloc_return",
25971 tc_36153880, TypeSUBINSN>, Enc_e3b0c4 {
25972 let Inst{12-0} = 0b1111101000000;
25973 let isTerminator = 1;
25974 let isIndirectBranch = 1;
25975 let accessSize = DoubleWordAccess;
25976 let AsmVariantName = "NonParsable";
25977 let mayLoad = 1;
25978 let cofMax1 = 1;
25979 let isRestrictNoSlot1Store = 1;
25980 let isReturn = 1;
25981 let Uses = [FRAMEKEY, R30];
25982 let Defs = [PC, R30, R29, R31];
25983 let DecoderNamespace = "SUBINSN_L2";
25984 }
25985 def SL2_return_f : HInst<
25986 (outs),
25987 (ins),
25988 "if (!p0) dealloc_return",
25989 tc_36153880, TypeSUBINSN>, Enc_e3b0c4 {
25990 let Inst{12-0} = 0b1111101000101;
25991 let isPredicated = 1;
25992 let isPredicatedFalse = 1;
25993 let isTerminator = 1;
25994 let isIndirectBranch = 1;
25995 let accessSize = DoubleWordAccess;
25996 let AsmVariantName = "NonParsable";
25997 let mayLoad = 1;
25998 let cofMax1 = 1;
25999 let isRestrictNoSlot1Store = 1;
26000 let isReturn = 1;
26001 let Uses = [FRAMEKEY, P0, R30];
26002 let Defs = [PC, R30, R29, R31];
26003 let isTaken = Inst{4};
26004 let DecoderNamespace = "SUBINSN_L2";
26005 }
26006 def SL2_return_fnew : HInst<
26007 (outs),
26008 (ins),
26009 "if (!p0.new) dealloc_return:nt",
26010 tc_36153880, TypeSUBINSN>, Enc_e3b0c4 {
26011 let Inst{12-0} = 0b1111101000111;
26012 let isPredicated = 1;
26013 let isPredicatedFalse = 1;
26014 let isTerminator = 1;
26015 let isIndirectBranch = 1;
26016 let accessSize = DoubleWordAccess;
26017 let AsmVariantName = "NonParsable";
26018 let isPredicatedNew = 1;
26019 let mayLoad = 1;
26020 let cofMax1 = 1;
26021 let isRestrictNoSlot1Store = 1;
26022 let isReturn = 1;
26023 let Uses = [FRAMEKEY, P0, R30];
26024 let Defs = [PC, R30, R29, R31];
26025 let isTaken = Inst{4};
26026 let DecoderNamespace = "SUBINSN_L2";
26027 }
26028 def SL2_return_t : HInst<
26029 (outs),
26030 (ins),
26031 "if (p0) dealloc_return",
26032 tc_36153880, TypeSUBINSN>, Enc_e3b0c4 {
26033 let Inst{12-0} = 0b1111101000100;
26034 let isPredicated = 1;
26035 let isTerminator = 1;
26036 let isIndirectBranch = 1;
26037 let accessSize = DoubleWordAccess;
26038 let AsmVariantName = "NonParsable";
26039 let mayLoad = 1;
26040 let cofMax1 = 1;
26041 let isRestrictNoSlot1Store = 1;
26042 let isReturn = 1;
26043 let Uses = [FRAMEKEY, P0, R30];
26044 let Defs = [PC, R30, R29, R31];
26045 let isTaken = Inst{4};
26046 let DecoderNamespace = "SUBINSN_L2";
26047 }
26048 def SL2_return_tnew : HInst<
26049 (outs),
26050 (ins),
26051 "if (p0.new) dealloc_return:nt",
26052 tc_36153880, TypeSUBINSN>, Enc_e3b0c4 {
26053 let Inst{12-0} = 0b1111101000110;
26054 let isPredicated = 1;
26055 let isTerminator = 1;
26056 let isIndirectBranch = 1;
26057 let accessSize = DoubleWordAccess;
26058 let AsmVariantName = "NonParsable";
26059 let isPredicatedNew = 1;
26060 let mayLoad = 1;
26061 let cofMax1 = 1;
26062 let isRestrictNoSlot1Store = 1;
26063 let isReturn = 1;
26064 let Uses = [FRAMEKEY, P0, R30];
26065 let Defs = [PC, R30, R29, R31];
26066 let isTaken = Inst{4};
26067 let DecoderNamespace = "SUBINSN_L2";
26068 }
26069 def SS1_storeb_io : HInst<
26070 (outs),
26071 (ins GeneralSubRegs:$Rs16, u4_0Imm:$Ii, GeneralSubRegs:$Rt16),
26072 "memb($Rs16+#$Ii) = $Rt16",
26073 tc_30b9bb4a, TypeSUBINSN>, Enc_b38ffc {
26074 let Inst{12-12} = 0b1;
26075 let addrMode = BaseImmOffset;
26076 let accessSize = ByteAccess;
26077 let AsmVariantName = "NonParsable";
26078 let mayStore = 1;
26079 let DecoderNamespace = "SUBINSN_S1";
26080 }
26081 def SS1_storew_io : HInst<
26082 (outs),
26083 (ins GeneralSubRegs:$Rs16, u4_2Imm:$Ii, GeneralSubRegs:$Rt16),
26084 "memw($Rs16+#$Ii) = $Rt16",
26085 tc_30b9bb4a, TypeSUBINSN>, Enc_f55a0c {
26086 let Inst{12-12} = 0b0;
26087 let addrMode = BaseImmOffset;
26088 let accessSize = WordAccess;
26089 let AsmVariantName = "NonParsable";
26090 let mayStore = 1;
26091 let DecoderNamespace = "SUBINSN_S1";
26092 }
26093 def SS2_allocframe : HInst<
26094 (outs),
26095 (ins u5_3Imm:$Ii),
26096 "allocframe(#$Ii)",
26097 tc_49a8207d, TypeSUBINSN>, Enc_6f70ca {
26098 let Inst{3-0} = 0b0000;
26099 let Inst{12-9} = 0b1110;
26100 let addrMode = BaseImmOffset;
26101 let accessSize = DoubleWordAccess;
26102 let AsmVariantName = "NonParsable";
26103 let mayStore = 1;
26104 let Uses = [FRAMEKEY, FRAMELIMIT, R30, R29, R31];
26105 let Defs = [R30, R29];
26106 let DecoderNamespace = "SUBINSN_S2";
26107 }
26108 def SS2_storebi0 : HInst<
26109 (outs),
26110 (ins GeneralSubRegs:$Rs16, u4_0Imm:$Ii),
26111 "memb($Rs16+#$Ii) = #0",
26112 tc_89e94ad3, TypeSUBINSN>, Enc_84d359 {
26113 let Inst{12-8} = 0b10010;
26114 let addrMode = BaseImmOffset;
26115 let accessSize = ByteAccess;
26116 let AsmVariantName = "NonParsable";
26117 let mayStore = 1;
26118 let DecoderNamespace = "SUBINSN_S2";
26119 }
26120 def SS2_storebi1 : HInst<
26121 (outs),
26122 (ins GeneralSubRegs:$Rs16, u4_0Imm:$Ii),
26123 "memb($Rs16+#$Ii) = #1",
26124 tc_89e94ad3, TypeSUBINSN>, Enc_84d359 {
26125 let Inst{12-8} = 0b10011;
26126 let addrMode = BaseImmOffset;
26127 let accessSize = ByteAccess;
26128 let AsmVariantName = "NonParsable";
26129 let mayStore = 1;
26130 let DecoderNamespace = "SUBINSN_S2";
26131 }
26132 def SS2_stored_sp : HInst<
26133 (outs),
26134 (ins s6_3Imm:$Ii, GeneralDoubleLow8Regs:$Rtt8),
26135 "memd(r29+#$Ii) = $Rtt8",
26136 tc_0371abea, TypeSUBINSN>, Enc_b8309d {
26137 let Inst{12-9} = 0b0101;
26138 let addrMode = BaseImmOffset;
26139 let accessSize = DoubleWordAccess;
26140 let AsmVariantName = "NonParsable";
26141 let mayStore = 1;
26142 let Uses = [R29];
26143 let DecoderNamespace = "SUBINSN_S2";
26144 }
26145 def SS2_storeh_io : HInst<
26146 (outs),
26147 (ins GeneralSubRegs:$Rs16, u3_1Imm:$Ii, GeneralSubRegs:$Rt16),
26148 "memh($Rs16+#$Ii) = $Rt16",
26149 tc_30b9bb4a, TypeSUBINSN>, Enc_625deb {
26150 let Inst{12-11} = 0b00;
26151 let addrMode = BaseImmOffset;
26152 let accessSize = HalfWordAccess;
26153 let AsmVariantName = "NonParsable";
26154 let mayStore = 1;
26155 let DecoderNamespace = "SUBINSN_S2";
26156 }
26157 def SS2_storew_sp : HInst<
26158 (outs),
26159 (ins u5_2Imm:$Ii, GeneralSubRegs:$Rt16),
26160 "memw(r29+#$Ii) = $Rt16",
26161 tc_0371abea, TypeSUBINSN>, Enc_87c142 {
26162 let Inst{12-9} = 0b0100;
26163 let addrMode = BaseImmOffset;
26164 let accessSize = WordAccess;
26165 let AsmVariantName = "NonParsable";
26166 let mayStore = 1;
26167 let Uses = [R29];
26168 let DecoderNamespace = "SUBINSN_S2";
26169 }
26170 def SS2_storewi0 : HInst<
26171 (outs),
26172 (ins GeneralSubRegs:$Rs16, u4_2Imm:$Ii),
26173 "memw($Rs16+#$Ii) = #0",
26174 tc_89e94ad3, TypeSUBINSN>, Enc_a6ce9c {
26175 let Inst{12-8} = 0b10000;
26176 let addrMode = BaseImmOffset;
26177 let accessSize = WordAccess;
26178 let AsmVariantName = "NonParsable";
26179 let mayStore = 1;
26180 let DecoderNamespace = "SUBINSN_S2";
26181 }
26182 def SS2_storewi1 : HInst<
26183 (outs),
26184 (ins GeneralSubRegs:$Rs16, u4_2Imm:$Ii),
26185 "memw($Rs16+#$Ii) = #1",
26186 tc_89e94ad3, TypeSUBINSN>, Enc_a6ce9c {
26187 let Inst{12-8} = 0b10001;
26188 let addrMode = BaseImmOffset;
26189 let accessSize = WordAccess;
26190 let AsmVariantName = "NonParsable";
26191 let mayStore = 1;
26192 let DecoderNamespace = "SUBINSN_S2";
26193 }
26194 def V6_MAP_equb : HInst<
26195 (outs HvxQR:$Qd4),
26196 (ins HvxVR:$Vu32, HvxVR:$Vv32),
26197 "$Qd4 = vcmp.eq($Vu32.ub,$Vv32.ub)",
26198 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26199 let hasNewValue = 1;
26200 let opNewValue = 0;
26201 let isPseudo = 1;
26202 let isCodeGenOnly = 1;
26203 let DecoderNamespace = "EXT_mmvec";
26204 }
26205 def V6_MAP_equb_and : HInst<
26206 (outs HvxQR:$Qx4),
26207 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26208 "$Qx4 &= vcmp.eq($Vu32.ub,$Vv32.ub)",
26209 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26210 let isPseudo = 1;
26211 let isCodeGenOnly = 1;
26212 let DecoderNamespace = "EXT_mmvec";
26213 let Constraints = "$Qx4 = $Qx4in";
26214 }
26215 def V6_MAP_equb_ior : HInst<
26216 (outs HvxQR:$Qx4),
26217 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26218 "$Qx4 |= vcmp.eq($Vu32.ub,$Vv32.ub)",
26219 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26220 let isAccumulator = 1;
26221 let isPseudo = 1;
26222 let isCodeGenOnly = 1;
26223 let DecoderNamespace = "EXT_mmvec";
26224 let Constraints = "$Qx4 = $Qx4in";
26225 }
26226 def V6_MAP_equb_xor : HInst<
26227 (outs HvxQR:$Qx4),
26228 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26229 "$Qx4 ^= vcmp.eq($Vu32.ub,$Vv32.ub)",
26230 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26231 let isPseudo = 1;
26232 let isCodeGenOnly = 1;
26233 let DecoderNamespace = "EXT_mmvec";
26234 let Constraints = "$Qx4 = $Qx4in";
26235 }
26236 def V6_MAP_equh : HInst<
26237 (outs HvxQR:$Qd4),
26238 (ins HvxVR:$Vu32, HvxVR:$Vv32),
26239 "$Qd4 = vcmp.eq($Vu32.uh,$Vv32.uh)",
26240 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26241 let hasNewValue = 1;
26242 let opNewValue = 0;
26243 let isPseudo = 1;
26244 let isCodeGenOnly = 1;
26245 let DecoderNamespace = "EXT_mmvec";
26246 }
26247 def V6_MAP_equh_and : HInst<
26248 (outs HvxQR:$Qx4),
26249 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26250 "$Qx4 &= vcmp.eq($Vu32.uh,$Vv32.uh)",
26251 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26252 let isPseudo = 1;
26253 let isCodeGenOnly = 1;
26254 let DecoderNamespace = "EXT_mmvec";
26255 let Constraints = "$Qx4 = $Qx4in";
26256 }
26257 def V6_MAP_equh_ior : HInst<
26258 (outs HvxQR:$Qx4),
26259 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26260 "$Qx4 |= vcmp.eq($Vu32.uh,$Vv32.uh)",
26261 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26262 let isAccumulator = 1;
26263 let isPseudo = 1;
26264 let isCodeGenOnly = 1;
26265 let DecoderNamespace = "EXT_mmvec";
26266 let Constraints = "$Qx4 = $Qx4in";
26267 }
26268 def V6_MAP_equh_xor : HInst<
26269 (outs HvxQR:$Qx4),
26270 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26271 "$Qx4 ^= vcmp.eq($Vu32.uh,$Vv32.uh)",
26272 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26273 let isPseudo = 1;
26274 let isCodeGenOnly = 1;
26275 let DecoderNamespace = "EXT_mmvec";
26276 let Constraints = "$Qx4 = $Qx4in";
26277 }
26278 def V6_MAP_equw : HInst<
26279 (outs HvxQR:$Qd4),
26280 (ins HvxVR:$Vu32, HvxVR:$Vv32),
26281 "$Qd4 = vcmp.eq($Vu32.uw,$Vv32.uw)",
26282 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26283 let hasNewValue = 1;
26284 let opNewValue = 0;
26285 let isPseudo = 1;
26286 let isCodeGenOnly = 1;
26287 let DecoderNamespace = "EXT_mmvec";
26288 }
26289 def V6_MAP_equw_and : HInst<
26290 (outs HvxQR:$Qx4),
26291 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26292 "$Qx4 &= vcmp.eq($Vu32.uw,$Vv32.uw)",
26293 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26294 let isPseudo = 1;
26295 let isCodeGenOnly = 1;
26296 let DecoderNamespace = "EXT_mmvec";
26297 let Constraints = "$Qx4 = $Qx4in";
26298 }
26299 def V6_MAP_equw_ior : HInst<
26300 (outs HvxQR:$Qx4),
26301 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26302 "$Qx4 |= vcmp.eq($Vu32.uw,$Vv32.uw)",
26303 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26304 let isAccumulator = 1;
26305 let isPseudo = 1;
26306 let isCodeGenOnly = 1;
26307 let DecoderNamespace = "EXT_mmvec";
26308 let Constraints = "$Qx4 = $Qx4in";
26309 }
26310 def V6_MAP_equw_xor : HInst<
26311 (outs HvxQR:$Qx4),
26312 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
26313 "$Qx4 ^= vcmp.eq($Vu32.uw,$Vv32.uw)",
26314 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26315 let isPseudo = 1;
26316 let isCodeGenOnly = 1;
26317 let DecoderNamespace = "EXT_mmvec";
26318 let Constraints = "$Qx4 = $Qx4in";
26319 }
26320 def V6_extractw : HInst<
26321 (outs IntRegs:$Rd32),
26322 (ins HvxVR:$Vu32, IntRegs:$Rs32),
26323 "$Rd32 = vextract($Vu32,$Rs32)",
26324 tc_540c3da3, TypeLD>, Enc_50e578, Requires<[UseHVXV60]> {
26325 let Inst{7-5} = 0b001;
26326 let Inst{13-13} = 0b0;
26327 let Inst{31-21} = 0b10010010000;
26328 let hasNewValue = 1;
26329 let opNewValue = 0;
26330 let isSolo = 1;
26331 let mayLoad = 1;
26332 let DecoderNamespace = "EXT_mmvec";
26333 }
26334 def V6_extractw_alt : HInst<
26335 (outs IntRegs:$Rd32),
26336 (ins HvxVR:$Vu32, IntRegs:$Rs32),
26337 "$Rd32.w = vextract($Vu32,$Rs32)",
26338 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
26339 let hasNewValue = 1;
26340 let opNewValue = 0;
26341 let isPseudo = 1;
26342 let isCodeGenOnly = 1;
26343 let DecoderNamespace = "EXT_mmvec";
26344 }
26345 def V6_hi : HInst<
26346 (outs HvxVR:$Vd32),
26347 (ins HvxWR:$Vss32),
26348 "$Vd32 = hi($Vss32)",
26349 CVI_VA, TypeCVI_VA>, Requires<[UseHVXV60]> {
26350 let hasNewValue = 1;
26351 let opNewValue = 0;
26352 let isPseudo = 1;
26353 let DecoderNamespace = "EXT_mmvec";
26354 }
26355 def V6_ld0 : HInst<
26356 (outs HvxVR:$Vd32),
26357 (ins IntRegs:$Rt32),
26358 "$Vd32 = vmem($Rt32)",
26359 PSEUDO, TypeCVI_VM_LD>, Requires<[UseHVXV60]> {
26360 let hasNewValue = 1;
26361 let opNewValue = 0;
26362 let isPseudo = 1;
26363 let isCodeGenOnly = 1;
26364 let DecoderNamespace = "EXT_mmvec";
26365 }
26366 def V6_ldcnp0 : HInst<
26367 (outs HvxVR:$Vd32),
26368 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26369 "if (!$Pv4) $Vd32.cur = vmem($Rt32)",
26370 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26371 let hasNewValue = 1;
26372 let opNewValue = 0;
26373 let isPseudo = 1;
26374 let isCodeGenOnly = 1;
26375 let DecoderNamespace = "EXT_mmvec";
26376 }
26377 def V6_ldcnpnt0 : HInst<
26378 (outs HvxVR:$Vd32),
26379 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26380 "if (!$Pv4) $Vd32.cur = vmem($Rt32):nt",
26381 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26382 let hasNewValue = 1;
26383 let opNewValue = 0;
26384 let isPseudo = 1;
26385 let isCodeGenOnly = 1;
26386 let DecoderNamespace = "EXT_mmvec";
26387 }
26388 def V6_ldcp0 : HInst<
26389 (outs HvxVR:$Vd32),
26390 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26391 "if ($Pv4) $Vd32.cur = vmem($Rt32)",
26392 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26393 let hasNewValue = 1;
26394 let opNewValue = 0;
26395 let isPseudo = 1;
26396 let isCodeGenOnly = 1;
26397 let DecoderNamespace = "EXT_mmvec";
26398 }
26399 def V6_ldcpnt0 : HInst<
26400 (outs HvxVR:$Vd32),
26401 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26402 "if ($Pv4) $Vd32.cur = vmem($Rt32):nt",
26403 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26404 let hasNewValue = 1;
26405 let opNewValue = 0;
26406 let isPseudo = 1;
26407 let isCodeGenOnly = 1;
26408 let DecoderNamespace = "EXT_mmvec";
26409 }
26410 def V6_ldnp0 : HInst<
26411 (outs HvxVR:$Vd32),
26412 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26413 "if (!$Pv4) $Vd32 = vmem($Rt32)",
26414 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26415 let hasNewValue = 1;
26416 let opNewValue = 0;
26417 let isPseudo = 1;
26418 let isCodeGenOnly = 1;
26419 let DecoderNamespace = "EXT_mmvec";
26420 }
26421 def V6_ldnpnt0 : HInst<
26422 (outs HvxVR:$Vd32),
26423 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26424 "if (!$Pv4) $Vd32 = vmem($Rt32):nt",
26425 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26426 let hasNewValue = 1;
26427 let opNewValue = 0;
26428 let isPseudo = 1;
26429 let isCodeGenOnly = 1;
26430 let DecoderNamespace = "EXT_mmvec";
26431 }
26432 def V6_ldnt0 : HInst<
26433 (outs HvxVR:$Vd32),
26434 (ins IntRegs:$Rt32),
26435 "$Vd32 = vmem($Rt32):nt",
26436 PSEUDO, TypeCVI_VM_LD>, Requires<[UseHVXV60]> {
26437 let hasNewValue = 1;
26438 let opNewValue = 0;
26439 let isPseudo = 1;
26440 let isCodeGenOnly = 1;
26441 let DecoderNamespace = "EXT_mmvec";
26442 }
26443 def V6_ldntnt0 : HInst<
26444 (outs HvxVR:$Vd32),
26445 (ins IntRegs:$Rt32),
26446 "$Vd32 = vmem($Rt32):nt",
26447 PSEUDO, TypeMAPPING>, Requires<[HasV62]> {
26448 let hasNewValue = 1;
26449 let opNewValue = 0;
26450 let isPseudo = 1;
26451 let isCodeGenOnly = 1;
26452 let DecoderNamespace = "EXT_mmvec";
26453 }
26454 def V6_ldp0 : HInst<
26455 (outs HvxVR:$Vd32),
26456 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26457 "if ($Pv4) $Vd32 = vmem($Rt32)",
26458 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26459 let hasNewValue = 1;
26460 let opNewValue = 0;
26461 let isPseudo = 1;
26462 let isCodeGenOnly = 1;
26463 let DecoderNamespace = "EXT_mmvec";
26464 }
26465 def V6_ldpnt0 : HInst<
26466 (outs HvxVR:$Vd32),
26467 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26468 "if ($Pv4) $Vd32 = vmem($Rt32):nt",
26469 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26470 let hasNewValue = 1;
26471 let opNewValue = 0;
26472 let isPseudo = 1;
26473 let isCodeGenOnly = 1;
26474 let DecoderNamespace = "EXT_mmvec";
26475 }
26476 def V6_ldtnp0 : HInst<
26477 (outs HvxVR:$Vd32),
26478 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26479 "if (!$Pv4) $Vd32.tmp = vmem($Rt32)",
26480 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26481 let hasNewValue = 1;
26482 let opNewValue = 0;
26483 let isPseudo = 1;
26484 let isCodeGenOnly = 1;
26485 let DecoderNamespace = "EXT_mmvec";
26486 }
26487 def V6_ldtnpnt0 : HInst<
26488 (outs HvxVR:$Vd32),
26489 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26490 "if (!$Pv4) $Vd32.tmp = vmem($Rt32):nt",
26491 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26492 let hasNewValue = 1;
26493 let opNewValue = 0;
26494 let isPseudo = 1;
26495 let isCodeGenOnly = 1;
26496 let DecoderNamespace = "EXT_mmvec";
26497 }
26498 def V6_ldtp0 : HInst<
26499 (outs HvxVR:$Vd32),
26500 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26501 "if ($Pv4) $Vd32.tmp = vmem($Rt32)",
26502 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26503 let hasNewValue = 1;
26504 let opNewValue = 0;
26505 let isPseudo = 1;
26506 let isCodeGenOnly = 1;
26507 let DecoderNamespace = "EXT_mmvec";
26508 }
26509 def V6_ldtpnt0 : HInst<
26510 (outs HvxVR:$Vd32),
26511 (ins PredRegs:$Pv4, IntRegs:$Rt32),
26512 "if ($Pv4) $Vd32.tmp = vmem($Rt32):nt",
26513 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
26514 let hasNewValue = 1;
26515 let opNewValue = 0;
26516 let isPseudo = 1;
26517 let isCodeGenOnly = 1;
26518 let DecoderNamespace = "EXT_mmvec";
26519 }
26520 def V6_ldu0 : HInst<
26521 (outs HvxVR:$Vd32),
26522 (ins IntRegs:$Rt32),
26523 "$Vd32 = vmemu($Rt32)",
26524 PSEUDO, TypeCVI_VM_LD>, Requires<[UseHVXV60]> {
26525 let hasNewValue = 1;
26526 let opNewValue = 0;
26527 let isPseudo = 1;
26528 let isCodeGenOnly = 1;
26529 let DecoderNamespace = "EXT_mmvec";
26530 }
26531 def V6_lo : HInst<
26532 (outs HvxVR:$Vd32),
26533 (ins HvxWR:$Vss32),
26534 "$Vd32 = lo($Vss32)",
26535 CVI_VA, TypeCVI_VA>, Requires<[UseHVXV60]> {
26536 let hasNewValue = 1;
26537 let opNewValue = 0;
26538 let isPseudo = 1;
26539 let DecoderNamespace = "EXT_mmvec";
26540 }
26541 def V6_lvsplatb : HInst<
26542 (outs HvxVR:$Vd32),
26543 (ins IntRegs:$Rt32),
26544 "$Vd32.b = vsplat($Rt32)",
26545 tc_c4edf264, TypeCVI_VX>, Enc_a5ed8a, Requires<[UseHVXV62]> {
26546 let Inst{13-5} = 0b000000010;
26547 let Inst{31-21} = 0b00011001110;
26548 let hasNewValue = 1;
26549 let opNewValue = 0;
26550 let DecoderNamespace = "EXT_mmvec";
26551 }
26552 def V6_lvsplath : HInst<
26553 (outs HvxVR:$Vd32),
26554 (ins IntRegs:$Rt32),
26555 "$Vd32.h = vsplat($Rt32)",
26556 tc_c4edf264, TypeCVI_VX>, Enc_a5ed8a, Requires<[UseHVXV62]> {
26557 let Inst{13-5} = 0b000000001;
26558 let Inst{31-21} = 0b00011001110;
26559 let hasNewValue = 1;
26560 let opNewValue = 0;
26561 let DecoderNamespace = "EXT_mmvec";
26562 }
26563 def V6_lvsplatw : HInst<
26564 (outs HvxVR:$Vd32),
26565 (ins IntRegs:$Rt32),
26566 "$Vd32 = vsplat($Rt32)",
26567 tc_c4edf264, TypeCVI_VX_LATE>, Enc_a5ed8a, Requires<[UseHVXV60]> {
26568 let Inst{13-5} = 0b000000001;
26569 let Inst{31-21} = 0b00011001101;
26570 let hasNewValue = 1;
26571 let opNewValue = 0;
26572 let DecoderNamespace = "EXT_mmvec";
26573 }
26574 def V6_pred_and : HInst<
26575 (outs HvxQR:$Qd4),
26576 (ins HvxQR:$Qs4, HvxQR:$Qt4),
26577 "$Qd4 = and($Qs4,$Qt4)",
26578 tc_db5555f3, TypeCVI_VA_DV>, Enc_134437, Requires<[UseHVXV60]> {
26579 let Inst{7-2} = 0b000000;
26580 let Inst{13-10} = 0b0000;
26581 let Inst{21-16} = 0b000011;
26582 let Inst{31-24} = 0b00011110;
26583 let hasNewValue = 1;
26584 let opNewValue = 0;
26585 let DecoderNamespace = "EXT_mmvec";
26586 }
26587 def V6_pred_and_n : HInst<
26588 (outs HvxQR:$Qd4),
26589 (ins HvxQR:$Qs4, HvxQR:$Qt4),
26590 "$Qd4 = and($Qs4,!$Qt4)",
26591 tc_db5555f3, TypeCVI_VA_DV>, Enc_134437, Requires<[UseHVXV60]> {
26592 let Inst{7-2} = 0b000101;
26593 let Inst{13-10} = 0b0000;
26594 let Inst{21-16} = 0b000011;
26595 let Inst{31-24} = 0b00011110;
26596 let hasNewValue = 1;
26597 let opNewValue = 0;
26598 let DecoderNamespace = "EXT_mmvec";
26599 }
26600 def V6_pred_not : HInst<
26601 (outs HvxQR:$Qd4),
26602 (ins HvxQR:$Qs4),
26603 "$Qd4 = not($Qs4)",
26604 tc_0ec46cf9, TypeCVI_VA>, Enc_bfbf03, Requires<[UseHVXV60]> {
26605 let Inst{7-2} = 0b000010;
26606 let Inst{13-10} = 0b0000;
26607 let Inst{31-16} = 0b0001111000000011;
26608 let hasNewValue = 1;
26609 let opNewValue = 0;
26610 let DecoderNamespace = "EXT_mmvec";
26611 }
26612 def V6_pred_or : HInst<
26613 (outs HvxQR:$Qd4),
26614 (ins HvxQR:$Qs4, HvxQR:$Qt4),
26615 "$Qd4 = or($Qs4,$Qt4)",
26616 tc_db5555f3, TypeCVI_VA_DV>, Enc_134437, Requires<[UseHVXV60]> {
26617 let Inst{7-2} = 0b000001;
26618 let Inst{13-10} = 0b0000;
26619 let Inst{21-16} = 0b000011;
26620 let Inst{31-24} = 0b00011110;
26621 let hasNewValue = 1;
26622 let opNewValue = 0;
26623 let DecoderNamespace = "EXT_mmvec";
26624 }
26625 def V6_pred_or_n : HInst<
26626 (outs HvxQR:$Qd4),
26627 (ins HvxQR:$Qs4, HvxQR:$Qt4),
26628 "$Qd4 = or($Qs4,!$Qt4)",
26629 tc_db5555f3, TypeCVI_VA_DV>, Enc_134437, Requires<[UseHVXV60]> {
26630 let Inst{7-2} = 0b000100;
26631 let Inst{13-10} = 0b0000;
26632 let Inst{21-16} = 0b000011;
26633 let Inst{31-24} = 0b00011110;
26634 let hasNewValue = 1;
26635 let opNewValue = 0;
26636 let DecoderNamespace = "EXT_mmvec";
26637 }
26638 def V6_pred_scalar2 : HInst<
26639 (outs HvxQR:$Qd4),
26640 (ins IntRegs:$Rt32),
26641 "$Qd4 = vsetq($Rt32)",
26642 tc_5bf8afbb, TypeCVI_VP>, Enc_7222b7, Requires<[UseHVXV60]> {
26643 let Inst{13-2} = 0b000000010001;
26644 let Inst{31-21} = 0b00011001101;
26645 let hasNewValue = 1;
26646 let opNewValue = 0;
26647 let DecoderNamespace = "EXT_mmvec";
26648 }
26649 def V6_pred_scalar2v2 : HInst<
26650 (outs HvxQR:$Qd4),
26651 (ins IntRegs:$Rt32),
26652 "$Qd4 = vsetq2($Rt32)",
26653 tc_5bf8afbb, TypeCVI_VP>, Enc_7222b7, Requires<[UseHVXV62]> {
26654 let Inst{13-2} = 0b000000010011;
26655 let Inst{31-21} = 0b00011001101;
26656 let hasNewValue = 1;
26657 let opNewValue = 0;
26658 let DecoderNamespace = "EXT_mmvec";
26659 }
26660 def V6_pred_xor : HInst<
26661 (outs HvxQR:$Qd4),
26662 (ins HvxQR:$Qs4, HvxQR:$Qt4),
26663 "$Qd4 = xor($Qs4,$Qt4)",
26664 tc_db5555f3, TypeCVI_VA_DV>, Enc_134437, Requires<[UseHVXV60]> {
26665 let Inst{7-2} = 0b000011;
26666 let Inst{13-10} = 0b0000;
26667 let Inst{21-16} = 0b000011;
26668 let Inst{31-24} = 0b00011110;
26669 let hasNewValue = 1;
26670 let opNewValue = 0;
26671 let DecoderNamespace = "EXT_mmvec";
26672 }
26673 def V6_shuffeqh : HInst<
26674 (outs HvxQR:$Qd4),
26675 (ins HvxQR:$Qs4, HvxQR:$Qt4),
26676 "$Qd4.b = vshuffe($Qs4.h,$Qt4.h)",
26677 tc_db5555f3, TypeCVI_VA_DV>, Enc_134437, Requires<[UseHVXV62]> {
26678 let Inst{7-2} = 0b000110;
26679 let Inst{13-10} = 0b0000;
26680 let Inst{21-16} = 0b000011;
26681 let Inst{31-24} = 0b00011110;
26682 let hasNewValue = 1;
26683 let opNewValue = 0;
26684 let DecoderNamespace = "EXT_mmvec";
26685 }
26686 def V6_shuffeqw : HInst<
26687 (outs HvxQR:$Qd4),
26688 (ins HvxQR:$Qs4, HvxQR:$Qt4),
26689 "$Qd4.h = vshuffe($Qs4.w,$Qt4.w)",
26690 tc_db5555f3, TypeCVI_VA_DV>, Enc_134437, Requires<[UseHVXV62]> {
26691 let Inst{7-2} = 0b000111;
26692 let Inst{13-10} = 0b0000;
26693 let Inst{21-16} = 0b000011;
26694 let Inst{31-24} = 0b00011110;
26695 let hasNewValue = 1;
26696 let opNewValue = 0;
26697 let DecoderNamespace = "EXT_mmvec";
26698 }
26699 def V6_st0 : HInst<
26700 (outs),
26701 (ins IntRegs:$Rt32, HvxVR:$Vs32),
26702 "vmem($Rt32) = $Vs32",
26703 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26704 let isPseudo = 1;
26705 let isCodeGenOnly = 1;
26706 let DecoderNamespace = "EXT_mmvec";
26707 }
26708 def V6_stn0 : HInst<
26709 (outs),
26710 (ins IntRegs:$Rt32, HvxVR:$Os8),
26711 "vmem($Rt32) = $Os8.new",
26712 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26713 let isPseudo = 1;
26714 let isCodeGenOnly = 1;
26715 let DecoderNamespace = "EXT_mmvec";
26716 let opNewValue = 1;
26717 }
26718 def V6_stnnt0 : HInst<
26719 (outs),
26720 (ins IntRegs:$Rt32, HvxVR:$Os8),
26721 "vmem($Rt32):nt = $Os8.new",
26722 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26723 let isPseudo = 1;
26724 let isCodeGenOnly = 1;
26725 let DecoderNamespace = "EXT_mmvec";
26726 let opNewValue = 1;
26727 }
26728 def V6_stnp0 : HInst<
26729 (outs),
26730 (ins PredRegs:$Pv4, IntRegs:$Rt32, HvxVR:$Vs32),
26731 "if (!$Pv4) vmem($Rt32) = $Vs32",
26732 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26733 let isPseudo = 1;
26734 let isCodeGenOnly = 1;
26735 let DecoderNamespace = "EXT_mmvec";
26736 }
26737 def V6_stnpnt0 : HInst<
26738 (outs),
26739 (ins PredRegs:$Pv4, IntRegs:$Rt32, HvxVR:$Vs32),
26740 "if (!$Pv4) vmem($Rt32):nt = $Vs32",
26741 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26742 let isPseudo = 1;
26743 let isCodeGenOnly = 1;
26744 let DecoderNamespace = "EXT_mmvec";
26745 }
26746 def V6_stnq0 : HInst<
26747 (outs),
26748 (ins HvxQR:$Qv4, IntRegs:$Rt32, HvxVR:$Vs32),
26749 "if (!$Qv4) vmem($Rt32) = $Vs32",
26750 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26751 let isPseudo = 1;
26752 let isCodeGenOnly = 1;
26753 let DecoderNamespace = "EXT_mmvec";
26754 }
26755 def V6_stnqnt0 : HInst<
26756 (outs),
26757 (ins HvxQR:$Qv4, IntRegs:$Rt32, HvxVR:$Vs32),
26758 "if (!$Qv4) vmem($Rt32):nt = $Vs32",
26759 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26760 let isPseudo = 1;
26761 let isCodeGenOnly = 1;
26762 let DecoderNamespace = "EXT_mmvec";
26763 }
26764 def V6_stnt0 : HInst<
26765 (outs),
26766 (ins IntRegs:$Rt32, HvxVR:$Vs32),
26767 "vmem($Rt32):nt = $Vs32",
26768 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26769 let isPseudo = 1;
26770 let isCodeGenOnly = 1;
26771 let DecoderNamespace = "EXT_mmvec";
26772 }
26773 def V6_stp0 : HInst<
26774 (outs),
26775 (ins PredRegs:$Pv4, IntRegs:$Rt32, HvxVR:$Vs32),
26776 "if ($Pv4) vmem($Rt32) = $Vs32",
26777 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26778 let isPseudo = 1;
26779 let isCodeGenOnly = 1;
26780 let DecoderNamespace = "EXT_mmvec";
26781 }
26782 def V6_stpnt0 : HInst<
26783 (outs),
26784 (ins PredRegs:$Pv4, IntRegs:$Rt32, HvxVR:$Vs32),
26785 "if ($Pv4) vmem($Rt32):nt = $Vs32",
26786 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26787 let isPseudo = 1;
26788 let isCodeGenOnly = 1;
26789 let DecoderNamespace = "EXT_mmvec";
26790 }
26791 def V6_stq0 : HInst<
26792 (outs),
26793 (ins HvxQR:$Qv4, IntRegs:$Rt32, HvxVR:$Vs32),
26794 "if ($Qv4) vmem($Rt32) = $Vs32",
26795 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26796 let isPseudo = 1;
26797 let isCodeGenOnly = 1;
26798 let DecoderNamespace = "EXT_mmvec";
26799 }
26800 def V6_stqnt0 : HInst<
26801 (outs),
26802 (ins HvxQR:$Qv4, IntRegs:$Rt32, HvxVR:$Vs32),
26803 "if ($Qv4) vmem($Rt32):nt = $Vs32",
26804 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26805 let isPseudo = 1;
26806 let isCodeGenOnly = 1;
26807 let DecoderNamespace = "EXT_mmvec";
26808 }
26809 def V6_stu0 : HInst<
26810 (outs),
26811 (ins IntRegs:$Rt32, HvxVR:$Vs32),
26812 "vmemu($Rt32) = $Vs32",
26813 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26814 let isPseudo = 1;
26815 let isCodeGenOnly = 1;
26816 let DecoderNamespace = "EXT_mmvec";
26817 }
26818 def V6_stunp0 : HInst<
26819 (outs),
26820 (ins PredRegs:$Pv4, IntRegs:$Rt32, HvxVR:$Vs32),
26821 "if (!$Pv4) vmemu($Rt32) = $Vs32",
26822 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26823 let isPseudo = 1;
26824 let isCodeGenOnly = 1;
26825 let DecoderNamespace = "EXT_mmvec";
26826 }
26827 def V6_stup0 : HInst<
26828 (outs),
26829 (ins PredRegs:$Pv4, IntRegs:$Rt32, HvxVR:$Vs32),
26830 "if ($Pv4) vmemu($Rt32) = $Vs32",
26831 PSEUDO, TypeCVI_VM_ST>, Requires<[UseHVXV60]> {
26832 let isPseudo = 1;
26833 let isCodeGenOnly = 1;
26834 let DecoderNamespace = "EXT_mmvec";
26835 }
26836 def V6_vL32Ub_ai : HInst<
26837 (outs HvxVR:$Vd32),
26838 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
26839 "$Vd32 = vmemu($Rt32+#$Ii)",
26840 tc_a7e6707d, TypeCVI_VM_VP_LDU>, Enc_f3f408, Requires<[UseHVXV60]> {
26841 let Inst{7-5} = 0b111;
26842 let Inst{12-11} = 0b00;
26843 let Inst{31-21} = 0b00101000000;
26844 let hasNewValue = 1;
26845 let opNewValue = 0;
26846 let addrMode = BaseImmOffset;
26847 let accessSize = HVXVectorAccess;
26848 let isCVLoad = 1;
26849 let mayLoad = 1;
26850 let isRestrictNoSlot1Store = 1;
26851 let DecoderNamespace = "EXT_mmvec";
26852 }
26853 def V6_vL32Ub_pi : HInst<
26854 (outs HvxVR:$Vd32, IntRegs:$Rx32),
26855 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
26856 "$Vd32 = vmemu($Rx32++#$Ii)",
26857 tc_3c56e5ce, TypeCVI_VM_VP_LDU>, Enc_a255dc, Requires<[UseHVXV60]> {
26858 let Inst{7-5} = 0b111;
26859 let Inst{13-11} = 0b000;
26860 let Inst{31-21} = 0b00101001000;
26861 let hasNewValue = 1;
26862 let opNewValue = 0;
26863 let addrMode = PostInc;
26864 let accessSize = HVXVectorAccess;
26865 let isCVLoad = 1;
26866 let mayLoad = 1;
26867 let isRestrictNoSlot1Store = 1;
26868 let BaseOpcode = "V6_vL32b_pi";
26869 let DecoderNamespace = "EXT_mmvec";
26870 let Constraints = "$Rx32 = $Rx32in";
26871 }
26872 def V6_vL32Ub_ppu : HInst<
26873 (outs HvxVR:$Vd32, IntRegs:$Rx32),
26874 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
26875 "$Vd32 = vmemu($Rx32++$Mu2)",
26876 tc_3c56e5ce, TypeCVI_VM_VP_LDU>, Enc_2ebe3b, Requires<[UseHVXV60]> {
26877 let Inst{12-5} = 0b00000111;
26878 let Inst{31-21} = 0b00101011000;
26879 let hasNewValue = 1;
26880 let opNewValue = 0;
26881 let addrMode = PostInc;
26882 let accessSize = HVXVectorAccess;
26883 let isCVLoad = 1;
26884 let mayLoad = 1;
26885 let isRestrictNoSlot1Store = 1;
26886 let DecoderNamespace = "EXT_mmvec";
26887 let Constraints = "$Rx32 = $Rx32in";
26888 }
26889 def V6_vL32b_ai : HInst<
26890 (outs HvxVR:$Vd32),
26891 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
26892 "$Vd32 = vmem($Rt32+#$Ii)",
26893 tc_c0749f3c, TypeCVI_VM_LD>, Enc_f3f408, Requires<[UseHVXV60]>, PredRel {
26894 let Inst{7-5} = 0b000;
26895 let Inst{12-11} = 0b00;
26896 let Inst{31-21} = 0b00101000000;
26897 let hasNewValue = 1;
26898 let opNewValue = 0;
26899 let addrMode = BaseImmOffset;
26900 let accessSize = HVXVectorAccess;
26901 let isCVLoad = 1;
26902 let mayLoad = 1;
26903 let isRestrictNoSlot1Store = 1;
26904 let BaseOpcode = "V6_vL32b_ai";
26905 let isCVLoadable = 1;
26906 let isPredicable = 1;
26907 let DecoderNamespace = "EXT_mmvec";
26908 }
26909 def V6_vL32b_cur_ai : HInst<
26910 (outs HvxVR:$Vd32),
26911 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
26912 "$Vd32.cur = vmem($Rt32+#$Ii)",
26913 tc_c0749f3c, TypeCVI_VM_LD>, Enc_f3f408, Requires<[UseHVXV60]>, PredRel {
26914 let Inst{7-5} = 0b001;
26915 let Inst{12-11} = 0b00;
26916 let Inst{31-21} = 0b00101000000;
26917 let hasNewValue = 1;
26918 let opNewValue = 0;
26919 let addrMode = BaseImmOffset;
26920 let accessSize = HVXVectorAccess;
26921 let isCVLoad = 1;
26922 let CVINew = 1;
26923 let mayLoad = 1;
26924 let isRestrictNoSlot1Store = 1;
26925 let BaseOpcode = "V6_vL32b_cur_ai";
26926 let isPredicable = 1;
26927 let DecoderNamespace = "EXT_mmvec";
26928 }
26929 def V6_vL32b_cur_npred_ai : HInst<
26930 (outs HvxVR:$Vd32),
26931 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
26932 "if (!$Pv4) $Vd32.cur = vmem($Rt32+#$Ii)",
26933 tc_abe8c3b2, TypeCVI_VM_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
26934 let Inst{7-5} = 0b101;
26935 let Inst{31-21} = 0b00101000100;
26936 let isPredicated = 1;
26937 let isPredicatedFalse = 1;
26938 let hasNewValue = 1;
26939 let opNewValue = 0;
26940 let addrMode = BaseImmOffset;
26941 let accessSize = HVXVectorAccess;
26942 let isCVLoad = 1;
26943 let CVINew = 1;
26944 let mayLoad = 1;
26945 let isRestrictNoSlot1Store = 1;
26946 let BaseOpcode = "V6_vL32b_cur_ai";
26947 let DecoderNamespace = "EXT_mmvec";
26948 }
26949 def V6_vL32b_cur_npred_pi : HInst<
26950 (outs HvxVR:$Vd32, IntRegs:$Rx32),
26951 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
26952 "if (!$Pv4) $Vd32.cur = vmem($Rx32++#$Ii)",
26953 tc_453fe68d, TypeCVI_VM_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
26954 let Inst{7-5} = 0b101;
26955 let Inst{13-13} = 0b0;
26956 let Inst{31-21} = 0b00101001100;
26957 let isPredicated = 1;
26958 let isPredicatedFalse = 1;
26959 let hasNewValue = 1;
26960 let opNewValue = 0;
26961 let addrMode = PostInc;
26962 let accessSize = HVXVectorAccess;
26963 let isCVLoad = 1;
26964 let CVINew = 1;
26965 let mayLoad = 1;
26966 let isRestrictNoSlot1Store = 1;
26967 let BaseOpcode = "V6_vL32b_cur_pi";
26968 let DecoderNamespace = "EXT_mmvec";
26969 let Constraints = "$Rx32 = $Rx32in";
26970 }
26971 def V6_vL32b_cur_npred_ppu : HInst<
26972 (outs HvxVR:$Vd32, IntRegs:$Rx32),
26973 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
26974 "if (!$Pv4) $Vd32.cur = vmem($Rx32++$Mu2)",
26975 tc_453fe68d, TypeCVI_VM_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
26976 let Inst{10-5} = 0b000101;
26977 let Inst{31-21} = 0b00101011100;
26978 let isPredicated = 1;
26979 let isPredicatedFalse = 1;
26980 let hasNewValue = 1;
26981 let opNewValue = 0;
26982 let addrMode = PostInc;
26983 let accessSize = HVXVectorAccess;
26984 let isCVLoad = 1;
26985 let CVINew = 1;
26986 let mayLoad = 1;
26987 let isRestrictNoSlot1Store = 1;
26988 let BaseOpcode = "V6_vL32b_cur_ppu";
26989 let DecoderNamespace = "EXT_mmvec";
26990 let Constraints = "$Rx32 = $Rx32in";
26991 }
26992 def V6_vL32b_cur_pi : HInst<
26993 (outs HvxVR:$Vd32, IntRegs:$Rx32),
26994 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
26995 "$Vd32.cur = vmem($Rx32++#$Ii)",
26996 tc_1ba8a0cd, TypeCVI_VM_LD>, Enc_a255dc, Requires<[UseHVXV60]>, PredRel {
26997 let Inst{7-5} = 0b001;
26998 let Inst{13-11} = 0b000;
26999 let Inst{31-21} = 0b00101001000;
27000 let hasNewValue = 1;
27001 let opNewValue = 0;
27002 let addrMode = PostInc;
27003 let accessSize = HVXVectorAccess;
27004 let isCVLoad = 1;
27005 let CVINew = 1;
27006 let mayLoad = 1;
27007 let isRestrictNoSlot1Store = 1;
27008 let BaseOpcode = "V6_vL32b_cur_pi";
27009 let isPredicable = 1;
27010 let DecoderNamespace = "EXT_mmvec";
27011 let Constraints = "$Rx32 = $Rx32in";
27012 }
27013 def V6_vL32b_cur_ppu : HInst<
27014 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27015 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
27016 "$Vd32.cur = vmem($Rx32++$Mu2)",
27017 tc_1ba8a0cd, TypeCVI_VM_LD>, Enc_2ebe3b, Requires<[UseHVXV60]>, PredRel {
27018 let Inst{12-5} = 0b00000001;
27019 let Inst{31-21} = 0b00101011000;
27020 let hasNewValue = 1;
27021 let opNewValue = 0;
27022 let addrMode = PostInc;
27023 let accessSize = HVXVectorAccess;
27024 let isCVLoad = 1;
27025 let CVINew = 1;
27026 let mayLoad = 1;
27027 let isRestrictNoSlot1Store = 1;
27028 let BaseOpcode = "V6_vL32b_cur_ppu";
27029 let isPredicable = 1;
27030 let DecoderNamespace = "EXT_mmvec";
27031 let Constraints = "$Rx32 = $Rx32in";
27032 }
27033 def V6_vL32b_cur_pred_ai : HInst<
27034 (outs HvxVR:$Vd32),
27035 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27036 "if ($Pv4) $Vd32.cur = vmem($Rt32+#$Ii)",
27037 tc_abe8c3b2, TypeCVI_VM_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27038 let Inst{7-5} = 0b100;
27039 let Inst{31-21} = 0b00101000100;
27040 let isPredicated = 1;
27041 let hasNewValue = 1;
27042 let opNewValue = 0;
27043 let addrMode = BaseImmOffset;
27044 let accessSize = HVXVectorAccess;
27045 let isCVLoad = 1;
27046 let CVINew = 1;
27047 let mayLoad = 1;
27048 let isRestrictNoSlot1Store = 1;
27049 let BaseOpcode = "V6_vL32b_cur_ai";
27050 let DecoderNamespace = "EXT_mmvec";
27051 }
27052 def V6_vL32b_cur_pred_pi : HInst<
27053 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27054 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27055 "if ($Pv4) $Vd32.cur = vmem($Rx32++#$Ii)",
27056 tc_453fe68d, TypeCVI_VM_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27057 let Inst{7-5} = 0b100;
27058 let Inst{13-13} = 0b0;
27059 let Inst{31-21} = 0b00101001100;
27060 let isPredicated = 1;
27061 let hasNewValue = 1;
27062 let opNewValue = 0;
27063 let addrMode = PostInc;
27064 let accessSize = HVXVectorAccess;
27065 let isCVLoad = 1;
27066 let CVINew = 1;
27067 let mayLoad = 1;
27068 let isRestrictNoSlot1Store = 1;
27069 let BaseOpcode = "V6_vL32b_cur_pi";
27070 let DecoderNamespace = "EXT_mmvec";
27071 let Constraints = "$Rx32 = $Rx32in";
27072 }
27073 def V6_vL32b_cur_pred_ppu : HInst<
27074 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27075 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27076 "if ($Pv4) $Vd32.cur = vmem($Rx32++$Mu2)",
27077 tc_453fe68d, TypeCVI_VM_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27078 let Inst{10-5} = 0b000100;
27079 let Inst{31-21} = 0b00101011100;
27080 let isPredicated = 1;
27081 let hasNewValue = 1;
27082 let opNewValue = 0;
27083 let addrMode = PostInc;
27084 let accessSize = HVXVectorAccess;
27085 let isCVLoad = 1;
27086 let CVINew = 1;
27087 let mayLoad = 1;
27088 let isRestrictNoSlot1Store = 1;
27089 let BaseOpcode = "V6_vL32b_cur_ppu";
27090 let DecoderNamespace = "EXT_mmvec";
27091 let Constraints = "$Rx32 = $Rx32in";
27092 }
27093 def V6_vL32b_npred_ai : HInst<
27094 (outs HvxVR:$Vd32),
27095 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27096 "if (!$Pv4) $Vd32 = vmem($Rt32+#$Ii)",
27097 tc_abe8c3b2, TypeCVI_VM_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27098 let Inst{7-5} = 0b011;
27099 let Inst{31-21} = 0b00101000100;
27100 let isPredicated = 1;
27101 let isPredicatedFalse = 1;
27102 let hasNewValue = 1;
27103 let opNewValue = 0;
27104 let addrMode = BaseImmOffset;
27105 let accessSize = HVXVectorAccess;
27106 let isCVLoad = 1;
27107 let mayLoad = 1;
27108 let isRestrictNoSlot1Store = 1;
27109 let BaseOpcode = "V6_vL32b_ai";
27110 let DecoderNamespace = "EXT_mmvec";
27111 }
27112 def V6_vL32b_npred_pi : HInst<
27113 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27114 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27115 "if (!$Pv4) $Vd32 = vmem($Rx32++#$Ii)",
27116 tc_453fe68d, TypeCVI_VM_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27117 let Inst{7-5} = 0b011;
27118 let Inst{13-13} = 0b0;
27119 let Inst{31-21} = 0b00101001100;
27120 let isPredicated = 1;
27121 let isPredicatedFalse = 1;
27122 let hasNewValue = 1;
27123 let opNewValue = 0;
27124 let addrMode = PostInc;
27125 let accessSize = HVXVectorAccess;
27126 let isCVLoad = 1;
27127 let mayLoad = 1;
27128 let isRestrictNoSlot1Store = 1;
27129 let BaseOpcode = "V6_vL32b_pi";
27130 let DecoderNamespace = "EXT_mmvec";
27131 let Constraints = "$Rx32 = $Rx32in";
27132 }
27133 def V6_vL32b_npred_ppu : HInst<
27134 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27135 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27136 "if (!$Pv4) $Vd32 = vmem($Rx32++$Mu2)",
27137 tc_453fe68d, TypeCVI_VM_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27138 let Inst{10-5} = 0b000011;
27139 let Inst{31-21} = 0b00101011100;
27140 let isPredicated = 1;
27141 let isPredicatedFalse = 1;
27142 let hasNewValue = 1;
27143 let opNewValue = 0;
27144 let addrMode = PostInc;
27145 let accessSize = HVXVectorAccess;
27146 let isCVLoad = 1;
27147 let mayLoad = 1;
27148 let isRestrictNoSlot1Store = 1;
27149 let BaseOpcode = "V6_vL32b_ppu";
27150 let DecoderNamespace = "EXT_mmvec";
27151 let Constraints = "$Rx32 = $Rx32in";
27152 }
27153 def V6_vL32b_nt_ai : HInst<
27154 (outs HvxVR:$Vd32),
27155 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
27156 "$Vd32 = vmem($Rt32+#$Ii):nt",
27157 tc_c0749f3c, TypeCVI_VM_LD>, Enc_f3f408, Requires<[UseHVXV60]>, PredRel {
27158 let Inst{7-5} = 0b000;
27159 let Inst{12-11} = 0b00;
27160 let Inst{31-21} = 0b00101000010;
27161 let hasNewValue = 1;
27162 let opNewValue = 0;
27163 let addrMode = BaseImmOffset;
27164 let accessSize = HVXVectorAccess;
27165 let isCVLoad = 1;
27166 let mayLoad = 1;
27167 let isNonTemporal = 1;
27168 let isRestrictNoSlot1Store = 1;
27169 let BaseOpcode = "V6_vL32b_nt_ai";
27170 let isCVLoadable = 1;
27171 let isPredicable = 1;
27172 let DecoderNamespace = "EXT_mmvec";
27173 }
27174 def V6_vL32b_nt_cur_ai : HInst<
27175 (outs HvxVR:$Vd32),
27176 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
27177 "$Vd32.cur = vmem($Rt32+#$Ii):nt",
27178 tc_c0749f3c, TypeCVI_VM_LD>, Enc_f3f408, Requires<[UseHVXV60]>, PredRel {
27179 let Inst{7-5} = 0b001;
27180 let Inst{12-11} = 0b00;
27181 let Inst{31-21} = 0b00101000010;
27182 let hasNewValue = 1;
27183 let opNewValue = 0;
27184 let addrMode = BaseImmOffset;
27185 let accessSize = HVXVectorAccess;
27186 let isCVLoad = 1;
27187 let CVINew = 1;
27188 let mayLoad = 1;
27189 let isNonTemporal = 1;
27190 let isRestrictNoSlot1Store = 1;
27191 let BaseOpcode = "V6_vL32b_nt_cur_ai";
27192 let isPredicable = 1;
27193 let DecoderNamespace = "EXT_mmvec";
27194 }
27195 def V6_vL32b_nt_cur_npred_ai : HInst<
27196 (outs HvxVR:$Vd32),
27197 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27198 "if (!$Pv4) $Vd32.cur = vmem($Rt32+#$Ii):nt",
27199 tc_abe8c3b2, TypeCVI_VM_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27200 let Inst{7-5} = 0b101;
27201 let Inst{31-21} = 0b00101000110;
27202 let isPredicated = 1;
27203 let isPredicatedFalse = 1;
27204 let hasNewValue = 1;
27205 let opNewValue = 0;
27206 let addrMode = BaseImmOffset;
27207 let accessSize = HVXVectorAccess;
27208 let isCVLoad = 1;
27209 let CVINew = 1;
27210 let mayLoad = 1;
27211 let isNonTemporal = 1;
27212 let isRestrictNoSlot1Store = 1;
27213 let BaseOpcode = "V6_vL32b_nt_cur_ai";
27214 let DecoderNamespace = "EXT_mmvec";
27215 }
27216 def V6_vL32b_nt_cur_npred_pi : HInst<
27217 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27218 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27219 "if (!$Pv4) $Vd32.cur = vmem($Rx32++#$Ii):nt",
27220 tc_453fe68d, TypeCVI_VM_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27221 let Inst{7-5} = 0b101;
27222 let Inst{13-13} = 0b0;
27223 let Inst{31-21} = 0b00101001110;
27224 let isPredicated = 1;
27225 let isPredicatedFalse = 1;
27226 let hasNewValue = 1;
27227 let opNewValue = 0;
27228 let addrMode = PostInc;
27229 let accessSize = HVXVectorAccess;
27230 let isCVLoad = 1;
27231 let CVINew = 1;
27232 let mayLoad = 1;
27233 let isNonTemporal = 1;
27234 let isRestrictNoSlot1Store = 1;
27235 let BaseOpcode = "V6_vL32b_nt_cur_pi";
27236 let DecoderNamespace = "EXT_mmvec";
27237 let Constraints = "$Rx32 = $Rx32in";
27238 }
27239 def V6_vL32b_nt_cur_npred_ppu : HInst<
27240 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27241 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27242 "if (!$Pv4) $Vd32.cur = vmem($Rx32++$Mu2):nt",
27243 tc_453fe68d, TypeCVI_VM_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27244 let Inst{10-5} = 0b000101;
27245 let Inst{31-21} = 0b00101011110;
27246 let isPredicated = 1;
27247 let isPredicatedFalse = 1;
27248 let hasNewValue = 1;
27249 let opNewValue = 0;
27250 let addrMode = PostInc;
27251 let accessSize = HVXVectorAccess;
27252 let isCVLoad = 1;
27253 let CVINew = 1;
27254 let mayLoad = 1;
27255 let isNonTemporal = 1;
27256 let isRestrictNoSlot1Store = 1;
27257 let BaseOpcode = "V6_vL32b_nt_cur_ppu";
27258 let DecoderNamespace = "EXT_mmvec";
27259 let Constraints = "$Rx32 = $Rx32in";
27260 }
27261 def V6_vL32b_nt_cur_pi : HInst<
27262 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27263 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
27264 "$Vd32.cur = vmem($Rx32++#$Ii):nt",
27265 tc_1ba8a0cd, TypeCVI_VM_LD>, Enc_a255dc, Requires<[UseHVXV60]>, PredRel {
27266 let Inst{7-5} = 0b001;
27267 let Inst{13-11} = 0b000;
27268 let Inst{31-21} = 0b00101001010;
27269 let hasNewValue = 1;
27270 let opNewValue = 0;
27271 let addrMode = PostInc;
27272 let accessSize = HVXVectorAccess;
27273 let isCVLoad = 1;
27274 let CVINew = 1;
27275 let mayLoad = 1;
27276 let isNonTemporal = 1;
27277 let isRestrictNoSlot1Store = 1;
27278 let BaseOpcode = "V6_vL32b_nt_cur_pi";
27279 let isPredicable = 1;
27280 let DecoderNamespace = "EXT_mmvec";
27281 let Constraints = "$Rx32 = $Rx32in";
27282 }
27283 def V6_vL32b_nt_cur_ppu : HInst<
27284 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27285 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
27286 "$Vd32.cur = vmem($Rx32++$Mu2):nt",
27287 tc_1ba8a0cd, TypeCVI_VM_LD>, Enc_2ebe3b, Requires<[UseHVXV60]>, PredRel {
27288 let Inst{12-5} = 0b00000001;
27289 let Inst{31-21} = 0b00101011010;
27290 let hasNewValue = 1;
27291 let opNewValue = 0;
27292 let addrMode = PostInc;
27293 let accessSize = HVXVectorAccess;
27294 let isCVLoad = 1;
27295 let CVINew = 1;
27296 let mayLoad = 1;
27297 let isNonTemporal = 1;
27298 let isRestrictNoSlot1Store = 1;
27299 let BaseOpcode = "V6_vL32b_nt_cur_ppu";
27300 let isPredicable = 1;
27301 let DecoderNamespace = "EXT_mmvec";
27302 let Constraints = "$Rx32 = $Rx32in";
27303 }
27304 def V6_vL32b_nt_cur_pred_ai : HInst<
27305 (outs HvxVR:$Vd32),
27306 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27307 "if ($Pv4) $Vd32.cur = vmem($Rt32+#$Ii):nt",
27308 tc_abe8c3b2, TypeCVI_VM_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27309 let Inst{7-5} = 0b100;
27310 let Inst{31-21} = 0b00101000110;
27311 let isPredicated = 1;
27312 let hasNewValue = 1;
27313 let opNewValue = 0;
27314 let addrMode = BaseImmOffset;
27315 let accessSize = HVXVectorAccess;
27316 let isCVLoad = 1;
27317 let CVINew = 1;
27318 let mayLoad = 1;
27319 let isNonTemporal = 1;
27320 let isRestrictNoSlot1Store = 1;
27321 let BaseOpcode = "V6_vL32b_nt_cur_ai";
27322 let DecoderNamespace = "EXT_mmvec";
27323 }
27324 def V6_vL32b_nt_cur_pred_pi : HInst<
27325 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27326 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27327 "if ($Pv4) $Vd32.cur = vmem($Rx32++#$Ii):nt",
27328 tc_453fe68d, TypeCVI_VM_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27329 let Inst{7-5} = 0b100;
27330 let Inst{13-13} = 0b0;
27331 let Inst{31-21} = 0b00101001110;
27332 let isPredicated = 1;
27333 let hasNewValue = 1;
27334 let opNewValue = 0;
27335 let addrMode = PostInc;
27336 let accessSize = HVXVectorAccess;
27337 let isCVLoad = 1;
27338 let CVINew = 1;
27339 let mayLoad = 1;
27340 let isNonTemporal = 1;
27341 let isRestrictNoSlot1Store = 1;
27342 let BaseOpcode = "V6_vL32b_nt_cur_pi";
27343 let DecoderNamespace = "EXT_mmvec";
27344 let Constraints = "$Rx32 = $Rx32in";
27345 }
27346 def V6_vL32b_nt_cur_pred_ppu : HInst<
27347 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27348 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27349 "if ($Pv4) $Vd32.cur = vmem($Rx32++$Mu2):nt",
27350 tc_453fe68d, TypeCVI_VM_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27351 let Inst{10-5} = 0b000100;
27352 let Inst{31-21} = 0b00101011110;
27353 let isPredicated = 1;
27354 let hasNewValue = 1;
27355 let opNewValue = 0;
27356 let addrMode = PostInc;
27357 let accessSize = HVXVectorAccess;
27358 let isCVLoad = 1;
27359 let CVINew = 1;
27360 let mayLoad = 1;
27361 let isNonTemporal = 1;
27362 let isRestrictNoSlot1Store = 1;
27363 let BaseOpcode = "V6_vL32b_nt_cur_ppu";
27364 let DecoderNamespace = "EXT_mmvec";
27365 let Constraints = "$Rx32 = $Rx32in";
27366 }
27367 def V6_vL32b_nt_npred_ai : HInst<
27368 (outs HvxVR:$Vd32),
27369 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27370 "if (!$Pv4) $Vd32 = vmem($Rt32+#$Ii):nt",
27371 tc_abe8c3b2, TypeCVI_VM_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27372 let Inst{7-5} = 0b011;
27373 let Inst{31-21} = 0b00101000110;
27374 let isPredicated = 1;
27375 let isPredicatedFalse = 1;
27376 let hasNewValue = 1;
27377 let opNewValue = 0;
27378 let addrMode = BaseImmOffset;
27379 let accessSize = HVXVectorAccess;
27380 let isCVLoad = 1;
27381 let mayLoad = 1;
27382 let isNonTemporal = 1;
27383 let isRestrictNoSlot1Store = 1;
27384 let BaseOpcode = "V6_vL32b_nt_ai";
27385 let DecoderNamespace = "EXT_mmvec";
27386 }
27387 def V6_vL32b_nt_npred_pi : HInst<
27388 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27389 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27390 "if (!$Pv4) $Vd32 = vmem($Rx32++#$Ii):nt",
27391 tc_453fe68d, TypeCVI_VM_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27392 let Inst{7-5} = 0b011;
27393 let Inst{13-13} = 0b0;
27394 let Inst{31-21} = 0b00101001110;
27395 let isPredicated = 1;
27396 let isPredicatedFalse = 1;
27397 let hasNewValue = 1;
27398 let opNewValue = 0;
27399 let addrMode = PostInc;
27400 let accessSize = HVXVectorAccess;
27401 let isCVLoad = 1;
27402 let mayLoad = 1;
27403 let isNonTemporal = 1;
27404 let isRestrictNoSlot1Store = 1;
27405 let BaseOpcode = "V6_vL32b_nt_pi";
27406 let DecoderNamespace = "EXT_mmvec";
27407 let Constraints = "$Rx32 = $Rx32in";
27408 }
27409 def V6_vL32b_nt_npred_ppu : HInst<
27410 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27411 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27412 "if (!$Pv4) $Vd32 = vmem($Rx32++$Mu2):nt",
27413 tc_453fe68d, TypeCVI_VM_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27414 let Inst{10-5} = 0b000011;
27415 let Inst{31-21} = 0b00101011110;
27416 let isPredicated = 1;
27417 let isPredicatedFalse = 1;
27418 let hasNewValue = 1;
27419 let opNewValue = 0;
27420 let addrMode = PostInc;
27421 let accessSize = HVXVectorAccess;
27422 let isCVLoad = 1;
27423 let mayLoad = 1;
27424 let isNonTemporal = 1;
27425 let isRestrictNoSlot1Store = 1;
27426 let BaseOpcode = "V6_vL32b_nt_ppu";
27427 let DecoderNamespace = "EXT_mmvec";
27428 let Constraints = "$Rx32 = $Rx32in";
27429 }
27430 def V6_vL32b_nt_pi : HInst<
27431 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27432 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
27433 "$Vd32 = vmem($Rx32++#$Ii):nt",
27434 tc_1ba8a0cd, TypeCVI_VM_LD>, Enc_a255dc, Requires<[UseHVXV60]>, PredRel {
27435 let Inst{7-5} = 0b000;
27436 let Inst{13-11} = 0b000;
27437 let Inst{31-21} = 0b00101001010;
27438 let hasNewValue = 1;
27439 let opNewValue = 0;
27440 let addrMode = PostInc;
27441 let accessSize = HVXVectorAccess;
27442 let isCVLoad = 1;
27443 let mayLoad = 1;
27444 let isNonTemporal = 1;
27445 let isRestrictNoSlot1Store = 1;
27446 let BaseOpcode = "V6_vL32b_nt_pi";
27447 let isCVLoadable = 1;
27448 let isPredicable = 1;
27449 let DecoderNamespace = "EXT_mmvec";
27450 let Constraints = "$Rx32 = $Rx32in";
27451 }
27452 def V6_vL32b_nt_ppu : HInst<
27453 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27454 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
27455 "$Vd32 = vmem($Rx32++$Mu2):nt",
27456 tc_1ba8a0cd, TypeCVI_VM_LD>, Enc_2ebe3b, Requires<[UseHVXV60]>, PredRel {
27457 let Inst{12-5} = 0b00000000;
27458 let Inst{31-21} = 0b00101011010;
27459 let hasNewValue = 1;
27460 let opNewValue = 0;
27461 let addrMode = PostInc;
27462 let accessSize = HVXVectorAccess;
27463 let isCVLoad = 1;
27464 let mayLoad = 1;
27465 let isNonTemporal = 1;
27466 let isRestrictNoSlot1Store = 1;
27467 let BaseOpcode = "V6_vL32b_nt_ppu";
27468 let isCVLoadable = 1;
27469 let isPredicable = 1;
27470 let DecoderNamespace = "EXT_mmvec";
27471 let Constraints = "$Rx32 = $Rx32in";
27472 }
27473 def V6_vL32b_nt_pred_ai : HInst<
27474 (outs HvxVR:$Vd32),
27475 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27476 "if ($Pv4) $Vd32 = vmem($Rt32+#$Ii):nt",
27477 tc_abe8c3b2, TypeCVI_VM_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27478 let Inst{7-5} = 0b010;
27479 let Inst{31-21} = 0b00101000110;
27480 let isPredicated = 1;
27481 let hasNewValue = 1;
27482 let opNewValue = 0;
27483 let addrMode = BaseImmOffset;
27484 let accessSize = HVXVectorAccess;
27485 let isCVLoad = 1;
27486 let mayLoad = 1;
27487 let isNonTemporal = 1;
27488 let isRestrictNoSlot1Store = 1;
27489 let BaseOpcode = "V6_vL32b_nt_ai";
27490 let DecoderNamespace = "EXT_mmvec";
27491 }
27492 def V6_vL32b_nt_pred_pi : HInst<
27493 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27494 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27495 "if ($Pv4) $Vd32 = vmem($Rx32++#$Ii):nt",
27496 tc_453fe68d, TypeCVI_VM_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27497 let Inst{7-5} = 0b010;
27498 let Inst{13-13} = 0b0;
27499 let Inst{31-21} = 0b00101001110;
27500 let isPredicated = 1;
27501 let hasNewValue = 1;
27502 let opNewValue = 0;
27503 let addrMode = PostInc;
27504 let accessSize = HVXVectorAccess;
27505 let isCVLoad = 1;
27506 let mayLoad = 1;
27507 let isNonTemporal = 1;
27508 let isRestrictNoSlot1Store = 1;
27509 let BaseOpcode = "V6_vL32b_nt_pi";
27510 let DecoderNamespace = "EXT_mmvec";
27511 let Constraints = "$Rx32 = $Rx32in";
27512 }
27513 def V6_vL32b_nt_pred_ppu : HInst<
27514 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27515 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27516 "if ($Pv4) $Vd32 = vmem($Rx32++$Mu2):nt",
27517 tc_453fe68d, TypeCVI_VM_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27518 let Inst{10-5} = 0b000010;
27519 let Inst{31-21} = 0b00101011110;
27520 let isPredicated = 1;
27521 let hasNewValue = 1;
27522 let opNewValue = 0;
27523 let addrMode = PostInc;
27524 let accessSize = HVXVectorAccess;
27525 let isCVLoad = 1;
27526 let mayLoad = 1;
27527 let isNonTemporal = 1;
27528 let isRestrictNoSlot1Store = 1;
27529 let BaseOpcode = "V6_vL32b_nt_ppu";
27530 let DecoderNamespace = "EXT_mmvec";
27531 let Constraints = "$Rx32 = $Rx32in";
27532 }
27533 def V6_vL32b_nt_tmp_ai : HInst<
27534 (outs HvxVR:$Vd32),
27535 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
27536 "$Vd32.tmp = vmem($Rt32+#$Ii):nt",
27537 tc_52447ecc, TypeCVI_VM_TMP_LD>, Enc_f3f408, Requires<[UseHVXV60]>, PredRel {
27538 let Inst{7-5} = 0b010;
27539 let Inst{12-11} = 0b00;
27540 let Inst{31-21} = 0b00101000010;
27541 let hasNewValue = 1;
27542 let opNewValue = 0;
27543 let addrMode = BaseImmOffset;
27544 let accessSize = HVXVectorAccess;
27545 let isCVLoad = 1;
27546 let mayLoad = 1;
27547 let isNonTemporal = 1;
27548 let isRestrictNoSlot1Store = 1;
27549 let BaseOpcode = "V6_vL32b_nt_tmp_ai";
27550 let isPredicable = 1;
27551 let DecoderNamespace = "EXT_mmvec";
27552 }
27553 def V6_vL32b_nt_tmp_npred_ai : HInst<
27554 (outs HvxVR:$Vd32),
27555 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27556 "if (!$Pv4) $Vd32.tmp = vmem($Rt32+#$Ii):nt",
27557 tc_3904b926, TypeCVI_VM_TMP_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27558 let Inst{7-5} = 0b111;
27559 let Inst{31-21} = 0b00101000110;
27560 let isPredicated = 1;
27561 let isPredicatedFalse = 1;
27562 let hasNewValue = 1;
27563 let opNewValue = 0;
27564 let addrMode = BaseImmOffset;
27565 let accessSize = HVXVectorAccess;
27566 let isCVLoad = 1;
27567 let mayLoad = 1;
27568 let isNonTemporal = 1;
27569 let isRestrictNoSlot1Store = 1;
27570 let BaseOpcode = "V6_vL32b_nt_tmp_ai";
27571 let DecoderNamespace = "EXT_mmvec";
27572 }
27573 def V6_vL32b_nt_tmp_npred_pi : HInst<
27574 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27575 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27576 "if (!$Pv4) $Vd32.tmp = vmem($Rx32++#$Ii):nt",
27577 tc_b9db8205, TypeCVI_VM_TMP_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27578 let Inst{7-5} = 0b111;
27579 let Inst{13-13} = 0b0;
27580 let Inst{31-21} = 0b00101001110;
27581 let isPredicated = 1;
27582 let isPredicatedFalse = 1;
27583 let hasNewValue = 1;
27584 let opNewValue = 0;
27585 let addrMode = PostInc;
27586 let accessSize = HVXVectorAccess;
27587 let isCVLoad = 1;
27588 let mayLoad = 1;
27589 let isNonTemporal = 1;
27590 let isRestrictNoSlot1Store = 1;
27591 let BaseOpcode = "V6_vL32b_nt_tmp_pi";
27592 let DecoderNamespace = "EXT_mmvec";
27593 let Constraints = "$Rx32 = $Rx32in";
27594 }
27595 def V6_vL32b_nt_tmp_npred_ppu : HInst<
27596 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27597 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27598 "if (!$Pv4) $Vd32.tmp = vmem($Rx32++$Mu2):nt",
27599 tc_b9db8205, TypeCVI_VM_TMP_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27600 let Inst{10-5} = 0b000111;
27601 let Inst{31-21} = 0b00101011110;
27602 let isPredicated = 1;
27603 let isPredicatedFalse = 1;
27604 let hasNewValue = 1;
27605 let opNewValue = 0;
27606 let addrMode = PostInc;
27607 let accessSize = HVXVectorAccess;
27608 let isCVLoad = 1;
27609 let mayLoad = 1;
27610 let isNonTemporal = 1;
27611 let isRestrictNoSlot1Store = 1;
27612 let BaseOpcode = "V6_vL32b_nt_tmp_ppu";
27613 let DecoderNamespace = "EXT_mmvec";
27614 let Constraints = "$Rx32 = $Rx32in";
27615 }
27616 def V6_vL32b_nt_tmp_pi : HInst<
27617 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27618 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
27619 "$Vd32.tmp = vmem($Rx32++#$Ii):nt",
27620 tc_663c80a7, TypeCVI_VM_TMP_LD>, Enc_a255dc, Requires<[UseHVXV60]>, PredRel {
27621 let Inst{7-5} = 0b010;
27622 let Inst{13-11} = 0b000;
27623 let Inst{31-21} = 0b00101001010;
27624 let hasNewValue = 1;
27625 let opNewValue = 0;
27626 let addrMode = PostInc;
27627 let accessSize = HVXVectorAccess;
27628 let isCVLoad = 1;
27629 let mayLoad = 1;
27630 let isNonTemporal = 1;
27631 let isRestrictNoSlot1Store = 1;
27632 let BaseOpcode = "V6_vL32b_nt_tmp_pi";
27633 let isPredicable = 1;
27634 let DecoderNamespace = "EXT_mmvec";
27635 let Constraints = "$Rx32 = $Rx32in";
27636 }
27637 def V6_vL32b_nt_tmp_ppu : HInst<
27638 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27639 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
27640 "$Vd32.tmp = vmem($Rx32++$Mu2):nt",
27641 tc_663c80a7, TypeCVI_VM_TMP_LD>, Enc_2ebe3b, Requires<[UseHVXV60]>, PredRel {
27642 let Inst{12-5} = 0b00000010;
27643 let Inst{31-21} = 0b00101011010;
27644 let hasNewValue = 1;
27645 let opNewValue = 0;
27646 let addrMode = PostInc;
27647 let accessSize = HVXVectorAccess;
27648 let isCVLoad = 1;
27649 let mayLoad = 1;
27650 let isNonTemporal = 1;
27651 let isRestrictNoSlot1Store = 1;
27652 let BaseOpcode = "V6_vL32b_nt_tmp_ppu";
27653 let isPredicable = 1;
27654 let DecoderNamespace = "EXT_mmvec";
27655 let Constraints = "$Rx32 = $Rx32in";
27656 }
27657 def V6_vL32b_nt_tmp_pred_ai : HInst<
27658 (outs HvxVR:$Vd32),
27659 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27660 "if ($Pv4) $Vd32.tmp = vmem($Rt32+#$Ii):nt",
27661 tc_3904b926, TypeCVI_VM_TMP_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27662 let Inst{7-5} = 0b110;
27663 let Inst{31-21} = 0b00101000110;
27664 let isPredicated = 1;
27665 let hasNewValue = 1;
27666 let opNewValue = 0;
27667 let addrMode = BaseImmOffset;
27668 let accessSize = HVXVectorAccess;
27669 let isCVLoad = 1;
27670 let mayLoad = 1;
27671 let isNonTemporal = 1;
27672 let isRestrictNoSlot1Store = 1;
27673 let BaseOpcode = "V6_vL32b_nt_tmp_ai";
27674 let DecoderNamespace = "EXT_mmvec";
27675 }
27676 def V6_vL32b_nt_tmp_pred_pi : HInst<
27677 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27678 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27679 "if ($Pv4) $Vd32.tmp = vmem($Rx32++#$Ii):nt",
27680 tc_b9db8205, TypeCVI_VM_TMP_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27681 let Inst{7-5} = 0b110;
27682 let Inst{13-13} = 0b0;
27683 let Inst{31-21} = 0b00101001110;
27684 let isPredicated = 1;
27685 let hasNewValue = 1;
27686 let opNewValue = 0;
27687 let addrMode = PostInc;
27688 let accessSize = HVXVectorAccess;
27689 let isCVLoad = 1;
27690 let mayLoad = 1;
27691 let isNonTemporal = 1;
27692 let isRestrictNoSlot1Store = 1;
27693 let BaseOpcode = "V6_vL32b_nt_tmp_pi";
27694 let DecoderNamespace = "EXT_mmvec";
27695 let Constraints = "$Rx32 = $Rx32in";
27696 }
27697 def V6_vL32b_nt_tmp_pred_ppu : HInst<
27698 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27699 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27700 "if ($Pv4) $Vd32.tmp = vmem($Rx32++$Mu2):nt",
27701 tc_b9db8205, TypeCVI_VM_TMP_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27702 let Inst{10-5} = 0b000110;
27703 let Inst{31-21} = 0b00101011110;
27704 let isPredicated = 1;
27705 let hasNewValue = 1;
27706 let opNewValue = 0;
27707 let addrMode = PostInc;
27708 let accessSize = HVXVectorAccess;
27709 let isCVLoad = 1;
27710 let mayLoad = 1;
27711 let isNonTemporal = 1;
27712 let isRestrictNoSlot1Store = 1;
27713 let BaseOpcode = "V6_vL32b_nt_tmp_ppu";
27714 let DecoderNamespace = "EXT_mmvec";
27715 let Constraints = "$Rx32 = $Rx32in";
27716 }
27717 def V6_vL32b_pi : HInst<
27718 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27719 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
27720 "$Vd32 = vmem($Rx32++#$Ii)",
27721 tc_1ba8a0cd, TypeCVI_VM_LD>, Enc_a255dc, Requires<[UseHVXV60]>, PredRel {
27722 let Inst{7-5} = 0b000;
27723 let Inst{13-11} = 0b000;
27724 let Inst{31-21} = 0b00101001000;
27725 let hasNewValue = 1;
27726 let opNewValue = 0;
27727 let addrMode = PostInc;
27728 let accessSize = HVXVectorAccess;
27729 let isCVLoad = 1;
27730 let mayLoad = 1;
27731 let isRestrictNoSlot1Store = 1;
27732 let BaseOpcode = "V6_vL32b_pi";
27733 let isCVLoadable = 1;
27734 let isPredicable = 1;
27735 let DecoderNamespace = "EXT_mmvec";
27736 let Constraints = "$Rx32 = $Rx32in";
27737 }
27738 def V6_vL32b_ppu : HInst<
27739 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27740 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
27741 "$Vd32 = vmem($Rx32++$Mu2)",
27742 tc_1ba8a0cd, TypeCVI_VM_LD>, Enc_2ebe3b, Requires<[UseHVXV60]>, PredRel {
27743 let Inst{12-5} = 0b00000000;
27744 let Inst{31-21} = 0b00101011000;
27745 let hasNewValue = 1;
27746 let opNewValue = 0;
27747 let addrMode = PostInc;
27748 let accessSize = HVXVectorAccess;
27749 let isCVLoad = 1;
27750 let mayLoad = 1;
27751 let isRestrictNoSlot1Store = 1;
27752 let BaseOpcode = "V6_vL32b_ppu";
27753 let isCVLoadable = 1;
27754 let isPredicable = 1;
27755 let DecoderNamespace = "EXT_mmvec";
27756 let Constraints = "$Rx32 = $Rx32in";
27757 }
27758 def V6_vL32b_pred_ai : HInst<
27759 (outs HvxVR:$Vd32),
27760 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27761 "if ($Pv4) $Vd32 = vmem($Rt32+#$Ii)",
27762 tc_abe8c3b2, TypeCVI_VM_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27763 let Inst{7-5} = 0b010;
27764 let Inst{31-21} = 0b00101000100;
27765 let isPredicated = 1;
27766 let hasNewValue = 1;
27767 let opNewValue = 0;
27768 let addrMode = BaseImmOffset;
27769 let accessSize = HVXVectorAccess;
27770 let isCVLoad = 1;
27771 let mayLoad = 1;
27772 let isRestrictNoSlot1Store = 1;
27773 let BaseOpcode = "V6_vL32b_ai";
27774 let DecoderNamespace = "EXT_mmvec";
27775 }
27776 def V6_vL32b_pred_pi : HInst<
27777 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27778 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27779 "if ($Pv4) $Vd32 = vmem($Rx32++#$Ii)",
27780 tc_453fe68d, TypeCVI_VM_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27781 let Inst{7-5} = 0b010;
27782 let Inst{13-13} = 0b0;
27783 let Inst{31-21} = 0b00101001100;
27784 let isPredicated = 1;
27785 let hasNewValue = 1;
27786 let opNewValue = 0;
27787 let addrMode = PostInc;
27788 let accessSize = HVXVectorAccess;
27789 let isCVLoad = 1;
27790 let mayLoad = 1;
27791 let isRestrictNoSlot1Store = 1;
27792 let BaseOpcode = "V6_vL32b_pi";
27793 let DecoderNamespace = "EXT_mmvec";
27794 let Constraints = "$Rx32 = $Rx32in";
27795 }
27796 def V6_vL32b_pred_ppu : HInst<
27797 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27798 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27799 "if ($Pv4) $Vd32 = vmem($Rx32++$Mu2)",
27800 tc_453fe68d, TypeCVI_VM_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27801 let Inst{10-5} = 0b000010;
27802 let Inst{31-21} = 0b00101011100;
27803 let isPredicated = 1;
27804 let hasNewValue = 1;
27805 let opNewValue = 0;
27806 let addrMode = PostInc;
27807 let accessSize = HVXVectorAccess;
27808 let isCVLoad = 1;
27809 let mayLoad = 1;
27810 let isRestrictNoSlot1Store = 1;
27811 let BaseOpcode = "V6_vL32b_ppu";
27812 let DecoderNamespace = "EXT_mmvec";
27813 let Constraints = "$Rx32 = $Rx32in";
27814 }
27815 def V6_vL32b_tmp_ai : HInst<
27816 (outs HvxVR:$Vd32),
27817 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
27818 "$Vd32.tmp = vmem($Rt32+#$Ii)",
27819 tc_52447ecc, TypeCVI_VM_TMP_LD>, Enc_f3f408, Requires<[UseHVXV60]>, PredRel {
27820 let Inst{7-5} = 0b010;
27821 let Inst{12-11} = 0b00;
27822 let Inst{31-21} = 0b00101000000;
27823 let hasNewValue = 1;
27824 let opNewValue = 0;
27825 let addrMode = BaseImmOffset;
27826 let accessSize = HVXVectorAccess;
27827 let isCVLoad = 1;
27828 let mayLoad = 1;
27829 let isRestrictNoSlot1Store = 1;
27830 let BaseOpcode = "V6_vL32b_tmp_ai";
27831 let isPredicable = 1;
27832 let DecoderNamespace = "EXT_mmvec";
27833 }
27834 def V6_vL32b_tmp_npred_ai : HInst<
27835 (outs HvxVR:$Vd32),
27836 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27837 "if (!$Pv4) $Vd32.tmp = vmem($Rt32+#$Ii)",
27838 tc_3904b926, TypeCVI_VM_TMP_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27839 let Inst{7-5} = 0b111;
27840 let Inst{31-21} = 0b00101000100;
27841 let isPredicated = 1;
27842 let isPredicatedFalse = 1;
27843 let hasNewValue = 1;
27844 let opNewValue = 0;
27845 let addrMode = BaseImmOffset;
27846 let accessSize = HVXVectorAccess;
27847 let isCVLoad = 1;
27848 let mayLoad = 1;
27849 let isRestrictNoSlot1Store = 1;
27850 let BaseOpcode = "V6_vL32b_tmp_ai";
27851 let DecoderNamespace = "EXT_mmvec";
27852 }
27853 def V6_vL32b_tmp_npred_pi : HInst<
27854 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27855 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27856 "if (!$Pv4) $Vd32.tmp = vmem($Rx32++#$Ii)",
27857 tc_b9db8205, TypeCVI_VM_TMP_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27858 let Inst{7-5} = 0b111;
27859 let Inst{13-13} = 0b0;
27860 let Inst{31-21} = 0b00101001100;
27861 let isPredicated = 1;
27862 let isPredicatedFalse = 1;
27863 let hasNewValue = 1;
27864 let opNewValue = 0;
27865 let addrMode = PostInc;
27866 let accessSize = HVXVectorAccess;
27867 let isCVLoad = 1;
27868 let mayLoad = 1;
27869 let isRestrictNoSlot1Store = 1;
27870 let BaseOpcode = "V6_vL32b_tmp_pi";
27871 let DecoderNamespace = "EXT_mmvec";
27872 let Constraints = "$Rx32 = $Rx32in";
27873 }
27874 def V6_vL32b_tmp_npred_ppu : HInst<
27875 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27876 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27877 "if (!$Pv4) $Vd32.tmp = vmem($Rx32++$Mu2)",
27878 tc_b9db8205, TypeCVI_VM_TMP_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27879 let Inst{10-5} = 0b000111;
27880 let Inst{31-21} = 0b00101011100;
27881 let isPredicated = 1;
27882 let isPredicatedFalse = 1;
27883 let hasNewValue = 1;
27884 let opNewValue = 0;
27885 let addrMode = PostInc;
27886 let accessSize = HVXVectorAccess;
27887 let isCVLoad = 1;
27888 let mayLoad = 1;
27889 let isRestrictNoSlot1Store = 1;
27890 let BaseOpcode = "V6_vL32b_tmp_ppu";
27891 let DecoderNamespace = "EXT_mmvec";
27892 let Constraints = "$Rx32 = $Rx32in";
27893 }
27894 def V6_vL32b_tmp_pi : HInst<
27895 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27896 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
27897 "$Vd32.tmp = vmem($Rx32++#$Ii)",
27898 tc_663c80a7, TypeCVI_VM_TMP_LD>, Enc_a255dc, Requires<[UseHVXV60]>, PredRel {
27899 let Inst{7-5} = 0b010;
27900 let Inst{13-11} = 0b000;
27901 let Inst{31-21} = 0b00101001000;
27902 let hasNewValue = 1;
27903 let opNewValue = 0;
27904 let addrMode = PostInc;
27905 let accessSize = HVXVectorAccess;
27906 let isCVLoad = 1;
27907 let mayLoad = 1;
27908 let isRestrictNoSlot1Store = 1;
27909 let BaseOpcode = "V6_vL32b_tmp_pi";
27910 let isPredicable = 1;
27911 let DecoderNamespace = "EXT_mmvec";
27912 let Constraints = "$Rx32 = $Rx32in";
27913 }
27914 def V6_vL32b_tmp_ppu : HInst<
27915 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27916 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
27917 "$Vd32.tmp = vmem($Rx32++$Mu2)",
27918 tc_663c80a7, TypeCVI_VM_TMP_LD>, Enc_2ebe3b, Requires<[UseHVXV60]>, PredRel {
27919 let Inst{12-5} = 0b00000010;
27920 let Inst{31-21} = 0b00101011000;
27921 let hasNewValue = 1;
27922 let opNewValue = 0;
27923 let addrMode = PostInc;
27924 let accessSize = HVXVectorAccess;
27925 let isCVLoad = 1;
27926 let mayLoad = 1;
27927 let isRestrictNoSlot1Store = 1;
27928 let BaseOpcode = "V6_vL32b_tmp_ppu";
27929 let isPredicable = 1;
27930 let DecoderNamespace = "EXT_mmvec";
27931 let Constraints = "$Rx32 = $Rx32in";
27932 }
27933 def V6_vL32b_tmp_pred_ai : HInst<
27934 (outs HvxVR:$Vd32),
27935 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
27936 "if ($Pv4) $Vd32.tmp = vmem($Rt32+#$Ii)",
27937 tc_3904b926, TypeCVI_VM_TMP_LD>, Enc_8d8a30, Requires<[UseHVXV62]>, PredRel {
27938 let Inst{7-5} = 0b110;
27939 let Inst{31-21} = 0b00101000100;
27940 let isPredicated = 1;
27941 let hasNewValue = 1;
27942 let opNewValue = 0;
27943 let addrMode = BaseImmOffset;
27944 let accessSize = HVXVectorAccess;
27945 let isCVLoad = 1;
27946 let mayLoad = 1;
27947 let isRestrictNoSlot1Store = 1;
27948 let BaseOpcode = "V6_vL32b_tmp_ai";
27949 let DecoderNamespace = "EXT_mmvec";
27950 }
27951 def V6_vL32b_tmp_pred_pi : HInst<
27952 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27953 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
27954 "if ($Pv4) $Vd32.tmp = vmem($Rx32++#$Ii)",
27955 tc_b9db8205, TypeCVI_VM_TMP_LD>, Enc_58a8bf, Requires<[UseHVXV62]>, PredRel {
27956 let Inst{7-5} = 0b110;
27957 let Inst{13-13} = 0b0;
27958 let Inst{31-21} = 0b00101001100;
27959 let isPredicated = 1;
27960 let hasNewValue = 1;
27961 let opNewValue = 0;
27962 let addrMode = PostInc;
27963 let accessSize = HVXVectorAccess;
27964 let isCVLoad = 1;
27965 let mayLoad = 1;
27966 let isRestrictNoSlot1Store = 1;
27967 let BaseOpcode = "V6_vL32b_tmp_pi";
27968 let DecoderNamespace = "EXT_mmvec";
27969 let Constraints = "$Rx32 = $Rx32in";
27970 }
27971 def V6_vL32b_tmp_pred_ppu : HInst<
27972 (outs HvxVR:$Vd32, IntRegs:$Rx32),
27973 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
27974 "if ($Pv4) $Vd32.tmp = vmem($Rx32++$Mu2)",
27975 tc_b9db8205, TypeCVI_VM_TMP_LD>, Enc_f8c1c4, Requires<[UseHVXV62]>, PredRel {
27976 let Inst{10-5} = 0b000110;
27977 let Inst{31-21} = 0b00101011100;
27978 let isPredicated = 1;
27979 let hasNewValue = 1;
27980 let opNewValue = 0;
27981 let addrMode = PostInc;
27982 let accessSize = HVXVectorAccess;
27983 let isCVLoad = 1;
27984 let mayLoad = 1;
27985 let isRestrictNoSlot1Store = 1;
27986 let BaseOpcode = "V6_vL32b_tmp_ppu";
27987 let DecoderNamespace = "EXT_mmvec";
27988 let Constraints = "$Rx32 = $Rx32in";
27989 }
27990 def V6_vS32Ub_ai : HInst<
27991 (outs),
27992 (ins IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
27993 "vmemu($Rt32+#$Ii) = $Vs32",
27994 tc_f21e8abb, TypeCVI_VM_STU>, Enc_c9e3bc, Requires<[UseHVXV60]>, NewValueRel {
27995 let Inst{7-5} = 0b111;
27996 let Inst{12-11} = 0b00;
27997 let Inst{31-21} = 0b00101000001;
27998 let addrMode = BaseImmOffset;
27999 let accessSize = HVXVectorAccess;
28000 let mayStore = 1;
28001 let BaseOpcode = "V6_vS32Ub_ai";
28002 let isPredicable = 1;
28003 let DecoderNamespace = "EXT_mmvec";
28004 }
28005 def V6_vS32Ub_npred_ai : HInst<
28006 (outs),
28007 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28008 "if (!$Pv4) vmemu($Rt32+#$Ii) = $Vs32",
28009 tc_131f1c81, TypeCVI_VM_STU>, Enc_27b757, Requires<[UseHVXV60]>, NewValueRel {
28010 let Inst{7-5} = 0b111;
28011 let Inst{31-21} = 0b00101000101;
28012 let isPredicated = 1;
28013 let isPredicatedFalse = 1;
28014 let addrMode = BaseImmOffset;
28015 let accessSize = HVXVectorAccess;
28016 let mayStore = 1;
28017 let BaseOpcode = "V6_vS32Ub_ai";
28018 let DecoderNamespace = "EXT_mmvec";
28019 }
28020 def V6_vS32Ub_npred_pi : HInst<
28021 (outs IntRegs:$Rx32),
28022 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28023 "if (!$Pv4) vmemu($Rx32++#$Ii) = $Vs32",
28024 tc_c7039829, TypeCVI_VM_STU>, Enc_865390, Requires<[UseHVXV60]>, NewValueRel {
28025 let Inst{7-5} = 0b111;
28026 let Inst{13-13} = 0b0;
28027 let Inst{31-21} = 0b00101001101;
28028 let isPredicated = 1;
28029 let isPredicatedFalse = 1;
28030 let addrMode = PostInc;
28031 let accessSize = HVXVectorAccess;
28032 let mayStore = 1;
28033 let BaseOpcode = "V6_vS32Ub_pi";
28034 let DecoderNamespace = "EXT_mmvec";
28035 let Constraints = "$Rx32 = $Rx32in";
28036 }
28037 def V6_vS32Ub_npred_ppu : HInst<
28038 (outs IntRegs:$Rx32),
28039 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28040 "if (!$Pv4) vmemu($Rx32++$Mu2) = $Vs32",
28041 tc_c7039829, TypeCVI_VM_STU>, Enc_1ef990, Requires<[UseHVXV60]>, NewValueRel {
28042 let Inst{10-5} = 0b000111;
28043 let Inst{31-21} = 0b00101011101;
28044 let isPredicated = 1;
28045 let isPredicatedFalse = 1;
28046 let addrMode = PostInc;
28047 let accessSize = HVXVectorAccess;
28048 let mayStore = 1;
28049 let BaseOpcode = "V6_vS32Ub_ppu";
28050 let DecoderNamespace = "EXT_mmvec";
28051 let Constraints = "$Rx32 = $Rx32in";
28052 }
28053 def V6_vS32Ub_pi : HInst<
28054 (outs IntRegs:$Rx32),
28055 (ins IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28056 "vmemu($Rx32++#$Ii) = $Vs32",
28057 tc_e2d2e9e5, TypeCVI_VM_STU>, Enc_b62ef7, Requires<[UseHVXV60]>, NewValueRel {
28058 let Inst{7-5} = 0b111;
28059 let Inst{13-11} = 0b000;
28060 let Inst{31-21} = 0b00101001001;
28061 let addrMode = PostInc;
28062 let accessSize = HVXVectorAccess;
28063 let mayStore = 1;
28064 let BaseOpcode = "V6_vS32Ub_pi";
28065 let isPredicable = 1;
28066 let DecoderNamespace = "EXT_mmvec";
28067 let Constraints = "$Rx32 = $Rx32in";
28068 }
28069 def V6_vS32Ub_ppu : HInst<
28070 (outs IntRegs:$Rx32),
28071 (ins IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28072 "vmemu($Rx32++$Mu2) = $Vs32",
28073 tc_e2d2e9e5, TypeCVI_VM_STU>, Enc_d15d19, Requires<[UseHVXV60]>, NewValueRel {
28074 let Inst{12-5} = 0b00000111;
28075 let Inst{31-21} = 0b00101011001;
28076 let addrMode = PostInc;
28077 let accessSize = HVXVectorAccess;
28078 let mayStore = 1;
28079 let BaseOpcode = "V6_vS32Ub_ppu";
28080 let isPredicable = 1;
28081 let DecoderNamespace = "EXT_mmvec";
28082 let Constraints = "$Rx32 = $Rx32in";
28083 }
28084 def V6_vS32Ub_pred_ai : HInst<
28085 (outs),
28086 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28087 "if ($Pv4) vmemu($Rt32+#$Ii) = $Vs32",
28088 tc_131f1c81, TypeCVI_VM_STU>, Enc_27b757, Requires<[UseHVXV60]>, NewValueRel {
28089 let Inst{7-5} = 0b110;
28090 let Inst{31-21} = 0b00101000101;
28091 let isPredicated = 1;
28092 let addrMode = BaseImmOffset;
28093 let accessSize = HVXVectorAccess;
28094 let mayStore = 1;
28095 let BaseOpcode = "V6_vS32Ub_ai";
28096 let DecoderNamespace = "EXT_mmvec";
28097 }
28098 def V6_vS32Ub_pred_pi : HInst<
28099 (outs IntRegs:$Rx32),
28100 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28101 "if ($Pv4) vmemu($Rx32++#$Ii) = $Vs32",
28102 tc_c7039829, TypeCVI_VM_STU>, Enc_865390, Requires<[UseHVXV60]>, NewValueRel {
28103 let Inst{7-5} = 0b110;
28104 let Inst{13-13} = 0b0;
28105 let Inst{31-21} = 0b00101001101;
28106 let isPredicated = 1;
28107 let addrMode = PostInc;
28108 let accessSize = HVXVectorAccess;
28109 let mayStore = 1;
28110 let BaseOpcode = "V6_vS32Ub_pi";
28111 let DecoderNamespace = "EXT_mmvec";
28112 let Constraints = "$Rx32 = $Rx32in";
28113 }
28114 def V6_vS32Ub_pred_ppu : HInst<
28115 (outs IntRegs:$Rx32),
28116 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28117 "if ($Pv4) vmemu($Rx32++$Mu2) = $Vs32",
28118 tc_c7039829, TypeCVI_VM_STU>, Enc_1ef990, Requires<[UseHVXV60]>, NewValueRel {
28119 let Inst{10-5} = 0b000110;
28120 let Inst{31-21} = 0b00101011101;
28121 let isPredicated = 1;
28122 let addrMode = PostInc;
28123 let accessSize = HVXVectorAccess;
28124 let mayStore = 1;
28125 let BaseOpcode = "V6_vS32Ub_ppu";
28126 let DecoderNamespace = "EXT_mmvec";
28127 let Constraints = "$Rx32 = $Rx32in";
28128 }
28129 def V6_vS32b_ai : HInst<
28130 (outs),
28131 (ins IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28132 "vmem($Rt32+#$Ii) = $Vs32",
28133 tc_c5dba46e, TypeCVI_VM_ST>, Enc_c9e3bc, Requires<[UseHVXV60]>, NewValueRel {
28134 let Inst{7-5} = 0b000;
28135 let Inst{12-11} = 0b00;
28136 let Inst{31-21} = 0b00101000001;
28137 let addrMode = BaseImmOffset;
28138 let accessSize = HVXVectorAccess;
28139 let mayStore = 1;
28140 let BaseOpcode = "V6_vS32b_ai";
28141 let isNVStorable = 1;
28142 let isPredicable = 1;
28143 let DecoderNamespace = "EXT_mmvec";
28144 }
28145 def V6_vS32b_new_ai : HInst<
28146 (outs),
28147 (ins IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Os8),
28148 "vmem($Rt32+#$Ii) = $Os8.new",
28149 tc_ab23f776, TypeCVI_VM_NEW_ST>, Enc_f77fbc, Requires<[UseHVXV60]>, NewValueRel {
28150 let Inst{7-3} = 0b00100;
28151 let Inst{12-11} = 0b00;
28152 let Inst{31-21} = 0b00101000001;
28153 let addrMode = BaseImmOffset;
28154 let accessSize = HVXVectorAccess;
28155 let isNVStore = 1;
28156 let CVINew = 1;
28157 let isNewValue = 1;
28158 let mayStore = 1;
28159 let BaseOpcode = "V6_vS32b_ai";
28160 let isPredicable = 1;
28161 let DecoderNamespace = "EXT_mmvec";
28162 let opNewValue = 2;
28163 }
28164 def V6_vS32b_new_npred_ai : HInst<
28165 (outs),
28166 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Os8),
28167 "if (!$Pv4) vmem($Rt32+#$Ii) = $Os8.new",
28168 tc_7177e272, TypeCVI_VM_NEW_ST>, Enc_f7430e, Requires<[UseHVXV60]>, NewValueRel {
28169 let Inst{7-3} = 0b01101;
28170 let Inst{31-21} = 0b00101000101;
28171 let isPredicated = 1;
28172 let isPredicatedFalse = 1;
28173 let addrMode = BaseImmOffset;
28174 let accessSize = HVXVectorAccess;
28175 let isNVStore = 1;
28176 let CVINew = 1;
28177 let isNewValue = 1;
28178 let mayStore = 1;
28179 let BaseOpcode = "V6_vS32b_ai";
28180 let DecoderNamespace = "EXT_mmvec";
28181 let opNewValue = 3;
28182 }
28183 def V6_vS32b_new_npred_pi : HInst<
28184 (outs IntRegs:$Rx32),
28185 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Os8),
28186 "if (!$Pv4) vmem($Rx32++#$Ii) = $Os8.new",
28187 tc_e99d4c2e, TypeCVI_VM_NEW_ST>, Enc_784502, Requires<[UseHVXV60]>, NewValueRel {
28188 let Inst{7-3} = 0b01101;
28189 let Inst{13-13} = 0b0;
28190 let Inst{31-21} = 0b00101001101;
28191 let isPredicated = 1;
28192 let isPredicatedFalse = 1;
28193 let addrMode = PostInc;
28194 let accessSize = HVXVectorAccess;
28195 let isNVStore = 1;
28196 let CVINew = 1;
28197 let isNewValue = 1;
28198 let mayStore = 1;
28199 let BaseOpcode = "V6_vS32b_pi";
28200 let DecoderNamespace = "EXT_mmvec";
28201 let opNewValue = 4;
28202 let Constraints = "$Rx32 = $Rx32in";
28203 }
28204 def V6_vS32b_new_npred_ppu : HInst<
28205 (outs IntRegs:$Rx32),
28206 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Os8),
28207 "if (!$Pv4) vmem($Rx32++$Mu2) = $Os8.new",
28208 tc_e99d4c2e, TypeCVI_VM_NEW_ST>, Enc_372c9d, Requires<[UseHVXV60]>, NewValueRel {
28209 let Inst{10-3} = 0b00001101;
28210 let Inst{31-21} = 0b00101011101;
28211 let isPredicated = 1;
28212 let isPredicatedFalse = 1;
28213 let addrMode = PostInc;
28214 let accessSize = HVXVectorAccess;
28215 let isNVStore = 1;
28216 let CVINew = 1;
28217 let isNewValue = 1;
28218 let mayStore = 1;
28219 let BaseOpcode = "V6_vS32b_ppu";
28220 let DecoderNamespace = "EXT_mmvec";
28221 let opNewValue = 4;
28222 let Constraints = "$Rx32 = $Rx32in";
28223 }
28224 def V6_vS32b_new_pi : HInst<
28225 (outs IntRegs:$Rx32),
28226 (ins IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Os8),
28227 "vmem($Rx32++#$Ii) = $Os8.new",
28228 tc_6942b6e0, TypeCVI_VM_NEW_ST>, Enc_1aaec1, Requires<[UseHVXV60]>, NewValueRel {
28229 let Inst{7-3} = 0b00100;
28230 let Inst{13-11} = 0b000;
28231 let Inst{31-21} = 0b00101001001;
28232 let addrMode = PostInc;
28233 let accessSize = HVXVectorAccess;
28234 let isNVStore = 1;
28235 let CVINew = 1;
28236 let isNewValue = 1;
28237 let mayStore = 1;
28238 let BaseOpcode = "V6_vS32b_pi";
28239 let isPredicable = 1;
28240 let DecoderNamespace = "EXT_mmvec";
28241 let opNewValue = 3;
28242 let Constraints = "$Rx32 = $Rx32in";
28243 }
28244 def V6_vS32b_new_ppu : HInst<
28245 (outs IntRegs:$Rx32),
28246 (ins IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Os8),
28247 "vmem($Rx32++$Mu2) = $Os8.new",
28248 tc_6942b6e0, TypeCVI_VM_NEW_ST>, Enc_cf1927, Requires<[UseHVXV60]>, NewValueRel {
28249 let Inst{12-3} = 0b0000000100;
28250 let Inst{31-21} = 0b00101011001;
28251 let addrMode = PostInc;
28252 let accessSize = HVXVectorAccess;
28253 let isNVStore = 1;
28254 let CVINew = 1;
28255 let isNewValue = 1;
28256 let mayStore = 1;
28257 let BaseOpcode = "V6_vS32b_ppu";
28258 let isPredicable = 1;
28259 let DecoderNamespace = "EXT_mmvec";
28260 let opNewValue = 3;
28261 let Constraints = "$Rx32 = $Rx32in";
28262 }
28263 def V6_vS32b_new_pred_ai : HInst<
28264 (outs),
28265 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Os8),
28266 "if ($Pv4) vmem($Rt32+#$Ii) = $Os8.new",
28267 tc_7177e272, TypeCVI_VM_NEW_ST>, Enc_f7430e, Requires<[UseHVXV60]>, NewValueRel {
28268 let Inst{7-3} = 0b01000;
28269 let Inst{31-21} = 0b00101000101;
28270 let isPredicated = 1;
28271 let addrMode = BaseImmOffset;
28272 let accessSize = HVXVectorAccess;
28273 let isNVStore = 1;
28274 let CVINew = 1;
28275 let isNewValue = 1;
28276 let mayStore = 1;
28277 let BaseOpcode = "V6_vS32b_ai";
28278 let DecoderNamespace = "EXT_mmvec";
28279 let opNewValue = 3;
28280 }
28281 def V6_vS32b_new_pred_pi : HInst<
28282 (outs IntRegs:$Rx32),
28283 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Os8),
28284 "if ($Pv4) vmem($Rx32++#$Ii) = $Os8.new",
28285 tc_e99d4c2e, TypeCVI_VM_NEW_ST>, Enc_784502, Requires<[UseHVXV60]>, NewValueRel {
28286 let Inst{7-3} = 0b01000;
28287 let Inst{13-13} = 0b0;
28288 let Inst{31-21} = 0b00101001101;
28289 let isPredicated = 1;
28290 let addrMode = PostInc;
28291 let accessSize = HVXVectorAccess;
28292 let isNVStore = 1;
28293 let CVINew = 1;
28294 let isNewValue = 1;
28295 let mayStore = 1;
28296 let BaseOpcode = "V6_vS32b_pi";
28297 let DecoderNamespace = "EXT_mmvec";
28298 let opNewValue = 4;
28299 let Constraints = "$Rx32 = $Rx32in";
28300 }
28301 def V6_vS32b_new_pred_ppu : HInst<
28302 (outs IntRegs:$Rx32),
28303 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Os8),
28304 "if ($Pv4) vmem($Rx32++$Mu2) = $Os8.new",
28305 tc_e99d4c2e, TypeCVI_VM_NEW_ST>, Enc_372c9d, Requires<[UseHVXV60]>, NewValueRel {
28306 let Inst{10-3} = 0b00001000;
28307 let Inst{31-21} = 0b00101011101;
28308 let isPredicated = 1;
28309 let addrMode = PostInc;
28310 let accessSize = HVXVectorAccess;
28311 let isNVStore = 1;
28312 let CVINew = 1;
28313 let isNewValue = 1;
28314 let mayStore = 1;
28315 let BaseOpcode = "V6_vS32b_ppu";
28316 let DecoderNamespace = "EXT_mmvec";
28317 let opNewValue = 4;
28318 let Constraints = "$Rx32 = $Rx32in";
28319 }
28320 def V6_vS32b_npred_ai : HInst<
28321 (outs),
28322 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28323 "if (!$Pv4) vmem($Rt32+#$Ii) = $Vs32",
28324 tc_a02a10a8, TypeCVI_VM_ST>, Enc_27b757, Requires<[UseHVXV60]>, NewValueRel {
28325 let Inst{7-5} = 0b001;
28326 let Inst{31-21} = 0b00101000101;
28327 let isPredicated = 1;
28328 let isPredicatedFalse = 1;
28329 let addrMode = BaseImmOffset;
28330 let accessSize = HVXVectorAccess;
28331 let mayStore = 1;
28332 let BaseOpcode = "V6_vS32b_ai";
28333 let isNVStorable = 1;
28334 let DecoderNamespace = "EXT_mmvec";
28335 }
28336 def V6_vS32b_npred_pi : HInst<
28337 (outs IntRegs:$Rx32),
28338 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28339 "if (!$Pv4) vmem($Rx32++#$Ii) = $Vs32",
28340 tc_54a0dc47, TypeCVI_VM_ST>, Enc_865390, Requires<[UseHVXV60]>, NewValueRel {
28341 let Inst{7-5} = 0b001;
28342 let Inst{13-13} = 0b0;
28343 let Inst{31-21} = 0b00101001101;
28344 let isPredicated = 1;
28345 let isPredicatedFalse = 1;
28346 let addrMode = PostInc;
28347 let accessSize = HVXVectorAccess;
28348 let mayStore = 1;
28349 let BaseOpcode = "V6_vS32b_pi";
28350 let isNVStorable = 1;
28351 let DecoderNamespace = "EXT_mmvec";
28352 let Constraints = "$Rx32 = $Rx32in";
28353 }
28354 def V6_vS32b_npred_ppu : HInst<
28355 (outs IntRegs:$Rx32),
28356 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28357 "if (!$Pv4) vmem($Rx32++$Mu2) = $Vs32",
28358 tc_54a0dc47, TypeCVI_VM_ST>, Enc_1ef990, Requires<[UseHVXV60]>, NewValueRel {
28359 let Inst{10-5} = 0b000001;
28360 let Inst{31-21} = 0b00101011101;
28361 let isPredicated = 1;
28362 let isPredicatedFalse = 1;
28363 let addrMode = PostInc;
28364 let accessSize = HVXVectorAccess;
28365 let mayStore = 1;
28366 let BaseOpcode = "V6_vS32b_ppu";
28367 let isNVStorable = 1;
28368 let DecoderNamespace = "EXT_mmvec";
28369 let Constraints = "$Rx32 = $Rx32in";
28370 }
28371 def V6_vS32b_nqpred_ai : HInst<
28372 (outs),
28373 (ins HvxQR:$Qv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28374 "if (!$Qv4) vmem($Rt32+#$Ii) = $Vs32",
28375 tc_447d9895, TypeCVI_VM_ST>, Enc_2ea740, Requires<[UseHVXV60]> {
28376 let Inst{7-5} = 0b001;
28377 let Inst{31-21} = 0b00101000100;
28378 let addrMode = BaseImmOffset;
28379 let accessSize = HVXVectorAccess;
28380 let mayStore = 1;
28381 let DecoderNamespace = "EXT_mmvec";
28382 }
28383 def V6_vS32b_nqpred_pi : HInst<
28384 (outs IntRegs:$Rx32),
28385 (ins HvxQR:$Qv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28386 "if (!$Qv4) vmem($Rx32++#$Ii) = $Vs32",
28387 tc_191381c1, TypeCVI_VM_ST>, Enc_0b51ce, Requires<[UseHVXV60]> {
28388 let Inst{7-5} = 0b001;
28389 let Inst{13-13} = 0b0;
28390 let Inst{31-21} = 0b00101001100;
28391 let addrMode = PostInc;
28392 let accessSize = HVXVectorAccess;
28393 let mayStore = 1;
28394 let DecoderNamespace = "EXT_mmvec";
28395 let Constraints = "$Rx32 = $Rx32in";
28396 }
28397 def V6_vS32b_nqpred_ppu : HInst<
28398 (outs IntRegs:$Rx32),
28399 (ins HvxQR:$Qv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28400 "if (!$Qv4) vmem($Rx32++$Mu2) = $Vs32",
28401 tc_191381c1, TypeCVI_VM_ST>, Enc_4dff07, Requires<[UseHVXV60]> {
28402 let Inst{10-5} = 0b000001;
28403 let Inst{31-21} = 0b00101011100;
28404 let addrMode = PostInc;
28405 let accessSize = HVXVectorAccess;
28406 let mayStore = 1;
28407 let DecoderNamespace = "EXT_mmvec";
28408 let Constraints = "$Rx32 = $Rx32in";
28409 }
28410 def V6_vS32b_nt_ai : HInst<
28411 (outs),
28412 (ins IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28413 "vmem($Rt32+#$Ii):nt = $Vs32",
28414 tc_c5dba46e, TypeCVI_VM_ST>, Enc_c9e3bc, Requires<[UseHVXV60]>, NewValueRel {
28415 let Inst{7-5} = 0b000;
28416 let Inst{12-11} = 0b00;
28417 let Inst{31-21} = 0b00101000011;
28418 let addrMode = BaseImmOffset;
28419 let accessSize = HVXVectorAccess;
28420 let isNonTemporal = 1;
28421 let mayStore = 1;
28422 let BaseOpcode = "V6_vS32b_ai";
28423 let isNVStorable = 1;
28424 let isPredicable = 1;
28425 let DecoderNamespace = "EXT_mmvec";
28426 }
28427 def V6_vS32b_nt_new_ai : HInst<
28428 (outs),
28429 (ins IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Os8),
28430 "vmem($Rt32+#$Ii):nt = $Os8.new",
28431 tc_ab23f776, TypeCVI_VM_NEW_ST>, Enc_f77fbc, Requires<[UseHVXV60]>, NewValueRel {
28432 let Inst{7-3} = 0b00100;
28433 let Inst{12-11} = 0b00;
28434 let Inst{31-21} = 0b00101000011;
28435 let addrMode = BaseImmOffset;
28436 let accessSize = HVXVectorAccess;
28437 let isNVStore = 1;
28438 let CVINew = 1;
28439 let isNewValue = 1;
28440 let isNonTemporal = 1;
28441 let mayStore = 1;
28442 let BaseOpcode = "V6_vS32b_ai";
28443 let isPredicable = 1;
28444 let DecoderNamespace = "EXT_mmvec";
28445 let opNewValue = 2;
28446 }
28447 def V6_vS32b_nt_new_npred_ai : HInst<
28448 (outs),
28449 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Os8),
28450 "if (!$Pv4) vmem($Rt32+#$Ii):nt = $Os8.new",
28451 tc_7177e272, TypeCVI_VM_NEW_ST>, Enc_f7430e, Requires<[UseHVXV60]>, NewValueRel {
28452 let Inst{7-3} = 0b01111;
28453 let Inst{31-21} = 0b00101000111;
28454 let isPredicated = 1;
28455 let isPredicatedFalse = 1;
28456 let addrMode = BaseImmOffset;
28457 let accessSize = HVXVectorAccess;
28458 let isNVStore = 1;
28459 let CVINew = 1;
28460 let isNewValue = 1;
28461 let isNonTemporal = 1;
28462 let mayStore = 1;
28463 let BaseOpcode = "V6_vS32b_ai";
28464 let DecoderNamespace = "EXT_mmvec";
28465 let opNewValue = 3;
28466 }
28467 def V6_vS32b_nt_new_npred_pi : HInst<
28468 (outs IntRegs:$Rx32),
28469 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Os8),
28470 "if (!$Pv4) vmem($Rx32++#$Ii):nt = $Os8.new",
28471 tc_e99d4c2e, TypeCVI_VM_NEW_ST>, Enc_784502, Requires<[UseHVXV60]>, NewValueRel {
28472 let Inst{7-3} = 0b01111;
28473 let Inst{13-13} = 0b0;
28474 let Inst{31-21} = 0b00101001111;
28475 let isPredicated = 1;
28476 let isPredicatedFalse = 1;
28477 let addrMode = PostInc;
28478 let accessSize = HVXVectorAccess;
28479 let isNVStore = 1;
28480 let CVINew = 1;
28481 let isNewValue = 1;
28482 let isNonTemporal = 1;
28483 let mayStore = 1;
28484 let BaseOpcode = "V6_vS32b_pi";
28485 let DecoderNamespace = "EXT_mmvec";
28486 let opNewValue = 4;
28487 let Constraints = "$Rx32 = $Rx32in";
28488 }
28489 def V6_vS32b_nt_new_npred_ppu : HInst<
28490 (outs IntRegs:$Rx32),
28491 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Os8),
28492 "if (!$Pv4) vmem($Rx32++$Mu2):nt = $Os8.new",
28493 tc_e99d4c2e, TypeCVI_VM_NEW_ST>, Enc_372c9d, Requires<[UseHVXV60]>, NewValueRel {
28494 let Inst{10-3} = 0b00001111;
28495 let Inst{31-21} = 0b00101011111;
28496 let isPredicated = 1;
28497 let isPredicatedFalse = 1;
28498 let addrMode = PostInc;
28499 let accessSize = HVXVectorAccess;
28500 let isNVStore = 1;
28501 let CVINew = 1;
28502 let isNewValue = 1;
28503 let isNonTemporal = 1;
28504 let mayStore = 1;
28505 let BaseOpcode = "V6_vS32b_ppu";
28506 let DecoderNamespace = "EXT_mmvec";
28507 let opNewValue = 4;
28508 let Constraints = "$Rx32 = $Rx32in";
28509 }
28510 def V6_vS32b_nt_new_pi : HInst<
28511 (outs IntRegs:$Rx32),
28512 (ins IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Os8),
28513 "vmem($Rx32++#$Ii):nt = $Os8.new",
28514 tc_6942b6e0, TypeCVI_VM_NEW_ST>, Enc_1aaec1, Requires<[UseHVXV60]>, NewValueRel {
28515 let Inst{7-3} = 0b00100;
28516 let Inst{13-11} = 0b000;
28517 let Inst{31-21} = 0b00101001011;
28518 let addrMode = PostInc;
28519 let accessSize = HVXVectorAccess;
28520 let isNVStore = 1;
28521 let CVINew = 1;
28522 let isNewValue = 1;
28523 let isNonTemporal = 1;
28524 let mayStore = 1;
28525 let BaseOpcode = "V6_vS32b_pi";
28526 let isPredicable = 1;
28527 let DecoderNamespace = "EXT_mmvec";
28528 let opNewValue = 3;
28529 let Constraints = "$Rx32 = $Rx32in";
28530 }
28531 def V6_vS32b_nt_new_ppu : HInst<
28532 (outs IntRegs:$Rx32),
28533 (ins IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Os8),
28534 "vmem($Rx32++$Mu2):nt = $Os8.new",
28535 tc_6942b6e0, TypeCVI_VM_NEW_ST>, Enc_cf1927, Requires<[UseHVXV60]>, NewValueRel {
28536 let Inst{12-3} = 0b0000000100;
28537 let Inst{31-21} = 0b00101011011;
28538 let addrMode = PostInc;
28539 let accessSize = HVXVectorAccess;
28540 let isNVStore = 1;
28541 let CVINew = 1;
28542 let isNewValue = 1;
28543 let isNonTemporal = 1;
28544 let mayStore = 1;
28545 let BaseOpcode = "V6_vS32b_ppu";
28546 let isPredicable = 1;
28547 let DecoderNamespace = "EXT_mmvec";
28548 let opNewValue = 3;
28549 let Constraints = "$Rx32 = $Rx32in";
28550 }
28551 def V6_vS32b_nt_new_pred_ai : HInst<
28552 (outs),
28553 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Os8),
28554 "if ($Pv4) vmem($Rt32+#$Ii):nt = $Os8.new",
28555 tc_7177e272, TypeCVI_VM_NEW_ST>, Enc_f7430e, Requires<[UseHVXV60]>, NewValueRel {
28556 let Inst{7-3} = 0b01010;
28557 let Inst{31-21} = 0b00101000111;
28558 let isPredicated = 1;
28559 let addrMode = BaseImmOffset;
28560 let accessSize = HVXVectorAccess;
28561 let isNVStore = 1;
28562 let CVINew = 1;
28563 let isNewValue = 1;
28564 let isNonTemporal = 1;
28565 let mayStore = 1;
28566 let BaseOpcode = "V6_vS32b_ai";
28567 let DecoderNamespace = "EXT_mmvec";
28568 let opNewValue = 3;
28569 }
28570 def V6_vS32b_nt_new_pred_pi : HInst<
28571 (outs IntRegs:$Rx32),
28572 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Os8),
28573 "if ($Pv4) vmem($Rx32++#$Ii):nt = $Os8.new",
28574 tc_e99d4c2e, TypeCVI_VM_NEW_ST>, Enc_784502, Requires<[UseHVXV60]>, NewValueRel {
28575 let Inst{7-3} = 0b01010;
28576 let Inst{13-13} = 0b0;
28577 let Inst{31-21} = 0b00101001111;
28578 let isPredicated = 1;
28579 let addrMode = PostInc;
28580 let accessSize = HVXVectorAccess;
28581 let isNVStore = 1;
28582 let CVINew = 1;
28583 let isNewValue = 1;
28584 let isNonTemporal = 1;
28585 let mayStore = 1;
28586 let BaseOpcode = "V6_vS32b_pi";
28587 let DecoderNamespace = "EXT_mmvec";
28588 let opNewValue = 4;
28589 let Constraints = "$Rx32 = $Rx32in";
28590 }
28591 def V6_vS32b_nt_new_pred_ppu : HInst<
28592 (outs IntRegs:$Rx32),
28593 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Os8),
28594 "if ($Pv4) vmem($Rx32++$Mu2):nt = $Os8.new",
28595 tc_e99d4c2e, TypeCVI_VM_NEW_ST>, Enc_372c9d, Requires<[UseHVXV60]>, NewValueRel {
28596 let Inst{10-3} = 0b00001010;
28597 let Inst{31-21} = 0b00101011111;
28598 let isPredicated = 1;
28599 let addrMode = PostInc;
28600 let accessSize = HVXVectorAccess;
28601 let isNVStore = 1;
28602 let CVINew = 1;
28603 let isNewValue = 1;
28604 let isNonTemporal = 1;
28605 let mayStore = 1;
28606 let BaseOpcode = "V6_vS32b_ppu";
28607 let DecoderNamespace = "EXT_mmvec";
28608 let opNewValue = 4;
28609 let Constraints = "$Rx32 = $Rx32in";
28610 }
28611 def V6_vS32b_nt_npred_ai : HInst<
28612 (outs),
28613 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28614 "if (!$Pv4) vmem($Rt32+#$Ii):nt = $Vs32",
28615 tc_a02a10a8, TypeCVI_VM_ST>, Enc_27b757, Requires<[UseHVXV60]>, NewValueRel {
28616 let Inst{7-5} = 0b001;
28617 let Inst{31-21} = 0b00101000111;
28618 let isPredicated = 1;
28619 let isPredicatedFalse = 1;
28620 let addrMode = BaseImmOffset;
28621 let accessSize = HVXVectorAccess;
28622 let isNonTemporal = 1;
28623 let mayStore = 1;
28624 let BaseOpcode = "V6_vS32b_ai";
28625 let isNVStorable = 1;
28626 let DecoderNamespace = "EXT_mmvec";
28627 }
28628 def V6_vS32b_nt_npred_pi : HInst<
28629 (outs IntRegs:$Rx32),
28630 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28631 "if (!$Pv4) vmem($Rx32++#$Ii):nt = $Vs32",
28632 tc_54a0dc47, TypeCVI_VM_ST>, Enc_865390, Requires<[UseHVXV60]>, NewValueRel {
28633 let Inst{7-5} = 0b001;
28634 let Inst{13-13} = 0b0;
28635 let Inst{31-21} = 0b00101001111;
28636 let isPredicated = 1;
28637 let isPredicatedFalse = 1;
28638 let addrMode = PostInc;
28639 let accessSize = HVXVectorAccess;
28640 let isNonTemporal = 1;
28641 let mayStore = 1;
28642 let BaseOpcode = "V6_vS32b_pi";
28643 let isNVStorable = 1;
28644 let DecoderNamespace = "EXT_mmvec";
28645 let Constraints = "$Rx32 = $Rx32in";
28646 }
28647 def V6_vS32b_nt_npred_ppu : HInst<
28648 (outs IntRegs:$Rx32),
28649 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28650 "if (!$Pv4) vmem($Rx32++$Mu2):nt = $Vs32",
28651 tc_54a0dc47, TypeCVI_VM_ST>, Enc_1ef990, Requires<[UseHVXV60]>, NewValueRel {
28652 let Inst{10-5} = 0b000001;
28653 let Inst{31-21} = 0b00101011111;
28654 let isPredicated = 1;
28655 let isPredicatedFalse = 1;
28656 let addrMode = PostInc;
28657 let accessSize = HVXVectorAccess;
28658 let isNonTemporal = 1;
28659 let mayStore = 1;
28660 let BaseOpcode = "V6_vS32b_ppu";
28661 let isNVStorable = 1;
28662 let DecoderNamespace = "EXT_mmvec";
28663 let Constraints = "$Rx32 = $Rx32in";
28664 }
28665 def V6_vS32b_nt_nqpred_ai : HInst<
28666 (outs),
28667 (ins HvxQR:$Qv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28668 "if (!$Qv4) vmem($Rt32+#$Ii):nt = $Vs32",
28669 tc_447d9895, TypeCVI_VM_ST>, Enc_2ea740, Requires<[UseHVXV60]> {
28670 let Inst{7-5} = 0b001;
28671 let Inst{31-21} = 0b00101000110;
28672 let addrMode = BaseImmOffset;
28673 let accessSize = HVXVectorAccess;
28674 let isNonTemporal = 1;
28675 let mayStore = 1;
28676 let DecoderNamespace = "EXT_mmvec";
28677 }
28678 def V6_vS32b_nt_nqpred_pi : HInst<
28679 (outs IntRegs:$Rx32),
28680 (ins HvxQR:$Qv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28681 "if (!$Qv4) vmem($Rx32++#$Ii):nt = $Vs32",
28682 tc_191381c1, TypeCVI_VM_ST>, Enc_0b51ce, Requires<[UseHVXV60]> {
28683 let Inst{7-5} = 0b001;
28684 let Inst{13-13} = 0b0;
28685 let Inst{31-21} = 0b00101001110;
28686 let addrMode = PostInc;
28687 let accessSize = HVXVectorAccess;
28688 let isNonTemporal = 1;
28689 let mayStore = 1;
28690 let DecoderNamespace = "EXT_mmvec";
28691 let Constraints = "$Rx32 = $Rx32in";
28692 }
28693 def V6_vS32b_nt_nqpred_ppu : HInst<
28694 (outs IntRegs:$Rx32),
28695 (ins HvxQR:$Qv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28696 "if (!$Qv4) vmem($Rx32++$Mu2):nt = $Vs32",
28697 tc_191381c1, TypeCVI_VM_ST>, Enc_4dff07, Requires<[UseHVXV60]> {
28698 let Inst{10-5} = 0b000001;
28699 let Inst{31-21} = 0b00101011110;
28700 let addrMode = PostInc;
28701 let accessSize = HVXVectorAccess;
28702 let isNonTemporal = 1;
28703 let mayStore = 1;
28704 let DecoderNamespace = "EXT_mmvec";
28705 let Constraints = "$Rx32 = $Rx32in";
28706 }
28707 def V6_vS32b_nt_pi : HInst<
28708 (outs IntRegs:$Rx32),
28709 (ins IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28710 "vmem($Rx32++#$Ii):nt = $Vs32",
28711 tc_3e2aaafc, TypeCVI_VM_ST>, Enc_b62ef7, Requires<[UseHVXV60]>, NewValueRel {
28712 let Inst{7-5} = 0b000;
28713 let Inst{13-11} = 0b000;
28714 let Inst{31-21} = 0b00101001011;
28715 let addrMode = PostInc;
28716 let accessSize = HVXVectorAccess;
28717 let isNonTemporal = 1;
28718 let mayStore = 1;
28719 let BaseOpcode = "V6_vS32b_pi";
28720 let isNVStorable = 1;
28721 let isPredicable = 1;
28722 let DecoderNamespace = "EXT_mmvec";
28723 let Constraints = "$Rx32 = $Rx32in";
28724 }
28725 def V6_vS32b_nt_ppu : HInst<
28726 (outs IntRegs:$Rx32),
28727 (ins IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28728 "vmem($Rx32++$Mu2):nt = $Vs32",
28729 tc_3e2aaafc, TypeCVI_VM_ST>, Enc_d15d19, Requires<[UseHVXV60]>, NewValueRel {
28730 let Inst{12-5} = 0b00000000;
28731 let Inst{31-21} = 0b00101011011;
28732 let addrMode = PostInc;
28733 let accessSize = HVXVectorAccess;
28734 let isNonTemporal = 1;
28735 let mayStore = 1;
28736 let BaseOpcode = "V6_vS32b_ppu";
28737 let isNVStorable = 1;
28738 let isPredicable = 1;
28739 let DecoderNamespace = "EXT_mmvec";
28740 let Constraints = "$Rx32 = $Rx32in";
28741 }
28742 def V6_vS32b_nt_pred_ai : HInst<
28743 (outs),
28744 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28745 "if ($Pv4) vmem($Rt32+#$Ii):nt = $Vs32",
28746 tc_a02a10a8, TypeCVI_VM_ST>, Enc_27b757, Requires<[UseHVXV60]>, NewValueRel {
28747 let Inst{7-5} = 0b000;
28748 let Inst{31-21} = 0b00101000111;
28749 let isPredicated = 1;
28750 let addrMode = BaseImmOffset;
28751 let accessSize = HVXVectorAccess;
28752 let isNonTemporal = 1;
28753 let mayStore = 1;
28754 let BaseOpcode = "V6_vS32b_ai";
28755 let isNVStorable = 1;
28756 let DecoderNamespace = "EXT_mmvec";
28757 }
28758 def V6_vS32b_nt_pred_pi : HInst<
28759 (outs IntRegs:$Rx32),
28760 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28761 "if ($Pv4) vmem($Rx32++#$Ii):nt = $Vs32",
28762 tc_54a0dc47, TypeCVI_VM_ST>, Enc_865390, Requires<[UseHVXV60]>, NewValueRel {
28763 let Inst{7-5} = 0b000;
28764 let Inst{13-13} = 0b0;
28765 let Inst{31-21} = 0b00101001111;
28766 let isPredicated = 1;
28767 let addrMode = PostInc;
28768 let accessSize = HVXVectorAccess;
28769 let isNonTemporal = 1;
28770 let mayStore = 1;
28771 let BaseOpcode = "V6_vS32b_pi";
28772 let isNVStorable = 1;
28773 let DecoderNamespace = "EXT_mmvec";
28774 let Constraints = "$Rx32 = $Rx32in";
28775 }
28776 def V6_vS32b_nt_pred_ppu : HInst<
28777 (outs IntRegs:$Rx32),
28778 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28779 "if ($Pv4) vmem($Rx32++$Mu2):nt = $Vs32",
28780 tc_54a0dc47, TypeCVI_VM_ST>, Enc_1ef990, Requires<[UseHVXV60]>, NewValueRel {
28781 let Inst{10-5} = 0b000000;
28782 let Inst{31-21} = 0b00101011111;
28783 let isPredicated = 1;
28784 let addrMode = PostInc;
28785 let accessSize = HVXVectorAccess;
28786 let isNonTemporal = 1;
28787 let mayStore = 1;
28788 let BaseOpcode = "V6_vS32b_ppu";
28789 let isNVStorable = 1;
28790 let DecoderNamespace = "EXT_mmvec";
28791 let Constraints = "$Rx32 = $Rx32in";
28792 }
28793 def V6_vS32b_nt_qpred_ai : HInst<
28794 (outs),
28795 (ins HvxQR:$Qv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28796 "if ($Qv4) vmem($Rt32+#$Ii):nt = $Vs32",
28797 tc_447d9895, TypeCVI_VM_ST>, Enc_2ea740, Requires<[UseHVXV60]> {
28798 let Inst{7-5} = 0b000;
28799 let Inst{31-21} = 0b00101000110;
28800 let addrMode = BaseImmOffset;
28801 let accessSize = HVXVectorAccess;
28802 let isNonTemporal = 1;
28803 let mayStore = 1;
28804 let DecoderNamespace = "EXT_mmvec";
28805 }
28806 def V6_vS32b_nt_qpred_pi : HInst<
28807 (outs IntRegs:$Rx32),
28808 (ins HvxQR:$Qv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28809 "if ($Qv4) vmem($Rx32++#$Ii):nt = $Vs32",
28810 tc_191381c1, TypeCVI_VM_ST>, Enc_0b51ce, Requires<[UseHVXV60]> {
28811 let Inst{7-5} = 0b000;
28812 let Inst{13-13} = 0b0;
28813 let Inst{31-21} = 0b00101001110;
28814 let addrMode = PostInc;
28815 let accessSize = HVXVectorAccess;
28816 let isNonTemporal = 1;
28817 let mayStore = 1;
28818 let DecoderNamespace = "EXT_mmvec";
28819 let Constraints = "$Rx32 = $Rx32in";
28820 }
28821 def V6_vS32b_nt_qpred_ppu : HInst<
28822 (outs IntRegs:$Rx32),
28823 (ins HvxQR:$Qv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28824 "if ($Qv4) vmem($Rx32++$Mu2):nt = $Vs32",
28825 tc_191381c1, TypeCVI_VM_ST>, Enc_4dff07, Requires<[UseHVXV60]> {
28826 let Inst{10-5} = 0b000000;
28827 let Inst{31-21} = 0b00101011110;
28828 let addrMode = PostInc;
28829 let accessSize = HVXVectorAccess;
28830 let isNonTemporal = 1;
28831 let mayStore = 1;
28832 let DecoderNamespace = "EXT_mmvec";
28833 let Constraints = "$Rx32 = $Rx32in";
28834 }
28835 def V6_vS32b_pi : HInst<
28836 (outs IntRegs:$Rx32),
28837 (ins IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28838 "vmem($Rx32++#$Ii) = $Vs32",
28839 tc_3e2aaafc, TypeCVI_VM_ST>, Enc_b62ef7, Requires<[UseHVXV60]>, NewValueRel {
28840 let Inst{7-5} = 0b000;
28841 let Inst{13-11} = 0b000;
28842 let Inst{31-21} = 0b00101001001;
28843 let addrMode = PostInc;
28844 let accessSize = HVXVectorAccess;
28845 let mayStore = 1;
28846 let BaseOpcode = "V6_vS32b_pi";
28847 let isNVStorable = 1;
28848 let isPredicable = 1;
28849 let DecoderNamespace = "EXT_mmvec";
28850 let Constraints = "$Rx32 = $Rx32in";
28851 }
28852 def V6_vS32b_ppu : HInst<
28853 (outs IntRegs:$Rx32),
28854 (ins IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28855 "vmem($Rx32++$Mu2) = $Vs32",
28856 tc_3e2aaafc, TypeCVI_VM_ST>, Enc_d15d19, Requires<[UseHVXV60]>, NewValueRel {
28857 let Inst{12-5} = 0b00000000;
28858 let Inst{31-21} = 0b00101011001;
28859 let addrMode = PostInc;
28860 let accessSize = HVXVectorAccess;
28861 let mayStore = 1;
28862 let isNVStorable = 1;
28863 let isPredicable = 1;
28864 let DecoderNamespace = "EXT_mmvec";
28865 let Constraints = "$Rx32 = $Rx32in";
28866 }
28867 def V6_vS32b_pred_ai : HInst<
28868 (outs),
28869 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28870 "if ($Pv4) vmem($Rt32+#$Ii) = $Vs32",
28871 tc_a02a10a8, TypeCVI_VM_ST>, Enc_27b757, Requires<[UseHVXV60]>, NewValueRel {
28872 let Inst{7-5} = 0b000;
28873 let Inst{31-21} = 0b00101000101;
28874 let isPredicated = 1;
28875 let addrMode = BaseImmOffset;
28876 let accessSize = HVXVectorAccess;
28877 let mayStore = 1;
28878 let BaseOpcode = "V6_vS32b_ai";
28879 let isNVStorable = 1;
28880 let DecoderNamespace = "EXT_mmvec";
28881 }
28882 def V6_vS32b_pred_pi : HInst<
28883 (outs IntRegs:$Rx32),
28884 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28885 "if ($Pv4) vmem($Rx32++#$Ii) = $Vs32",
28886 tc_54a0dc47, TypeCVI_VM_ST>, Enc_865390, Requires<[UseHVXV60]>, NewValueRel {
28887 let Inst{7-5} = 0b000;
28888 let Inst{13-13} = 0b0;
28889 let Inst{31-21} = 0b00101001101;
28890 let isPredicated = 1;
28891 let addrMode = PostInc;
28892 let accessSize = HVXVectorAccess;
28893 let mayStore = 1;
28894 let BaseOpcode = "V6_vS32b_pi";
28895 let isNVStorable = 1;
28896 let DecoderNamespace = "EXT_mmvec";
28897 let Constraints = "$Rx32 = $Rx32in";
28898 }
28899 def V6_vS32b_pred_ppu : HInst<
28900 (outs IntRegs:$Rx32),
28901 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28902 "if ($Pv4) vmem($Rx32++$Mu2) = $Vs32",
28903 tc_54a0dc47, TypeCVI_VM_ST>, Enc_1ef990, Requires<[UseHVXV60]>, NewValueRel {
28904 let Inst{10-5} = 0b000000;
28905 let Inst{31-21} = 0b00101011101;
28906 let isPredicated = 1;
28907 let addrMode = PostInc;
28908 let accessSize = HVXVectorAccess;
28909 let mayStore = 1;
28910 let BaseOpcode = "V6_vS32b_ppu";
28911 let isNVStorable = 1;
28912 let DecoderNamespace = "EXT_mmvec";
28913 let Constraints = "$Rx32 = $Rx32in";
28914 }
28915 def V6_vS32b_qpred_ai : HInst<
28916 (outs),
28917 (ins HvxQR:$Qv4, IntRegs:$Rt32, s4_0Imm:$Ii, HvxVR:$Vs32),
28918 "if ($Qv4) vmem($Rt32+#$Ii) = $Vs32",
28919 tc_447d9895, TypeCVI_VM_ST>, Enc_2ea740, Requires<[UseHVXV60]> {
28920 let Inst{7-5} = 0b000;
28921 let Inst{31-21} = 0b00101000100;
28922 let addrMode = BaseImmOffset;
28923 let accessSize = HVXVectorAccess;
28924 let mayStore = 1;
28925 let DecoderNamespace = "EXT_mmvec";
28926 }
28927 def V6_vS32b_qpred_pi : HInst<
28928 (outs IntRegs:$Rx32),
28929 (ins HvxQR:$Qv4, IntRegs:$Rx32in, s3_0Imm:$Ii, HvxVR:$Vs32),
28930 "if ($Qv4) vmem($Rx32++#$Ii) = $Vs32",
28931 tc_191381c1, TypeCVI_VM_ST>, Enc_0b51ce, Requires<[UseHVXV60]> {
28932 let Inst{7-5} = 0b000;
28933 let Inst{13-13} = 0b0;
28934 let Inst{31-21} = 0b00101001100;
28935 let addrMode = PostInc;
28936 let accessSize = HVXVectorAccess;
28937 let mayStore = 1;
28938 let DecoderNamespace = "EXT_mmvec";
28939 let Constraints = "$Rx32 = $Rx32in";
28940 }
28941 def V6_vS32b_qpred_ppu : HInst<
28942 (outs IntRegs:$Rx32),
28943 (ins HvxQR:$Qv4, IntRegs:$Rx32in, ModRegs:$Mu2, HvxVR:$Vs32),
28944 "if ($Qv4) vmem($Rx32++$Mu2) = $Vs32",
28945 tc_191381c1, TypeCVI_VM_ST>, Enc_4dff07, Requires<[UseHVXV60]> {
28946 let Inst{10-5} = 0b000000;
28947 let Inst{31-21} = 0b00101011100;
28948 let addrMode = PostInc;
28949 let accessSize = HVXVectorAccess;
28950 let mayStore = 1;
28951 let DecoderNamespace = "EXT_mmvec";
28952 let Constraints = "$Rx32 = $Rx32in";
28953 }
28954 def V6_vS32b_srls_ai : HInst<
28955 (outs),
28956 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
28957 "vmem($Rt32+#$Ii):scatter_release",
28958 tc_3ce09744, TypeCVI_SCATTER_NEW_RST>, Enc_ff3442, Requires<[UseHVXV65]> {
28959 let Inst{7-0} = 0b00101000;
28960 let Inst{12-11} = 0b00;
28961 let Inst{31-21} = 0b00101000001;
28962 let addrMode = BaseImmOffset;
28963 let accessSize = HVXVectorAccess;
28964 let CVINew = 1;
28965 let mayStore = 1;
28966 let DecoderNamespace = "EXT_mmvec";
28967 }
28968 def V6_vS32b_srls_pi : HInst<
28969 (outs IntRegs:$Rx32),
28970 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
28971 "vmem($Rx32++#$Ii):scatter_release",
28972 tc_20a4bbec, TypeCVI_SCATTER_NEW_RST>, Enc_6c9ee0, Requires<[UseHVXV65]> {
28973 let Inst{7-0} = 0b00101000;
28974 let Inst{13-11} = 0b000;
28975 let Inst{31-21} = 0b00101001001;
28976 let addrMode = PostInc;
28977 let accessSize = HVXVectorAccess;
28978 let CVINew = 1;
28979 let mayStore = 1;
28980 let DecoderNamespace = "EXT_mmvec";
28981 let Constraints = "$Rx32 = $Rx32in";
28982 }
28983 def V6_vS32b_srls_ppu : HInst<
28984 (outs IntRegs:$Rx32),
28985 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
28986 "vmem($Rx32++$Mu2):scatter_release",
28987 tc_20a4bbec, TypeCVI_SCATTER_NEW_RST>, Enc_44661f, Requires<[UseHVXV65]> {
28988 let Inst{12-0} = 0b0000000101000;
28989 let Inst{31-21} = 0b00101011001;
28990 let addrMode = PostInc;
28991 let accessSize = HVXVectorAccess;
28992 let CVINew = 1;
28993 let mayStore = 1;
28994 let DecoderNamespace = "EXT_mmvec";
28995 let Constraints = "$Rx32 = $Rx32in";
28996 }
28997 def V6_vabsb : HInst<
28998 (outs HvxVR:$Vd32),
28999 (ins HvxVR:$Vu32),
29000 "$Vd32.b = vabs($Vu32.b)",
29001 tc_0ec46cf9, TypeCVI_VA>, Enc_e7581c, Requires<[UseHVXV65]> {
29002 let Inst{7-5} = 0b100;
29003 let Inst{13-13} = 0b0;
29004 let Inst{31-16} = 0b0001111000000001;
29005 let hasNewValue = 1;
29006 let opNewValue = 0;
29007 let DecoderNamespace = "EXT_mmvec";
29008 }
29009 def V6_vabsb_alt : HInst<
29010 (outs HvxVR:$Vd32),
29011 (ins HvxVR:$Vu32),
29012 "$Vd32 = vabsb($Vu32)",
29013 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
29014 let hasNewValue = 1;
29015 let opNewValue = 0;
29016 let isPseudo = 1;
29017 let isCodeGenOnly = 1;
29018 let DecoderNamespace = "EXT_mmvec";
29019 }
29020 def V6_vabsb_sat : HInst<
29021 (outs HvxVR:$Vd32),
29022 (ins HvxVR:$Vu32),
29023 "$Vd32.b = vabs($Vu32.b):sat",
29024 tc_0ec46cf9, TypeCVI_VA>, Enc_e7581c, Requires<[UseHVXV65]> {
29025 let Inst{7-5} = 0b101;
29026 let Inst{13-13} = 0b0;
29027 let Inst{31-16} = 0b0001111000000001;
29028 let hasNewValue = 1;
29029 let opNewValue = 0;
29030 let DecoderNamespace = "EXT_mmvec";
29031 }
29032 def V6_vabsb_sat_alt : HInst<
29033 (outs HvxVR:$Vd32),
29034 (ins HvxVR:$Vu32),
29035 "$Vd32 = vabsb($Vu32):sat",
29036 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
29037 let hasNewValue = 1;
29038 let opNewValue = 0;
29039 let isPseudo = 1;
29040 let isCodeGenOnly = 1;
29041 let DecoderNamespace = "EXT_mmvec";
29042 }
29043 def V6_vabsdiffh : HInst<
29044 (outs HvxVR:$Vd32),
29045 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29046 "$Vd32.uh = vabsdiff($Vu32.h,$Vv32.h)",
29047 tc_c127de3a, TypeCVI_VX>, Enc_45364e, Requires<[UseHVXV60]> {
29048 let Inst{7-5} = 0b001;
29049 let Inst{13-13} = 0b0;
29050 let Inst{31-21} = 0b00011100110;
29051 let hasNewValue = 1;
29052 let opNewValue = 0;
29053 let DecoderNamespace = "EXT_mmvec";
29054 }
29055 def V6_vabsdiffh_alt : HInst<
29056 (outs HvxVR:$Vd32),
29057 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29058 "$Vd32 = vabsdiffh($Vu32,$Vv32)",
29059 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29060 let hasNewValue = 1;
29061 let opNewValue = 0;
29062 let isPseudo = 1;
29063 let isCodeGenOnly = 1;
29064 let DecoderNamespace = "EXT_mmvec";
29065 }
29066 def V6_vabsdiffub : HInst<
29067 (outs HvxVR:$Vd32),
29068 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29069 "$Vd32.ub = vabsdiff($Vu32.ub,$Vv32.ub)",
29070 tc_c127de3a, TypeCVI_VX>, Enc_45364e, Requires<[UseHVXV60]> {
29071 let Inst{7-5} = 0b000;
29072 let Inst{13-13} = 0b0;
29073 let Inst{31-21} = 0b00011100110;
29074 let hasNewValue = 1;
29075 let opNewValue = 0;
29076 let DecoderNamespace = "EXT_mmvec";
29077 }
29078 def V6_vabsdiffub_alt : HInst<
29079 (outs HvxVR:$Vd32),
29080 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29081 "$Vd32 = vabsdiffub($Vu32,$Vv32)",
29082 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29083 let hasNewValue = 1;
29084 let opNewValue = 0;
29085 let isPseudo = 1;
29086 let isCodeGenOnly = 1;
29087 let DecoderNamespace = "EXT_mmvec";
29088 }
29089 def V6_vabsdiffuh : HInst<
29090 (outs HvxVR:$Vd32),
29091 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29092 "$Vd32.uh = vabsdiff($Vu32.uh,$Vv32.uh)",
29093 tc_c127de3a, TypeCVI_VX>, Enc_45364e, Requires<[UseHVXV60]> {
29094 let Inst{7-5} = 0b010;
29095 let Inst{13-13} = 0b0;
29096 let Inst{31-21} = 0b00011100110;
29097 let hasNewValue = 1;
29098 let opNewValue = 0;
29099 let DecoderNamespace = "EXT_mmvec";
29100 }
29101 def V6_vabsdiffuh_alt : HInst<
29102 (outs HvxVR:$Vd32),
29103 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29104 "$Vd32 = vabsdiffuh($Vu32,$Vv32)",
29105 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29106 let hasNewValue = 1;
29107 let opNewValue = 0;
29108 let isPseudo = 1;
29109 let isCodeGenOnly = 1;
29110 let DecoderNamespace = "EXT_mmvec";
29111 }
29112 def V6_vabsdiffw : HInst<
29113 (outs HvxVR:$Vd32),
29114 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29115 "$Vd32.uw = vabsdiff($Vu32.w,$Vv32.w)",
29116 tc_c127de3a, TypeCVI_VX>, Enc_45364e, Requires<[UseHVXV60]> {
29117 let Inst{7-5} = 0b011;
29118 let Inst{13-13} = 0b0;
29119 let Inst{31-21} = 0b00011100110;
29120 let hasNewValue = 1;
29121 let opNewValue = 0;
29122 let DecoderNamespace = "EXT_mmvec";
29123 }
29124 def V6_vabsdiffw_alt : HInst<
29125 (outs HvxVR:$Vd32),
29126 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29127 "$Vd32 = vabsdiffw($Vu32,$Vv32)",
29128 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29129 let hasNewValue = 1;
29130 let opNewValue = 0;
29131 let isPseudo = 1;
29132 let isCodeGenOnly = 1;
29133 let DecoderNamespace = "EXT_mmvec";
29134 }
29135 def V6_vabsh : HInst<
29136 (outs HvxVR:$Vd32),
29137 (ins HvxVR:$Vu32),
29138 "$Vd32.h = vabs($Vu32.h)",
29139 tc_0ec46cf9, TypeCVI_VA>, Enc_e7581c, Requires<[UseHVXV60]> {
29140 let Inst{7-5} = 0b000;
29141 let Inst{13-13} = 0b0;
29142 let Inst{31-16} = 0b0001111000000000;
29143 let hasNewValue = 1;
29144 let opNewValue = 0;
29145 let DecoderNamespace = "EXT_mmvec";
29146 }
29147 def V6_vabsh_alt : HInst<
29148 (outs HvxVR:$Vd32),
29149 (ins HvxVR:$Vu32),
29150 "$Vd32 = vabsh($Vu32)",
29151 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29152 let hasNewValue = 1;
29153 let opNewValue = 0;
29154 let isPseudo = 1;
29155 let isCodeGenOnly = 1;
29156 let DecoderNamespace = "EXT_mmvec";
29157 }
29158 def V6_vabsh_sat : HInst<
29159 (outs HvxVR:$Vd32),
29160 (ins HvxVR:$Vu32),
29161 "$Vd32.h = vabs($Vu32.h):sat",
29162 tc_0ec46cf9, TypeCVI_VA>, Enc_e7581c, Requires<[UseHVXV60]> {
29163 let Inst{7-5} = 0b001;
29164 let Inst{13-13} = 0b0;
29165 let Inst{31-16} = 0b0001111000000000;
29166 let hasNewValue = 1;
29167 let opNewValue = 0;
29168 let DecoderNamespace = "EXT_mmvec";
29169 }
29170 def V6_vabsh_sat_alt : HInst<
29171 (outs HvxVR:$Vd32),
29172 (ins HvxVR:$Vu32),
29173 "$Vd32 = vabsh($Vu32):sat",
29174 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29175 let hasNewValue = 1;
29176 let opNewValue = 0;
29177 let isPseudo = 1;
29178 let isCodeGenOnly = 1;
29179 let DecoderNamespace = "EXT_mmvec";
29180 }
29181 def V6_vabsub_alt : HInst<
29182 (outs HvxVR:$Vd32),
29183 (ins HvxVR:$Vu32),
29184 "$Vd32.ub = vabs($Vu32.b)",
29185 tc_0ec46cf9, TypeMAPPING>, Requires<[UseHVXV65]> {
29186 let hasNewValue = 1;
29187 let opNewValue = 0;
29188 let isPseudo = 1;
29189 let isCodeGenOnly = 1;
29190 let DecoderNamespace = "EXT_mmvec";
29191 }
29192 def V6_vabsuh_alt : HInst<
29193 (outs HvxVR:$Vd32),
29194 (ins HvxVR:$Vu32),
29195 "$Vd32.uh = vabs($Vu32.h)",
29196 tc_0ec46cf9, TypeMAPPING>, Requires<[UseHVXV65]> {
29197 let hasNewValue = 1;
29198 let opNewValue = 0;
29199 let isPseudo = 1;
29200 let isCodeGenOnly = 1;
29201 let DecoderNamespace = "EXT_mmvec";
29202 }
29203 def V6_vabsuw_alt : HInst<
29204 (outs HvxVR:$Vd32),
29205 (ins HvxVR:$Vu32),
29206 "$Vd32.uw = vabs($Vu32.w)",
29207 tc_0ec46cf9, TypeMAPPING>, Requires<[UseHVXV65]> {
29208 let hasNewValue = 1;
29209 let opNewValue = 0;
29210 let isPseudo = 1;
29211 let isCodeGenOnly = 1;
29212 let DecoderNamespace = "EXT_mmvec";
29213 }
29214 def V6_vabsw : HInst<
29215 (outs HvxVR:$Vd32),
29216 (ins HvxVR:$Vu32),
29217 "$Vd32.w = vabs($Vu32.w)",
29218 tc_0ec46cf9, TypeCVI_VA>, Enc_e7581c, Requires<[UseHVXV60]> {
29219 let Inst{7-5} = 0b010;
29220 let Inst{13-13} = 0b0;
29221 let Inst{31-16} = 0b0001111000000000;
29222 let hasNewValue = 1;
29223 let opNewValue = 0;
29224 let DecoderNamespace = "EXT_mmvec";
29225 }
29226 def V6_vabsw_alt : HInst<
29227 (outs HvxVR:$Vd32),
29228 (ins HvxVR:$Vu32),
29229 "$Vd32 = vabsw($Vu32)",
29230 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29231 let hasNewValue = 1;
29232 let opNewValue = 0;
29233 let isPseudo = 1;
29234 let isCodeGenOnly = 1;
29235 let DecoderNamespace = "EXT_mmvec";
29236 }
29237 def V6_vabsw_sat : HInst<
29238 (outs HvxVR:$Vd32),
29239 (ins HvxVR:$Vu32),
29240 "$Vd32.w = vabs($Vu32.w):sat",
29241 tc_0ec46cf9, TypeCVI_VA>, Enc_e7581c, Requires<[UseHVXV60]> {
29242 let Inst{7-5} = 0b011;
29243 let Inst{13-13} = 0b0;
29244 let Inst{31-16} = 0b0001111000000000;
29245 let hasNewValue = 1;
29246 let opNewValue = 0;
29247 let DecoderNamespace = "EXT_mmvec";
29248 }
29249 def V6_vabsw_sat_alt : HInst<
29250 (outs HvxVR:$Vd32),
29251 (ins HvxVR:$Vu32),
29252 "$Vd32 = vabsw($Vu32):sat",
29253 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29254 let hasNewValue = 1;
29255 let opNewValue = 0;
29256 let isPseudo = 1;
29257 let isCodeGenOnly = 1;
29258 let DecoderNamespace = "EXT_mmvec";
29259 }
29260 def V6_vaddb : HInst<
29261 (outs HvxVR:$Vd32),
29262 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29263 "$Vd32.b = vadd($Vu32.b,$Vv32.b)",
29264 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
29265 let Inst{7-5} = 0b110;
29266 let Inst{13-13} = 0b0;
29267 let Inst{31-21} = 0b00011111101;
29268 let hasNewValue = 1;
29269 let opNewValue = 0;
29270 let DecoderNamespace = "EXT_mmvec";
29271 }
29272 def V6_vaddb_alt : HInst<
29273 (outs HvxVR:$Vd32),
29274 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29275 "$Vd32 = vaddb($Vu32,$Vv32)",
29276 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29277 let hasNewValue = 1;
29278 let opNewValue = 0;
29279 let isPseudo = 1;
29280 let isCodeGenOnly = 1;
29281 let DecoderNamespace = "EXT_mmvec";
29282 }
29283 def V6_vaddb_dv : HInst<
29284 (outs HvxWR:$Vdd32),
29285 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29286 "$Vdd32.b = vadd($Vuu32.b,$Vvv32.b)",
29287 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
29288 let Inst{7-5} = 0b100;
29289 let Inst{13-13} = 0b0;
29290 let Inst{31-21} = 0b00011100011;
29291 let hasNewValue = 1;
29292 let opNewValue = 0;
29293 let DecoderNamespace = "EXT_mmvec";
29294 }
29295 def V6_vaddb_dv_alt : HInst<
29296 (outs HvxWR:$Vdd32),
29297 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29298 "$Vdd32 = vaddb($Vuu32,$Vvv32)",
29299 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29300 let hasNewValue = 1;
29301 let opNewValue = 0;
29302 let isPseudo = 1;
29303 let isCodeGenOnly = 1;
29304 let DecoderNamespace = "EXT_mmvec";
29305 }
29306 def V6_vaddbnq : HInst<
29307 (outs HvxVR:$Vx32),
29308 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29309 "if (!$Qv4) $Vx32.b += $Vu32.b",
29310 tc_257f6f7c, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
29311 let Inst{7-5} = 0b011;
29312 let Inst{13-13} = 0b1;
29313 let Inst{21-16} = 0b000001;
29314 let Inst{31-24} = 0b00011110;
29315 let hasNewValue = 1;
29316 let opNewValue = 0;
29317 let isAccumulator = 1;
29318 let DecoderNamespace = "EXT_mmvec";
29319 let Constraints = "$Vx32 = $Vx32in";
29320 }
29321 def V6_vaddbnq_alt : HInst<
29322 (outs HvxVR:$Vx32),
29323 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29324 "if (!$Qv4.b) $Vx32.b += $Vu32.b",
29325 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29326 let hasNewValue = 1;
29327 let opNewValue = 0;
29328 let isAccumulator = 1;
29329 let isPseudo = 1;
29330 let isCodeGenOnly = 1;
29331 let DecoderNamespace = "EXT_mmvec";
29332 let Constraints = "$Vx32 = $Vx32in";
29333 }
29334 def V6_vaddbq : HInst<
29335 (outs HvxVR:$Vx32),
29336 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29337 "if ($Qv4) $Vx32.b += $Vu32.b",
29338 tc_257f6f7c, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
29339 let Inst{7-5} = 0b000;
29340 let Inst{13-13} = 0b1;
29341 let Inst{21-16} = 0b000001;
29342 let Inst{31-24} = 0b00011110;
29343 let hasNewValue = 1;
29344 let opNewValue = 0;
29345 let isAccumulator = 1;
29346 let DecoderNamespace = "EXT_mmvec";
29347 let Constraints = "$Vx32 = $Vx32in";
29348 }
29349 def V6_vaddbq_alt : HInst<
29350 (outs HvxVR:$Vx32),
29351 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29352 "if ($Qv4.b) $Vx32.b += $Vu32.b",
29353 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29354 let hasNewValue = 1;
29355 let opNewValue = 0;
29356 let isAccumulator = 1;
29357 let isPseudo = 1;
29358 let isCodeGenOnly = 1;
29359 let DecoderNamespace = "EXT_mmvec";
29360 let Constraints = "$Vx32 = $Vx32in";
29361 }
29362 def V6_vaddbsat : HInst<
29363 (outs HvxVR:$Vd32),
29364 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29365 "$Vd32.b = vadd($Vu32.b,$Vv32.b):sat",
29366 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
29367 let Inst{7-5} = 0b000;
29368 let Inst{13-13} = 0b0;
29369 let Inst{31-21} = 0b00011111000;
29370 let hasNewValue = 1;
29371 let opNewValue = 0;
29372 let DecoderNamespace = "EXT_mmvec";
29373 }
29374 def V6_vaddbsat_alt : HInst<
29375 (outs HvxVR:$Vd32),
29376 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29377 "$Vd32 = vaddb($Vu32,$Vv32):sat",
29378 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
29379 let hasNewValue = 1;
29380 let opNewValue = 0;
29381 let isPseudo = 1;
29382 let isCodeGenOnly = 1;
29383 let DecoderNamespace = "EXT_mmvec";
29384 }
29385 def V6_vaddbsat_dv : HInst<
29386 (outs HvxWR:$Vdd32),
29387 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29388 "$Vdd32.b = vadd($Vuu32.b,$Vvv32.b):sat",
29389 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV62]> {
29390 let Inst{7-5} = 0b000;
29391 let Inst{13-13} = 0b0;
29392 let Inst{31-21} = 0b00011110101;
29393 let hasNewValue = 1;
29394 let opNewValue = 0;
29395 let DecoderNamespace = "EXT_mmvec";
29396 }
29397 def V6_vaddbsat_dv_alt : HInst<
29398 (outs HvxWR:$Vdd32),
29399 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29400 "$Vdd32 = vaddb($Vuu32,$Vvv32):sat",
29401 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
29402 let hasNewValue = 1;
29403 let opNewValue = 0;
29404 let isPseudo = 1;
29405 let isCodeGenOnly = 1;
29406 let DecoderNamespace = "EXT_mmvec";
29407 }
29408 def V6_vaddcarry : HInst<
29409 (outs HvxVR:$Vd32, HvxQR:$Qx4),
29410 (ins HvxVR:$Vu32, HvxVR:$Vv32, HvxQR:$Qx4in),
29411 "$Vd32.w = vadd($Vu32.w,$Vv32.w,$Qx4):carry",
29412 tc_7e6a3e89, TypeCVI_VA>, Enc_b43b67, Requires<[UseHVXV62]> {
29413 let Inst{7-7} = 0b0;
29414 let Inst{13-13} = 0b1;
29415 let Inst{31-21} = 0b00011100101;
29416 let hasNewValue = 1;
29417 let opNewValue = 0;
29418 let DecoderNamespace = "EXT_mmvec";
29419 let Constraints = "$Qx4 = $Qx4in";
29420 }
29421 def V6_vaddcarryo : HInst<
29422 (outs HvxVR:$Vd32, HvxQR:$Qe4),
29423 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29424 "$Vd32.w,$Qe4 = vadd($Vu32.w,$Vv32.w):carry",
29425 tc_e35c1e93, TypeCOPROC_VX>, Enc_c1d806, Requires<[UseHVXV66]> {
29426 let Inst{7-7} = 0b0;
29427 let Inst{13-13} = 0b1;
29428 let Inst{31-21} = 0b00011101101;
29429 let hasNewValue = 1;
29430 let opNewValue = 0;
29431 let hasNewValue2 = 1;
29432 let opNewValue2 = 1;
29433 let DecoderNamespace = "EXT_mmvec";
29434 }
29435 def V6_vaddcarrysat : HInst<
29436 (outs HvxVR:$Vd32),
29437 (ins HvxVR:$Vu32, HvxVR:$Vv32, HvxQR:$Qs4),
29438 "$Vd32.w = vadd($Vu32.w,$Vv32.w,$Qs4):carry:sat",
29439 tc_257f6f7c, TypeCVI_VA>, Enc_e0820b, Requires<[UseHVXV66]> {
29440 let Inst{7-7} = 0b0;
29441 let Inst{13-13} = 0b1;
29442 let Inst{31-21} = 0b00011101100;
29443 let hasNewValue = 1;
29444 let opNewValue = 0;
29445 let DecoderNamespace = "EXT_mmvec";
29446 }
29447 def V6_vaddclbh : HInst<
29448 (outs HvxVR:$Vd32),
29449 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29450 "$Vd32.h = vadd(vclb($Vu32.h),$Vv32.h)",
29451 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV62]> {
29452 let Inst{7-5} = 0b000;
29453 let Inst{13-13} = 0b1;
29454 let Inst{31-21} = 0b00011111000;
29455 let hasNewValue = 1;
29456 let opNewValue = 0;
29457 let DecoderNamespace = "EXT_mmvec";
29458 }
29459 def V6_vaddclbw : HInst<
29460 (outs HvxVR:$Vd32),
29461 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29462 "$Vd32.w = vadd(vclb($Vu32.w),$Vv32.w)",
29463 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV62]> {
29464 let Inst{7-5} = 0b001;
29465 let Inst{13-13} = 0b1;
29466 let Inst{31-21} = 0b00011111000;
29467 let hasNewValue = 1;
29468 let opNewValue = 0;
29469 let DecoderNamespace = "EXT_mmvec";
29470 }
29471 def V6_vaddh : HInst<
29472 (outs HvxVR:$Vd32),
29473 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29474 "$Vd32.h = vadd($Vu32.h,$Vv32.h)",
29475 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
29476 let Inst{7-5} = 0b111;
29477 let Inst{13-13} = 0b0;
29478 let Inst{31-21} = 0b00011111101;
29479 let hasNewValue = 1;
29480 let opNewValue = 0;
29481 let DecoderNamespace = "EXT_mmvec";
29482 }
29483 def V6_vaddh_alt : HInst<
29484 (outs HvxVR:$Vd32),
29485 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29486 "$Vd32 = vaddh($Vu32,$Vv32)",
29487 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29488 let hasNewValue = 1;
29489 let opNewValue = 0;
29490 let isPseudo = 1;
29491 let isCodeGenOnly = 1;
29492 let DecoderNamespace = "EXT_mmvec";
29493 }
29494 def V6_vaddh_dv : HInst<
29495 (outs HvxWR:$Vdd32),
29496 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29497 "$Vdd32.h = vadd($Vuu32.h,$Vvv32.h)",
29498 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
29499 let Inst{7-5} = 0b101;
29500 let Inst{13-13} = 0b0;
29501 let Inst{31-21} = 0b00011100011;
29502 let hasNewValue = 1;
29503 let opNewValue = 0;
29504 let DecoderNamespace = "EXT_mmvec";
29505 }
29506 def V6_vaddh_dv_alt : HInst<
29507 (outs HvxWR:$Vdd32),
29508 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29509 "$Vdd32 = vaddh($Vuu32,$Vvv32)",
29510 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29511 let hasNewValue = 1;
29512 let opNewValue = 0;
29513 let isPseudo = 1;
29514 let isCodeGenOnly = 1;
29515 let DecoderNamespace = "EXT_mmvec";
29516 }
29517 def V6_vaddhnq : HInst<
29518 (outs HvxVR:$Vx32),
29519 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29520 "if (!$Qv4) $Vx32.h += $Vu32.h",
29521 tc_257f6f7c, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
29522 let Inst{7-5} = 0b100;
29523 let Inst{13-13} = 0b1;
29524 let Inst{21-16} = 0b000001;
29525 let Inst{31-24} = 0b00011110;
29526 let hasNewValue = 1;
29527 let opNewValue = 0;
29528 let isAccumulator = 1;
29529 let DecoderNamespace = "EXT_mmvec";
29530 let Constraints = "$Vx32 = $Vx32in";
29531 }
29532 def V6_vaddhnq_alt : HInst<
29533 (outs HvxVR:$Vx32),
29534 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29535 "if (!$Qv4.h) $Vx32.h += $Vu32.h",
29536 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29537 let hasNewValue = 1;
29538 let opNewValue = 0;
29539 let isAccumulator = 1;
29540 let isPseudo = 1;
29541 let isCodeGenOnly = 1;
29542 let DecoderNamespace = "EXT_mmvec";
29543 let Constraints = "$Vx32 = $Vx32in";
29544 }
29545 def V6_vaddhq : HInst<
29546 (outs HvxVR:$Vx32),
29547 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29548 "if ($Qv4) $Vx32.h += $Vu32.h",
29549 tc_257f6f7c, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
29550 let Inst{7-5} = 0b001;
29551 let Inst{13-13} = 0b1;
29552 let Inst{21-16} = 0b000001;
29553 let Inst{31-24} = 0b00011110;
29554 let hasNewValue = 1;
29555 let opNewValue = 0;
29556 let isAccumulator = 1;
29557 let DecoderNamespace = "EXT_mmvec";
29558 let Constraints = "$Vx32 = $Vx32in";
29559 }
29560 def V6_vaddhq_alt : HInst<
29561 (outs HvxVR:$Vx32),
29562 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29563 "if ($Qv4.h) $Vx32.h += $Vu32.h",
29564 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29565 let hasNewValue = 1;
29566 let opNewValue = 0;
29567 let isAccumulator = 1;
29568 let isPseudo = 1;
29569 let isCodeGenOnly = 1;
29570 let DecoderNamespace = "EXT_mmvec";
29571 let Constraints = "$Vx32 = $Vx32in";
29572 }
29573 def V6_vaddhsat : HInst<
29574 (outs HvxVR:$Vd32),
29575 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29576 "$Vd32.h = vadd($Vu32.h,$Vv32.h):sat",
29577 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
29578 let Inst{7-5} = 0b011;
29579 let Inst{13-13} = 0b0;
29580 let Inst{31-21} = 0b00011100010;
29581 let hasNewValue = 1;
29582 let opNewValue = 0;
29583 let DecoderNamespace = "EXT_mmvec";
29584 }
29585 def V6_vaddhsat_alt : HInst<
29586 (outs HvxVR:$Vd32),
29587 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29588 "$Vd32 = vaddh($Vu32,$Vv32):sat",
29589 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29590 let hasNewValue = 1;
29591 let opNewValue = 0;
29592 let isPseudo = 1;
29593 let isCodeGenOnly = 1;
29594 let DecoderNamespace = "EXT_mmvec";
29595 }
29596 def V6_vaddhsat_dv : HInst<
29597 (outs HvxWR:$Vdd32),
29598 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29599 "$Vdd32.h = vadd($Vuu32.h,$Vvv32.h):sat",
29600 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
29601 let Inst{7-5} = 0b001;
29602 let Inst{13-13} = 0b0;
29603 let Inst{31-21} = 0b00011100100;
29604 let hasNewValue = 1;
29605 let opNewValue = 0;
29606 let DecoderNamespace = "EXT_mmvec";
29607 }
29608 def V6_vaddhsat_dv_alt : HInst<
29609 (outs HvxWR:$Vdd32),
29610 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29611 "$Vdd32 = vaddh($Vuu32,$Vvv32):sat",
29612 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29613 let hasNewValue = 1;
29614 let opNewValue = 0;
29615 let isPseudo = 1;
29616 let isCodeGenOnly = 1;
29617 let DecoderNamespace = "EXT_mmvec";
29618 }
29619 def V6_vaddhw : HInst<
29620 (outs HvxWR:$Vdd32),
29621 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29622 "$Vdd32.w = vadd($Vu32.h,$Vv32.h)",
29623 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
29624 let Inst{7-5} = 0b100;
29625 let Inst{13-13} = 0b0;
29626 let Inst{31-21} = 0b00011100101;
29627 let hasNewValue = 1;
29628 let opNewValue = 0;
29629 let DecoderNamespace = "EXT_mmvec";
29630 }
29631 def V6_vaddhw_acc : HInst<
29632 (outs HvxWR:$Vxx32),
29633 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
29634 "$Vxx32.w += vadd($Vu32.h,$Vv32.h)",
29635 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV62]> {
29636 let Inst{7-5} = 0b010;
29637 let Inst{13-13} = 0b1;
29638 let Inst{31-21} = 0b00011100001;
29639 let hasNewValue = 1;
29640 let opNewValue = 0;
29641 let isAccumulator = 1;
29642 let DecoderNamespace = "EXT_mmvec";
29643 let Constraints = "$Vxx32 = $Vxx32in";
29644 }
29645 def V6_vaddhw_acc_alt : HInst<
29646 (outs HvxWR:$Vxx32),
29647 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
29648 "$Vxx32 += vaddh($Vu32,$Vv32)",
29649 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
29650 let hasNewValue = 1;
29651 let opNewValue = 0;
29652 let isAccumulator = 1;
29653 let isPseudo = 1;
29654 let isCodeGenOnly = 1;
29655 let DecoderNamespace = "EXT_mmvec";
29656 let Constraints = "$Vxx32 = $Vxx32in";
29657 }
29658 def V6_vaddhw_alt : HInst<
29659 (outs HvxWR:$Vdd32),
29660 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29661 "$Vdd32 = vaddh($Vu32,$Vv32)",
29662 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29663 let hasNewValue = 1;
29664 let opNewValue = 0;
29665 let isPseudo = 1;
29666 let isCodeGenOnly = 1;
29667 let DecoderNamespace = "EXT_mmvec";
29668 }
29669 def V6_vaddubh : HInst<
29670 (outs HvxWR:$Vdd32),
29671 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29672 "$Vdd32.h = vadd($Vu32.ub,$Vv32.ub)",
29673 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
29674 let Inst{7-5} = 0b010;
29675 let Inst{13-13} = 0b0;
29676 let Inst{31-21} = 0b00011100101;
29677 let hasNewValue = 1;
29678 let opNewValue = 0;
29679 let DecoderNamespace = "EXT_mmvec";
29680 }
29681 def V6_vaddubh_acc : HInst<
29682 (outs HvxWR:$Vxx32),
29683 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
29684 "$Vxx32.h += vadd($Vu32.ub,$Vv32.ub)",
29685 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV62]> {
29686 let Inst{7-5} = 0b101;
29687 let Inst{13-13} = 0b1;
29688 let Inst{31-21} = 0b00011100010;
29689 let hasNewValue = 1;
29690 let opNewValue = 0;
29691 let isAccumulator = 1;
29692 let DecoderNamespace = "EXT_mmvec";
29693 let Constraints = "$Vxx32 = $Vxx32in";
29694 }
29695 def V6_vaddubh_acc_alt : HInst<
29696 (outs HvxWR:$Vxx32),
29697 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
29698 "$Vxx32 += vaddub($Vu32,$Vv32)",
29699 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
29700 let hasNewValue = 1;
29701 let opNewValue = 0;
29702 let isAccumulator = 1;
29703 let isPseudo = 1;
29704 let isCodeGenOnly = 1;
29705 let DecoderNamespace = "EXT_mmvec";
29706 let Constraints = "$Vxx32 = $Vxx32in";
29707 }
29708 def V6_vaddubh_alt : HInst<
29709 (outs HvxWR:$Vdd32),
29710 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29711 "$Vdd32 = vaddub($Vu32,$Vv32)",
29712 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29713 let hasNewValue = 1;
29714 let opNewValue = 0;
29715 let isPseudo = 1;
29716 let isCodeGenOnly = 1;
29717 let DecoderNamespace = "EXT_mmvec";
29718 }
29719 def V6_vaddubsat : HInst<
29720 (outs HvxVR:$Vd32),
29721 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29722 "$Vd32.ub = vadd($Vu32.ub,$Vv32.ub):sat",
29723 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
29724 let Inst{7-5} = 0b001;
29725 let Inst{13-13} = 0b0;
29726 let Inst{31-21} = 0b00011100010;
29727 let hasNewValue = 1;
29728 let opNewValue = 0;
29729 let DecoderNamespace = "EXT_mmvec";
29730 }
29731 def V6_vaddubsat_alt : HInst<
29732 (outs HvxVR:$Vd32),
29733 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29734 "$Vd32 = vaddub($Vu32,$Vv32):sat",
29735 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29736 let hasNewValue = 1;
29737 let opNewValue = 0;
29738 let isPseudo = 1;
29739 let isCodeGenOnly = 1;
29740 let DecoderNamespace = "EXT_mmvec";
29741 }
29742 def V6_vaddubsat_dv : HInst<
29743 (outs HvxWR:$Vdd32),
29744 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29745 "$Vdd32.ub = vadd($Vuu32.ub,$Vvv32.ub):sat",
29746 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
29747 let Inst{7-5} = 0b111;
29748 let Inst{13-13} = 0b0;
29749 let Inst{31-21} = 0b00011100011;
29750 let hasNewValue = 1;
29751 let opNewValue = 0;
29752 let DecoderNamespace = "EXT_mmvec";
29753 }
29754 def V6_vaddubsat_dv_alt : HInst<
29755 (outs HvxWR:$Vdd32),
29756 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29757 "$Vdd32 = vaddub($Vuu32,$Vvv32):sat",
29758 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29759 let hasNewValue = 1;
29760 let opNewValue = 0;
29761 let isPseudo = 1;
29762 let isCodeGenOnly = 1;
29763 let DecoderNamespace = "EXT_mmvec";
29764 }
29765 def V6_vaddububb_sat : HInst<
29766 (outs HvxVR:$Vd32),
29767 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29768 "$Vd32.ub = vadd($Vu32.ub,$Vv32.b):sat",
29769 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
29770 let Inst{7-5} = 0b100;
29771 let Inst{13-13} = 0b0;
29772 let Inst{31-21} = 0b00011110101;
29773 let hasNewValue = 1;
29774 let opNewValue = 0;
29775 let DecoderNamespace = "EXT_mmvec";
29776 }
29777 def V6_vadduhsat : HInst<
29778 (outs HvxVR:$Vd32),
29779 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29780 "$Vd32.uh = vadd($Vu32.uh,$Vv32.uh):sat",
29781 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
29782 let Inst{7-5} = 0b010;
29783 let Inst{13-13} = 0b0;
29784 let Inst{31-21} = 0b00011100010;
29785 let hasNewValue = 1;
29786 let opNewValue = 0;
29787 let DecoderNamespace = "EXT_mmvec";
29788 }
29789 def V6_vadduhsat_alt : HInst<
29790 (outs HvxVR:$Vd32),
29791 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29792 "$Vd32 = vadduh($Vu32,$Vv32):sat",
29793 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29794 let hasNewValue = 1;
29795 let opNewValue = 0;
29796 let isPseudo = 1;
29797 let isCodeGenOnly = 1;
29798 let DecoderNamespace = "EXT_mmvec";
29799 }
29800 def V6_vadduhsat_dv : HInst<
29801 (outs HvxWR:$Vdd32),
29802 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29803 "$Vdd32.uh = vadd($Vuu32.uh,$Vvv32.uh):sat",
29804 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
29805 let Inst{7-5} = 0b000;
29806 let Inst{13-13} = 0b0;
29807 let Inst{31-21} = 0b00011100100;
29808 let hasNewValue = 1;
29809 let opNewValue = 0;
29810 let DecoderNamespace = "EXT_mmvec";
29811 }
29812 def V6_vadduhsat_dv_alt : HInst<
29813 (outs HvxWR:$Vdd32),
29814 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29815 "$Vdd32 = vadduh($Vuu32,$Vvv32):sat",
29816 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29817 let hasNewValue = 1;
29818 let opNewValue = 0;
29819 let isPseudo = 1;
29820 let isCodeGenOnly = 1;
29821 let DecoderNamespace = "EXT_mmvec";
29822 }
29823 def V6_vadduhw : HInst<
29824 (outs HvxWR:$Vdd32),
29825 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29826 "$Vdd32.w = vadd($Vu32.uh,$Vv32.uh)",
29827 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
29828 let Inst{7-5} = 0b011;
29829 let Inst{13-13} = 0b0;
29830 let Inst{31-21} = 0b00011100101;
29831 let hasNewValue = 1;
29832 let opNewValue = 0;
29833 let DecoderNamespace = "EXT_mmvec";
29834 }
29835 def V6_vadduhw_acc : HInst<
29836 (outs HvxWR:$Vxx32),
29837 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
29838 "$Vxx32.w += vadd($Vu32.uh,$Vv32.uh)",
29839 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV62]> {
29840 let Inst{7-5} = 0b100;
29841 let Inst{13-13} = 0b1;
29842 let Inst{31-21} = 0b00011100010;
29843 let hasNewValue = 1;
29844 let opNewValue = 0;
29845 let isAccumulator = 1;
29846 let DecoderNamespace = "EXT_mmvec";
29847 let Constraints = "$Vxx32 = $Vxx32in";
29848 }
29849 def V6_vadduhw_acc_alt : HInst<
29850 (outs HvxWR:$Vxx32),
29851 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
29852 "$Vxx32 += vadduh($Vu32,$Vv32)",
29853 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
29854 let hasNewValue = 1;
29855 let opNewValue = 0;
29856 let isAccumulator = 1;
29857 let isPseudo = 1;
29858 let isCodeGenOnly = 1;
29859 let DecoderNamespace = "EXT_mmvec";
29860 let Constraints = "$Vxx32 = $Vxx32in";
29861 }
29862 def V6_vadduhw_alt : HInst<
29863 (outs HvxWR:$Vdd32),
29864 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29865 "$Vdd32 = vadduh($Vu32,$Vv32)",
29866 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29867 let hasNewValue = 1;
29868 let opNewValue = 0;
29869 let isPseudo = 1;
29870 let isCodeGenOnly = 1;
29871 let DecoderNamespace = "EXT_mmvec";
29872 }
29873 def V6_vadduwsat : HInst<
29874 (outs HvxVR:$Vd32),
29875 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29876 "$Vd32.uw = vadd($Vu32.uw,$Vv32.uw):sat",
29877 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
29878 let Inst{7-5} = 0b001;
29879 let Inst{13-13} = 0b0;
29880 let Inst{31-21} = 0b00011111011;
29881 let hasNewValue = 1;
29882 let opNewValue = 0;
29883 let DecoderNamespace = "EXT_mmvec";
29884 }
29885 def V6_vadduwsat_alt : HInst<
29886 (outs HvxVR:$Vd32),
29887 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29888 "$Vd32 = vadduw($Vu32,$Vv32):sat",
29889 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
29890 let hasNewValue = 1;
29891 let opNewValue = 0;
29892 let isPseudo = 1;
29893 let isCodeGenOnly = 1;
29894 let DecoderNamespace = "EXT_mmvec";
29895 }
29896 def V6_vadduwsat_dv : HInst<
29897 (outs HvxWR:$Vdd32),
29898 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29899 "$Vdd32.uw = vadd($Vuu32.uw,$Vvv32.uw):sat",
29900 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV62]> {
29901 let Inst{7-5} = 0b010;
29902 let Inst{13-13} = 0b0;
29903 let Inst{31-21} = 0b00011110101;
29904 let hasNewValue = 1;
29905 let opNewValue = 0;
29906 let DecoderNamespace = "EXT_mmvec";
29907 }
29908 def V6_vadduwsat_dv_alt : HInst<
29909 (outs HvxWR:$Vdd32),
29910 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29911 "$Vdd32 = vadduw($Vuu32,$Vvv32):sat",
29912 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
29913 let hasNewValue = 1;
29914 let opNewValue = 0;
29915 let isPseudo = 1;
29916 let isCodeGenOnly = 1;
29917 let DecoderNamespace = "EXT_mmvec";
29918 }
29919 def V6_vaddw : HInst<
29920 (outs HvxVR:$Vd32),
29921 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29922 "$Vd32.w = vadd($Vu32.w,$Vv32.w)",
29923 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
29924 let Inst{7-5} = 0b000;
29925 let Inst{13-13} = 0b0;
29926 let Inst{31-21} = 0b00011100010;
29927 let hasNewValue = 1;
29928 let opNewValue = 0;
29929 let DecoderNamespace = "EXT_mmvec";
29930 }
29931 def V6_vaddw_alt : HInst<
29932 (outs HvxVR:$Vd32),
29933 (ins HvxVR:$Vu32, HvxVR:$Vv32),
29934 "$Vd32 = vaddw($Vu32,$Vv32)",
29935 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29936 let hasNewValue = 1;
29937 let opNewValue = 0;
29938 let isPseudo = 1;
29939 let isCodeGenOnly = 1;
29940 let DecoderNamespace = "EXT_mmvec";
29941 }
29942 def V6_vaddw_dv : HInst<
29943 (outs HvxWR:$Vdd32),
29944 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29945 "$Vdd32.w = vadd($Vuu32.w,$Vvv32.w)",
29946 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
29947 let Inst{7-5} = 0b110;
29948 let Inst{13-13} = 0b0;
29949 let Inst{31-21} = 0b00011100011;
29950 let hasNewValue = 1;
29951 let opNewValue = 0;
29952 let DecoderNamespace = "EXT_mmvec";
29953 }
29954 def V6_vaddw_dv_alt : HInst<
29955 (outs HvxWR:$Vdd32),
29956 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
29957 "$Vdd32 = vaddw($Vuu32,$Vvv32)",
29958 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29959 let hasNewValue = 1;
29960 let opNewValue = 0;
29961 let isPseudo = 1;
29962 let isCodeGenOnly = 1;
29963 let DecoderNamespace = "EXT_mmvec";
29964 }
29965 def V6_vaddwnq : HInst<
29966 (outs HvxVR:$Vx32),
29967 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29968 "if (!$Qv4) $Vx32.w += $Vu32.w",
29969 tc_257f6f7c, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
29970 let Inst{7-5} = 0b101;
29971 let Inst{13-13} = 0b1;
29972 let Inst{21-16} = 0b000001;
29973 let Inst{31-24} = 0b00011110;
29974 let hasNewValue = 1;
29975 let opNewValue = 0;
29976 let isAccumulator = 1;
29977 let DecoderNamespace = "EXT_mmvec";
29978 let Constraints = "$Vx32 = $Vx32in";
29979 }
29980 def V6_vaddwnq_alt : HInst<
29981 (outs HvxVR:$Vx32),
29982 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29983 "if (!$Qv4.w) $Vx32.w += $Vu32.w",
29984 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
29985 let hasNewValue = 1;
29986 let opNewValue = 0;
29987 let isAccumulator = 1;
29988 let isPseudo = 1;
29989 let isCodeGenOnly = 1;
29990 let DecoderNamespace = "EXT_mmvec";
29991 let Constraints = "$Vx32 = $Vx32in";
29992 }
29993 def V6_vaddwq : HInst<
29994 (outs HvxVR:$Vx32),
29995 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
29996 "if ($Qv4) $Vx32.w += $Vu32.w",
29997 tc_257f6f7c, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
29998 let Inst{7-5} = 0b010;
29999 let Inst{13-13} = 0b1;
30000 let Inst{21-16} = 0b000001;
30001 let Inst{31-24} = 0b00011110;
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_vaddwq_alt : HInst<
30009 (outs HvxVR:$Vx32),
30010 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
30011 "if ($Qv4.w) $Vx32.w += $Vu32.w",
30012 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
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_vaddwsat : HInst<
30022 (outs HvxVR:$Vd32),
30023 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30024 "$Vd32.w = vadd($Vu32.w,$Vv32.w):sat",
30025 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
30026 let Inst{7-5} = 0b100;
30027 let Inst{13-13} = 0b0;
30028 let Inst{31-21} = 0b00011100010;
30029 let hasNewValue = 1;
30030 let opNewValue = 0;
30031 let DecoderNamespace = "EXT_mmvec";
30032 }
30033 def V6_vaddwsat_alt : HInst<
30034 (outs HvxVR:$Vd32),
30035 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30036 "$Vd32 = vaddw($Vu32,$Vv32):sat",
30037 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30038 let hasNewValue = 1;
30039 let opNewValue = 0;
30040 let isPseudo = 1;
30041 let isCodeGenOnly = 1;
30042 let DecoderNamespace = "EXT_mmvec";
30043 }
30044 def V6_vaddwsat_dv : HInst<
30045 (outs HvxWR:$Vdd32),
30046 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
30047 "$Vdd32.w = vadd($Vuu32.w,$Vvv32.w):sat",
30048 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
30049 let Inst{7-5} = 0b010;
30050 let Inst{13-13} = 0b0;
30051 let Inst{31-21} = 0b00011100100;
30052 let hasNewValue = 1;
30053 let opNewValue = 0;
30054 let DecoderNamespace = "EXT_mmvec";
30055 }
30056 def V6_vaddwsat_dv_alt : HInst<
30057 (outs HvxWR:$Vdd32),
30058 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
30059 "$Vdd32 = vaddw($Vuu32,$Vvv32):sat",
30060 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30061 let hasNewValue = 1;
30062 let opNewValue = 0;
30063 let isPseudo = 1;
30064 let isCodeGenOnly = 1;
30065 let DecoderNamespace = "EXT_mmvec";
30066 }
30067 def V6_valignb : HInst<
30068 (outs HvxVR:$Vd32),
30069 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30070 "$Vd32 = valign($Vu32,$Vv32,$Rt8)",
30071 tc_56e64202, TypeCVI_VP>, Enc_a30110, Requires<[UseHVXV60]> {
30072 let Inst{7-5} = 0b000;
30073 let Inst{13-13} = 0b0;
30074 let Inst{31-24} = 0b00011011;
30075 let hasNewValue = 1;
30076 let opNewValue = 0;
30077 let DecoderNamespace = "EXT_mmvec";
30078 }
30079 def V6_valignbi : HInst<
30080 (outs HvxVR:$Vd32),
30081 (ins HvxVR:$Vu32, HvxVR:$Vv32, u3_0Imm:$Ii),
30082 "$Vd32 = valign($Vu32,$Vv32,#$Ii)",
30083 tc_56e64202, TypeCVI_VP>, Enc_0b2e5b, Requires<[UseHVXV60]> {
30084 let Inst{13-13} = 0b1;
30085 let Inst{31-21} = 0b00011110001;
30086 let hasNewValue = 1;
30087 let opNewValue = 0;
30088 let DecoderNamespace = "EXT_mmvec";
30089 }
30090 def V6_vand : HInst<
30091 (outs HvxVR:$Vd32),
30092 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30093 "$Vd32 = vand($Vu32,$Vv32)",
30094 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
30095 let Inst{7-5} = 0b101;
30096 let Inst{13-13} = 0b0;
30097 let Inst{31-21} = 0b00011100001;
30098 let hasNewValue = 1;
30099 let opNewValue = 0;
30100 let DecoderNamespace = "EXT_mmvec";
30101 }
30102 def V6_vandnqrt : HInst<
30103 (outs HvxVR:$Vd32),
30104 (ins HvxQR:$Qu4, IntRegs:$Rt32),
30105 "$Vd32 = vand(!$Qu4,$Rt32)",
30106 tc_ac4046bc, TypeCVI_VX>, Enc_7b7ba8, Requires<[UseHVXV62]> {
30107 let Inst{7-5} = 0b101;
30108 let Inst{13-10} = 0b0001;
30109 let Inst{31-21} = 0b00011001101;
30110 let hasNewValue = 1;
30111 let opNewValue = 0;
30112 let DecoderNamespace = "EXT_mmvec";
30113 }
30114 def V6_vandnqrt_acc : HInst<
30115 (outs HvxVR:$Vx32),
30116 (ins HvxVR:$Vx32in, HvxQR:$Qu4, IntRegs:$Rt32),
30117 "$Vx32 |= vand(!$Qu4,$Rt32)",
30118 tc_2e8f5f6e, TypeCVI_VX>, Enc_895bd9, Requires<[UseHVXV62]> {
30119 let Inst{7-5} = 0b011;
30120 let Inst{13-10} = 0b1001;
30121 let Inst{31-21} = 0b00011001011;
30122 let hasNewValue = 1;
30123 let opNewValue = 0;
30124 let isAccumulator = 1;
30125 let DecoderNamespace = "EXT_mmvec";
30126 let Constraints = "$Vx32 = $Vx32in";
30127 }
30128 def V6_vandnqrt_acc_alt : HInst<
30129 (outs HvxVR:$Vx32),
30130 (ins HvxVR:$Vx32in, HvxQR:$Qu4, IntRegs:$Rt32),
30131 "$Vx32.ub |= vand(!$Qu4.ub,$Rt32.ub)",
30132 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
30133 let hasNewValue = 1;
30134 let opNewValue = 0;
30135 let isAccumulator = 1;
30136 let isPseudo = 1;
30137 let isCodeGenOnly = 1;
30138 let DecoderNamespace = "EXT_mmvec";
30139 let Constraints = "$Vx32 = $Vx32in";
30140 }
30141 def V6_vandnqrt_alt : HInst<
30142 (outs HvxVR:$Vd32),
30143 (ins HvxQR:$Qu4, IntRegs:$Rt32),
30144 "$Vd32.ub = vand(!$Qu4.ub,$Rt32.ub)",
30145 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
30146 let hasNewValue = 1;
30147 let opNewValue = 0;
30148 let isPseudo = 1;
30149 let isCodeGenOnly = 1;
30150 let DecoderNamespace = "EXT_mmvec";
30151 }
30152 def V6_vandqrt : HInst<
30153 (outs HvxVR:$Vd32),
30154 (ins HvxQR:$Qu4, IntRegs:$Rt32),
30155 "$Vd32 = vand($Qu4,$Rt32)",
30156 tc_ac4046bc, TypeCVI_VX_LATE>, Enc_7b7ba8, Requires<[UseHVXV60]> {
30157 let Inst{7-5} = 0b101;
30158 let Inst{13-10} = 0b0000;
30159 let Inst{31-21} = 0b00011001101;
30160 let hasNewValue = 1;
30161 let opNewValue = 0;
30162 let DecoderNamespace = "EXT_mmvec";
30163 }
30164 def V6_vandqrt_acc : HInst<
30165 (outs HvxVR:$Vx32),
30166 (ins HvxVR:$Vx32in, HvxQR:$Qu4, IntRegs:$Rt32),
30167 "$Vx32 |= vand($Qu4,$Rt32)",
30168 tc_2e8f5f6e, TypeCVI_VX_LATE>, Enc_895bd9, Requires<[UseHVXV60]> {
30169 let Inst{7-5} = 0b011;
30170 let Inst{13-10} = 0b1000;
30171 let Inst{31-21} = 0b00011001011;
30172 let hasNewValue = 1;
30173 let opNewValue = 0;
30174 let isAccumulator = 1;
30175 let DecoderNamespace = "EXT_mmvec";
30176 let Constraints = "$Vx32 = $Vx32in";
30177 }
30178 def V6_vandqrt_acc_alt : HInst<
30179 (outs HvxVR:$Vx32),
30180 (ins HvxVR:$Vx32in, HvxQR:$Qu4, IntRegs:$Rt32),
30181 "$Vx32.ub |= vand($Qu4.ub,$Rt32.ub)",
30182 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30183 let hasNewValue = 1;
30184 let opNewValue = 0;
30185 let isAccumulator = 1;
30186 let isPseudo = 1;
30187 let isCodeGenOnly = 1;
30188 let DecoderNamespace = "EXT_mmvec";
30189 let Constraints = "$Vx32 = $Vx32in";
30190 }
30191 def V6_vandqrt_alt : HInst<
30192 (outs HvxVR:$Vd32),
30193 (ins HvxQR:$Qu4, IntRegs:$Rt32),
30194 "$Vd32.ub = vand($Qu4.ub,$Rt32.ub)",
30195 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30196 let hasNewValue = 1;
30197 let opNewValue = 0;
30198 let isPseudo = 1;
30199 let isCodeGenOnly = 1;
30200 let DecoderNamespace = "EXT_mmvec";
30201 }
30202 def V6_vandvnqv : HInst<
30203 (outs HvxVR:$Vd32),
30204 (ins HvxQR:$Qv4, HvxVR:$Vu32),
30205 "$Vd32 = vand(!$Qv4,$Vu32)",
30206 tc_56c4f9fe, TypeCVI_VA>, Enc_c4dc92, Requires<[UseHVXV62]> {
30207 let Inst{7-5} = 0b001;
30208 let Inst{13-13} = 0b1;
30209 let Inst{21-16} = 0b000011;
30210 let Inst{31-24} = 0b00011110;
30211 let hasNewValue = 1;
30212 let opNewValue = 0;
30213 let DecoderNamespace = "EXT_mmvec";
30214 }
30215 def V6_vandvqv : HInst<
30216 (outs HvxVR:$Vd32),
30217 (ins HvxQR:$Qv4, HvxVR:$Vu32),
30218 "$Vd32 = vand($Qv4,$Vu32)",
30219 tc_56c4f9fe, TypeCVI_VA>, Enc_c4dc92, Requires<[UseHVXV62]> {
30220 let Inst{7-5} = 0b000;
30221 let Inst{13-13} = 0b1;
30222 let Inst{21-16} = 0b000011;
30223 let Inst{31-24} = 0b00011110;
30224 let hasNewValue = 1;
30225 let opNewValue = 0;
30226 let DecoderNamespace = "EXT_mmvec";
30227 }
30228 def V6_vandvrt : HInst<
30229 (outs HvxQR:$Qd4),
30230 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30231 "$Qd4 = vand($Vu32,$Rt32)",
30232 tc_ac4046bc, TypeCVI_VX_LATE>, Enc_0f8bab, Requires<[UseHVXV60]> {
30233 let Inst{7-2} = 0b010010;
30234 let Inst{13-13} = 0b0;
30235 let Inst{31-21} = 0b00011001101;
30236 let hasNewValue = 1;
30237 let opNewValue = 0;
30238 let DecoderNamespace = "EXT_mmvec";
30239 }
30240 def V6_vandvrt_acc : HInst<
30241 (outs HvxQR:$Qx4),
30242 (ins HvxQR:$Qx4in, HvxVR:$Vu32, IntRegs:$Rt32),
30243 "$Qx4 |= vand($Vu32,$Rt32)",
30244 tc_2e8f5f6e, TypeCVI_VX_LATE>, Enc_adf111, Requires<[UseHVXV60]> {
30245 let Inst{7-2} = 0b100000;
30246 let Inst{13-13} = 0b1;
30247 let Inst{31-21} = 0b00011001011;
30248 let isAccumulator = 1;
30249 let DecoderNamespace = "EXT_mmvec";
30250 let Constraints = "$Qx4 = $Qx4in";
30251 }
30252 def V6_vandvrt_acc_alt : HInst<
30253 (outs HvxQR:$Qx4),
30254 (ins HvxQR:$Qx4in, HvxVR:$Vu32, IntRegs:$Rt32),
30255 "$Qx4.ub |= vand($Vu32.ub,$Rt32.ub)",
30256 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30257 let isAccumulator = 1;
30258 let isPseudo = 1;
30259 let isCodeGenOnly = 1;
30260 let DecoderNamespace = "EXT_mmvec";
30261 let Constraints = "$Qx4 = $Qx4in";
30262 }
30263 def V6_vandvrt_alt : HInst<
30264 (outs HvxQR:$Qd4),
30265 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30266 "$Qd4.ub = vand($Vu32.ub,$Rt32.ub)",
30267 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30268 let hasNewValue = 1;
30269 let opNewValue = 0;
30270 let isPseudo = 1;
30271 let isCodeGenOnly = 1;
30272 let DecoderNamespace = "EXT_mmvec";
30273 }
30274 def V6_vaslh : HInst<
30275 (outs HvxVR:$Vd32),
30276 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30277 "$Vd32.h = vasl($Vu32.h,$Rt32)",
30278 tc_7417e785, TypeCVI_VS>, Enc_b087ac, Requires<[UseHVXV60]> {
30279 let Inst{7-5} = 0b000;
30280 let Inst{13-13} = 0b0;
30281 let Inst{31-21} = 0b00011001100;
30282 let hasNewValue = 1;
30283 let opNewValue = 0;
30284 let DecoderNamespace = "EXT_mmvec";
30285 }
30286 def V6_vaslh_acc : HInst<
30287 (outs HvxVR:$Vx32),
30288 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
30289 "$Vx32.h += vasl($Vu32.h,$Rt32)",
30290 tc_309dbb4f, TypeCVI_VS>, Enc_5138b3, Requires<[UseHVXV65]> {
30291 let Inst{7-5} = 0b101;
30292 let Inst{13-13} = 0b1;
30293 let Inst{31-21} = 0b00011001101;
30294 let hasNewValue = 1;
30295 let opNewValue = 0;
30296 let isAccumulator = 1;
30297 let DecoderNamespace = "EXT_mmvec";
30298 let Constraints = "$Vx32 = $Vx32in";
30299 }
30300 def V6_vaslh_acc_alt : HInst<
30301 (outs HvxVR:$Vx32),
30302 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
30303 "$Vx32 += vaslh($Vu32,$Rt32)",
30304 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
30305 let hasNewValue = 1;
30306 let opNewValue = 0;
30307 let isAccumulator = 1;
30308 let isPseudo = 1;
30309 let isCodeGenOnly = 1;
30310 let DecoderNamespace = "EXT_mmvec";
30311 let Constraints = "$Vx32 = $Vx32in";
30312 }
30313 def V6_vaslh_alt : HInst<
30314 (outs HvxVR:$Vd32),
30315 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30316 "$Vd32 = vaslh($Vu32,$Rt32)",
30317 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30318 let hasNewValue = 1;
30319 let opNewValue = 0;
30320 let isPseudo = 1;
30321 let isCodeGenOnly = 1;
30322 let DecoderNamespace = "EXT_mmvec";
30323 }
30324 def V6_vaslhv : HInst<
30325 (outs HvxVR:$Vd32),
30326 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30327 "$Vd32.h = vasl($Vu32.h,$Vv32.h)",
30328 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
30329 let Inst{7-5} = 0b101;
30330 let Inst{13-13} = 0b0;
30331 let Inst{31-21} = 0b00011111101;
30332 let hasNewValue = 1;
30333 let opNewValue = 0;
30334 let DecoderNamespace = "EXT_mmvec";
30335 }
30336 def V6_vaslhv_alt : HInst<
30337 (outs HvxVR:$Vd32),
30338 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30339 "$Vd32 = vaslh($Vu32,$Vv32)",
30340 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30341 let hasNewValue = 1;
30342 let opNewValue = 0;
30343 let isPseudo = 1;
30344 let isCodeGenOnly = 1;
30345 let DecoderNamespace = "EXT_mmvec";
30346 }
30347 def V6_vaslw : HInst<
30348 (outs HvxVR:$Vd32),
30349 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30350 "$Vd32.w = vasl($Vu32.w,$Rt32)",
30351 tc_7417e785, TypeCVI_VS>, Enc_b087ac, Requires<[UseHVXV60]> {
30352 let Inst{7-5} = 0b111;
30353 let Inst{13-13} = 0b0;
30354 let Inst{31-21} = 0b00011001011;
30355 let hasNewValue = 1;
30356 let opNewValue = 0;
30357 let DecoderNamespace = "EXT_mmvec";
30358 }
30359 def V6_vaslw_acc : HInst<
30360 (outs HvxVR:$Vx32),
30361 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
30362 "$Vx32.w += vasl($Vu32.w,$Rt32)",
30363 tc_309dbb4f, TypeCVI_VS>, Enc_5138b3, Requires<[UseHVXV60]> {
30364 let Inst{7-5} = 0b010;
30365 let Inst{13-13} = 0b1;
30366 let Inst{31-21} = 0b00011001011;
30367 let hasNewValue = 1;
30368 let opNewValue = 0;
30369 let isAccumulator = 1;
30370 let DecoderNamespace = "EXT_mmvec";
30371 let Constraints = "$Vx32 = $Vx32in";
30372 }
30373 def V6_vaslw_acc_alt : HInst<
30374 (outs HvxVR:$Vx32),
30375 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
30376 "$Vx32 += vaslw($Vu32,$Rt32)",
30377 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30378 let hasNewValue = 1;
30379 let opNewValue = 0;
30380 let isAccumulator = 1;
30381 let isPseudo = 1;
30382 let isCodeGenOnly = 1;
30383 let DecoderNamespace = "EXT_mmvec";
30384 let Constraints = "$Vx32 = $Vx32in";
30385 }
30386 def V6_vaslw_alt : HInst<
30387 (outs HvxVR:$Vd32),
30388 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30389 "$Vd32 = vaslw($Vu32,$Rt32)",
30390 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30391 let hasNewValue = 1;
30392 let opNewValue = 0;
30393 let isPseudo = 1;
30394 let isCodeGenOnly = 1;
30395 let DecoderNamespace = "EXT_mmvec";
30396 }
30397 def V6_vaslwv : HInst<
30398 (outs HvxVR:$Vd32),
30399 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30400 "$Vd32.w = vasl($Vu32.w,$Vv32.w)",
30401 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
30402 let Inst{7-5} = 0b100;
30403 let Inst{13-13} = 0b0;
30404 let Inst{31-21} = 0b00011111101;
30405 let hasNewValue = 1;
30406 let opNewValue = 0;
30407 let DecoderNamespace = "EXT_mmvec";
30408 }
30409 def V6_vaslwv_alt : HInst<
30410 (outs HvxVR:$Vd32),
30411 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30412 "$Vd32 = vaslw($Vu32,$Vv32)",
30413 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30414 let hasNewValue = 1;
30415 let opNewValue = 0;
30416 let isPseudo = 1;
30417 let isCodeGenOnly = 1;
30418 let DecoderNamespace = "EXT_mmvec";
30419 }
30420 def V6_vasr_into : HInst<
30421 (outs HvxWR:$Vxx32),
30422 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
30423 "$Vxx32.w = vasrinto($Vu32.w,$Vv32.w)",
30424 tc_df80eeb0, TypeCVI_VP_VS>, Enc_3fc427, Requires<[UseHVXV66]> {
30425 let Inst{7-5} = 0b111;
30426 let Inst{13-13} = 0b1;
30427 let Inst{31-21} = 0b00011010101;
30428 let hasNewValue = 1;
30429 let opNewValue = 0;
30430 let DecoderNamespace = "EXT_mmvec";
30431 let Constraints = "$Vxx32 = $Vxx32in";
30432 }
30433 def V6_vasr_into_alt : HInst<
30434 (outs HvxWR:$Vxx32),
30435 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
30436 "$Vxx32 = vasrinto($Vu32,$Vv32)",
30437 PSEUDO, TypeMAPPING>, Requires<[UseHVXV66]> {
30438 let hasNewValue = 1;
30439 let opNewValue = 0;
30440 let isPseudo = 1;
30441 let isCodeGenOnly = 1;
30442 let DecoderNamespace = "EXT_mmvec";
30443 let Constraints = "$Vxx32 = $Vxx32in";
30444 }
30445 def V6_vasrh : HInst<
30446 (outs HvxVR:$Vd32),
30447 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30448 "$Vd32.h = vasr($Vu32.h,$Rt32)",
30449 tc_7417e785, TypeCVI_VS>, Enc_b087ac, Requires<[UseHVXV60]> {
30450 let Inst{7-5} = 0b110;
30451 let Inst{13-13} = 0b0;
30452 let Inst{31-21} = 0b00011001011;
30453 let hasNewValue = 1;
30454 let opNewValue = 0;
30455 let DecoderNamespace = "EXT_mmvec";
30456 }
30457 def V6_vasrh_acc : HInst<
30458 (outs HvxVR:$Vx32),
30459 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
30460 "$Vx32.h += vasr($Vu32.h,$Rt32)",
30461 tc_309dbb4f, TypeCVI_VS>, Enc_5138b3, Requires<[UseHVXV65]> {
30462 let Inst{7-5} = 0b111;
30463 let Inst{13-13} = 0b1;
30464 let Inst{31-21} = 0b00011001100;
30465 let hasNewValue = 1;
30466 let opNewValue = 0;
30467 let isAccumulator = 1;
30468 let DecoderNamespace = "EXT_mmvec";
30469 let Constraints = "$Vx32 = $Vx32in";
30470 }
30471 def V6_vasrh_acc_alt : HInst<
30472 (outs HvxVR:$Vx32),
30473 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
30474 "$Vx32 += vasrh($Vu32,$Rt32)",
30475 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
30476 let hasNewValue = 1;
30477 let opNewValue = 0;
30478 let isAccumulator = 1;
30479 let isPseudo = 1;
30480 let isCodeGenOnly = 1;
30481 let DecoderNamespace = "EXT_mmvec";
30482 let Constraints = "$Vx32 = $Vx32in";
30483 }
30484 def V6_vasrh_alt : HInst<
30485 (outs HvxVR:$Vd32),
30486 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30487 "$Vd32 = vasrh($Vu32,$Rt32)",
30488 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30489 let hasNewValue = 1;
30490 let opNewValue = 0;
30491 let isPseudo = 1;
30492 let isCodeGenOnly = 1;
30493 let DecoderNamespace = "EXT_mmvec";
30494 }
30495 def V6_vasrhbrndsat : HInst<
30496 (outs HvxVR:$Vd32),
30497 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30498 "$Vd32.b = vasr($Vu32.h,$Vv32.h,$Rt8):rnd:sat",
30499 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV60]> {
30500 let Inst{7-5} = 0b000;
30501 let Inst{13-13} = 0b1;
30502 let Inst{31-24} = 0b00011011;
30503 let hasNewValue = 1;
30504 let opNewValue = 0;
30505 let DecoderNamespace = "EXT_mmvec";
30506 }
30507 def V6_vasrhbrndsat_alt : HInst<
30508 (outs HvxVR:$Vd32),
30509 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30510 "$Vd32 = vasrhb($Vu32,$Vv32,$Rt8):rnd:sat",
30511 tc_16ff9ef8, TypeMAPPING>, Requires<[HasV60]> {
30512 let hasNewValue = 1;
30513 let opNewValue = 0;
30514 let isPseudo = 1;
30515 let isCodeGenOnly = 1;
30516 }
30517 def V6_vasrhbsat : HInst<
30518 (outs HvxVR:$Vd32),
30519 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30520 "$Vd32.b = vasr($Vu32.h,$Vv32.h,$Rt8):sat",
30521 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV62]> {
30522 let Inst{7-5} = 0b000;
30523 let Inst{13-13} = 0b0;
30524 let Inst{31-24} = 0b00011000;
30525 let hasNewValue = 1;
30526 let opNewValue = 0;
30527 let DecoderNamespace = "EXT_mmvec";
30528 }
30529 def V6_vasrhubrndsat : HInst<
30530 (outs HvxVR:$Vd32),
30531 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30532 "$Vd32.ub = vasr($Vu32.h,$Vv32.h,$Rt8):rnd:sat",
30533 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV60]> {
30534 let Inst{7-5} = 0b111;
30535 let Inst{13-13} = 0b0;
30536 let Inst{31-24} = 0b00011011;
30537 let hasNewValue = 1;
30538 let opNewValue = 0;
30539 let DecoderNamespace = "EXT_mmvec";
30540 }
30541 def V6_vasrhubrndsat_alt : HInst<
30542 (outs HvxVR:$Vd32),
30543 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30544 "$Vd32 = vasrhub($Vu32,$Vv32,$Rt8):rnd:sat",
30545 tc_16ff9ef8, TypeMAPPING>, Requires<[HasV60]> {
30546 let hasNewValue = 1;
30547 let opNewValue = 0;
30548 let isPseudo = 1;
30549 let isCodeGenOnly = 1;
30550 }
30551 def V6_vasrhubsat : HInst<
30552 (outs HvxVR:$Vd32),
30553 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30554 "$Vd32.ub = vasr($Vu32.h,$Vv32.h,$Rt8):sat",
30555 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV60]> {
30556 let Inst{7-5} = 0b110;
30557 let Inst{13-13} = 0b0;
30558 let Inst{31-24} = 0b00011011;
30559 let hasNewValue = 1;
30560 let opNewValue = 0;
30561 let DecoderNamespace = "EXT_mmvec";
30562 }
30563 def V6_vasrhubsat_alt : HInst<
30564 (outs HvxVR:$Vd32),
30565 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30566 "$Vd32 = vasrhub($Vu32,$Vv32,$Rt8):sat",
30567 tc_16ff9ef8, TypeMAPPING>, Requires<[HasV60]> {
30568 let hasNewValue = 1;
30569 let opNewValue = 0;
30570 let isPseudo = 1;
30571 let isCodeGenOnly = 1;
30572 }
30573 def V6_vasrhv : HInst<
30574 (outs HvxVR:$Vd32),
30575 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30576 "$Vd32.h = vasr($Vu32.h,$Vv32.h)",
30577 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
30578 let Inst{7-5} = 0b011;
30579 let Inst{13-13} = 0b0;
30580 let Inst{31-21} = 0b00011111101;
30581 let hasNewValue = 1;
30582 let opNewValue = 0;
30583 let DecoderNamespace = "EXT_mmvec";
30584 }
30585 def V6_vasrhv_alt : HInst<
30586 (outs HvxVR:$Vd32),
30587 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30588 "$Vd32 = vasrh($Vu32,$Vv32)",
30589 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30590 let hasNewValue = 1;
30591 let opNewValue = 0;
30592 let isPseudo = 1;
30593 let isCodeGenOnly = 1;
30594 let DecoderNamespace = "EXT_mmvec";
30595 }
30596 def V6_vasruhubrndsat : HInst<
30597 (outs HvxVR:$Vd32),
30598 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30599 "$Vd32.ub = vasr($Vu32.uh,$Vv32.uh,$Rt8):rnd:sat",
30600 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV65]> {
30601 let Inst{7-5} = 0b111;
30602 let Inst{13-13} = 0b0;
30603 let Inst{31-24} = 0b00011000;
30604 let hasNewValue = 1;
30605 let opNewValue = 0;
30606 let DecoderNamespace = "EXT_mmvec";
30607 }
30608 def V6_vasruhubsat : HInst<
30609 (outs HvxVR:$Vd32),
30610 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30611 "$Vd32.ub = vasr($Vu32.uh,$Vv32.uh,$Rt8):sat",
30612 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV65]> {
30613 let Inst{7-5} = 0b101;
30614 let Inst{13-13} = 0b1;
30615 let Inst{31-24} = 0b00011000;
30616 let hasNewValue = 1;
30617 let opNewValue = 0;
30618 let DecoderNamespace = "EXT_mmvec";
30619 }
30620 def V6_vasruwuhrndsat : HInst<
30621 (outs HvxVR:$Vd32),
30622 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30623 "$Vd32.uh = vasr($Vu32.uw,$Vv32.uw,$Rt8):rnd:sat",
30624 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV62]> {
30625 let Inst{7-5} = 0b001;
30626 let Inst{13-13} = 0b0;
30627 let Inst{31-24} = 0b00011000;
30628 let hasNewValue = 1;
30629 let opNewValue = 0;
30630 let DecoderNamespace = "EXT_mmvec";
30631 }
30632 def V6_vasruwuhsat : HInst<
30633 (outs HvxVR:$Vd32),
30634 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30635 "$Vd32.uh = vasr($Vu32.uw,$Vv32.uw,$Rt8):sat",
30636 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV65]> {
30637 let Inst{7-5} = 0b100;
30638 let Inst{13-13} = 0b1;
30639 let Inst{31-24} = 0b00011000;
30640 let hasNewValue = 1;
30641 let opNewValue = 0;
30642 let DecoderNamespace = "EXT_mmvec";
30643 }
30644 def V6_vasrw : HInst<
30645 (outs HvxVR:$Vd32),
30646 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30647 "$Vd32.w = vasr($Vu32.w,$Rt32)",
30648 tc_7417e785, TypeCVI_VS>, Enc_b087ac, Requires<[UseHVXV60]> {
30649 let Inst{7-5} = 0b101;
30650 let Inst{13-13} = 0b0;
30651 let Inst{31-21} = 0b00011001011;
30652 let hasNewValue = 1;
30653 let opNewValue = 0;
30654 let DecoderNamespace = "EXT_mmvec";
30655 }
30656 def V6_vasrw_acc : HInst<
30657 (outs HvxVR:$Vx32),
30658 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
30659 "$Vx32.w += vasr($Vu32.w,$Rt32)",
30660 tc_309dbb4f, TypeCVI_VS>, Enc_5138b3, Requires<[UseHVXV60]> {
30661 let Inst{7-5} = 0b101;
30662 let Inst{13-13} = 0b1;
30663 let Inst{31-21} = 0b00011001011;
30664 let hasNewValue = 1;
30665 let opNewValue = 0;
30666 let isAccumulator = 1;
30667 let DecoderNamespace = "EXT_mmvec";
30668 let Constraints = "$Vx32 = $Vx32in";
30669 }
30670 def V6_vasrw_acc_alt : HInst<
30671 (outs HvxVR:$Vx32),
30672 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
30673 "$Vx32 += vasrw($Vu32,$Rt32)",
30674 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30675 let hasNewValue = 1;
30676 let opNewValue = 0;
30677 let isAccumulator = 1;
30678 let isPseudo = 1;
30679 let isCodeGenOnly = 1;
30680 let DecoderNamespace = "EXT_mmvec";
30681 let Constraints = "$Vx32 = $Vx32in";
30682 }
30683 def V6_vasrw_alt : HInst<
30684 (outs HvxVR:$Vd32),
30685 (ins HvxVR:$Vu32, IntRegs:$Rt32),
30686 "$Vd32 = vasrw($Vu32,$Rt32)",
30687 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30688 let hasNewValue = 1;
30689 let opNewValue = 0;
30690 let isPseudo = 1;
30691 let isCodeGenOnly = 1;
30692 let DecoderNamespace = "EXT_mmvec";
30693 }
30694 def V6_vasrwh : HInst<
30695 (outs HvxVR:$Vd32),
30696 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30697 "$Vd32.h = vasr($Vu32.w,$Vv32.w,$Rt8)",
30698 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV60]> {
30699 let Inst{7-5} = 0b010;
30700 let Inst{13-13} = 0b0;
30701 let Inst{31-24} = 0b00011011;
30702 let hasNewValue = 1;
30703 let opNewValue = 0;
30704 let DecoderNamespace = "EXT_mmvec";
30705 }
30706 def V6_vasrwh_alt : HInst<
30707 (outs HvxVR:$Vd32),
30708 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30709 "$Vd32 = vasrwh($Vu32,$Vv32,$Rt8)",
30710 tc_16ff9ef8, TypeMAPPING>, Requires<[HasV60]> {
30711 let hasNewValue = 1;
30712 let opNewValue = 0;
30713 let isPseudo = 1;
30714 let isCodeGenOnly = 1;
30715 }
30716 def V6_vasrwhrndsat : HInst<
30717 (outs HvxVR:$Vd32),
30718 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30719 "$Vd32.h = vasr($Vu32.w,$Vv32.w,$Rt8):rnd:sat",
30720 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV60]> {
30721 let Inst{7-5} = 0b100;
30722 let Inst{13-13} = 0b0;
30723 let Inst{31-24} = 0b00011011;
30724 let hasNewValue = 1;
30725 let opNewValue = 0;
30726 let DecoderNamespace = "EXT_mmvec";
30727 }
30728 def V6_vasrwhrndsat_alt : HInst<
30729 (outs HvxVR:$Vd32),
30730 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30731 "$Vd32 = vasrwh($Vu32,$Vv32,$Rt8):rnd:sat",
30732 tc_16ff9ef8, TypeMAPPING>, Requires<[HasV60]> {
30733 let hasNewValue = 1;
30734 let opNewValue = 0;
30735 let isPseudo = 1;
30736 let isCodeGenOnly = 1;
30737 }
30738 def V6_vasrwhsat : HInst<
30739 (outs HvxVR:$Vd32),
30740 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30741 "$Vd32.h = vasr($Vu32.w,$Vv32.w,$Rt8):sat",
30742 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV60]> {
30743 let Inst{7-5} = 0b011;
30744 let Inst{13-13} = 0b0;
30745 let Inst{31-24} = 0b00011011;
30746 let hasNewValue = 1;
30747 let opNewValue = 0;
30748 let DecoderNamespace = "EXT_mmvec";
30749 }
30750 def V6_vasrwhsat_alt : HInst<
30751 (outs HvxVR:$Vd32),
30752 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30753 "$Vd32 = vasrwh($Vu32,$Vv32,$Rt8):sat",
30754 tc_16ff9ef8, TypeMAPPING>, Requires<[HasV60]> {
30755 let hasNewValue = 1;
30756 let opNewValue = 0;
30757 let isPseudo = 1;
30758 let isCodeGenOnly = 1;
30759 }
30760 def V6_vasrwuhrndsat : HInst<
30761 (outs HvxVR:$Vd32),
30762 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30763 "$Vd32.uh = vasr($Vu32.w,$Vv32.w,$Rt8):rnd:sat",
30764 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV62]> {
30765 let Inst{7-5} = 0b010;
30766 let Inst{13-13} = 0b0;
30767 let Inst{31-24} = 0b00011000;
30768 let hasNewValue = 1;
30769 let opNewValue = 0;
30770 let DecoderNamespace = "EXT_mmvec";
30771 }
30772 def V6_vasrwuhsat : HInst<
30773 (outs HvxVR:$Vd32),
30774 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30775 "$Vd32.uh = vasr($Vu32.w,$Vv32.w,$Rt8):sat",
30776 tc_16ff9ef8, TypeCVI_VS>, Enc_a30110, Requires<[UseHVXV60]> {
30777 let Inst{7-5} = 0b101;
30778 let Inst{13-13} = 0b0;
30779 let Inst{31-24} = 0b00011011;
30780 let hasNewValue = 1;
30781 let opNewValue = 0;
30782 let DecoderNamespace = "EXT_mmvec";
30783 }
30784 def V6_vasrwuhsat_alt : HInst<
30785 (outs HvxVR:$Vd32),
30786 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
30787 "$Vd32 = vasrwuh($Vu32,$Vv32,$Rt8):sat",
30788 tc_16ff9ef8, TypeMAPPING>, Requires<[HasV60]> {
30789 let hasNewValue = 1;
30790 let opNewValue = 0;
30791 let isPseudo = 1;
30792 let isCodeGenOnly = 1;
30793 }
30794 def V6_vasrwv : HInst<
30795 (outs HvxVR:$Vd32),
30796 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30797 "$Vd32.w = vasr($Vu32.w,$Vv32.w)",
30798 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
30799 let Inst{7-5} = 0b000;
30800 let Inst{13-13} = 0b0;
30801 let Inst{31-21} = 0b00011111101;
30802 let hasNewValue = 1;
30803 let opNewValue = 0;
30804 let DecoderNamespace = "EXT_mmvec";
30805 }
30806 def V6_vasrwv_alt : HInst<
30807 (outs HvxVR:$Vd32),
30808 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30809 "$Vd32 = vasrw($Vu32,$Vv32)",
30810 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30811 let hasNewValue = 1;
30812 let opNewValue = 0;
30813 let isPseudo = 1;
30814 let isCodeGenOnly = 1;
30815 let DecoderNamespace = "EXT_mmvec";
30816 }
30817 def V6_vassign : HInst<
30818 (outs HvxVR:$Vd32),
30819 (ins HvxVR:$Vu32),
30820 "$Vd32 = $Vu32",
30821 tc_0ec46cf9, TypeCVI_VA>, Enc_e7581c, Requires<[UseHVXV60]> {
30822 let Inst{7-5} = 0b111;
30823 let Inst{13-13} = 0b1;
30824 let Inst{31-16} = 0b0001111000000011;
30825 let hasNewValue = 1;
30826 let opNewValue = 0;
30827 let DecoderNamespace = "EXT_mmvec";
30828 }
30829 def V6_vassignp : HInst<
30830 (outs HvxWR:$Vdd32),
30831 (ins HvxWR:$Vuu32),
30832 "$Vdd32 = $Vuu32",
30833 CVI_VA, TypeCVI_VA_DV>, Requires<[UseHVXV60]> {
30834 let hasNewValue = 1;
30835 let opNewValue = 0;
30836 let isPseudo = 1;
30837 let DecoderNamespace = "EXT_mmvec";
30838 }
30839 def V6_vavgb : HInst<
30840 (outs HvxVR:$Vd32),
30841 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30842 "$Vd32.b = vavg($Vu32.b,$Vv32.b)",
30843 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV65]> {
30844 let Inst{7-5} = 0b100;
30845 let Inst{13-13} = 0b1;
30846 let Inst{31-21} = 0b00011111000;
30847 let hasNewValue = 1;
30848 let opNewValue = 0;
30849 let DecoderNamespace = "EXT_mmvec";
30850 }
30851 def V6_vavgb_alt : HInst<
30852 (outs HvxVR:$Vd32),
30853 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30854 "$Vd32 = vavgb($Vu32,$Vv32)",
30855 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
30856 let hasNewValue = 1;
30857 let opNewValue = 0;
30858 let isPseudo = 1;
30859 let isCodeGenOnly = 1;
30860 let DecoderNamespace = "EXT_mmvec";
30861 }
30862 def V6_vavgbrnd : HInst<
30863 (outs HvxVR:$Vd32),
30864 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30865 "$Vd32.b = vavg($Vu32.b,$Vv32.b):rnd",
30866 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV65]> {
30867 let Inst{7-5} = 0b101;
30868 let Inst{13-13} = 0b1;
30869 let Inst{31-21} = 0b00011111000;
30870 let hasNewValue = 1;
30871 let opNewValue = 0;
30872 let DecoderNamespace = "EXT_mmvec";
30873 }
30874 def V6_vavgbrnd_alt : HInst<
30875 (outs HvxVR:$Vd32),
30876 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30877 "$Vd32 = vavgb($Vu32,$Vv32):rnd",
30878 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
30879 let hasNewValue = 1;
30880 let opNewValue = 0;
30881 let isPseudo = 1;
30882 let isCodeGenOnly = 1;
30883 let DecoderNamespace = "EXT_mmvec";
30884 }
30885 def V6_vavgh : HInst<
30886 (outs HvxVR:$Vd32),
30887 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30888 "$Vd32.h = vavg($Vu32.h,$Vv32.h)",
30889 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
30890 let Inst{7-5} = 0b110;
30891 let Inst{13-13} = 0b0;
30892 let Inst{31-21} = 0b00011100110;
30893 let hasNewValue = 1;
30894 let opNewValue = 0;
30895 let DecoderNamespace = "EXT_mmvec";
30896 }
30897 def V6_vavgh_alt : HInst<
30898 (outs HvxVR:$Vd32),
30899 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30900 "$Vd32 = vavgh($Vu32,$Vv32)",
30901 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30902 let hasNewValue = 1;
30903 let opNewValue = 0;
30904 let isPseudo = 1;
30905 let isCodeGenOnly = 1;
30906 let DecoderNamespace = "EXT_mmvec";
30907 }
30908 def V6_vavghrnd : HInst<
30909 (outs HvxVR:$Vd32),
30910 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30911 "$Vd32.h = vavg($Vu32.h,$Vv32.h):rnd",
30912 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
30913 let Inst{7-5} = 0b101;
30914 let Inst{13-13} = 0b0;
30915 let Inst{31-21} = 0b00011100111;
30916 let hasNewValue = 1;
30917 let opNewValue = 0;
30918 let DecoderNamespace = "EXT_mmvec";
30919 }
30920 def V6_vavghrnd_alt : HInst<
30921 (outs HvxVR:$Vd32),
30922 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30923 "$Vd32 = vavgh($Vu32,$Vv32):rnd",
30924 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30925 let hasNewValue = 1;
30926 let opNewValue = 0;
30927 let isPseudo = 1;
30928 let isCodeGenOnly = 1;
30929 let DecoderNamespace = "EXT_mmvec";
30930 }
30931 def V6_vavgub : HInst<
30932 (outs HvxVR:$Vd32),
30933 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30934 "$Vd32.ub = vavg($Vu32.ub,$Vv32.ub)",
30935 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
30936 let Inst{7-5} = 0b100;
30937 let Inst{13-13} = 0b0;
30938 let Inst{31-21} = 0b00011100110;
30939 let hasNewValue = 1;
30940 let opNewValue = 0;
30941 let DecoderNamespace = "EXT_mmvec";
30942 }
30943 def V6_vavgub_alt : HInst<
30944 (outs HvxVR:$Vd32),
30945 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30946 "$Vd32 = vavgub($Vu32,$Vv32)",
30947 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30948 let hasNewValue = 1;
30949 let opNewValue = 0;
30950 let isPseudo = 1;
30951 let isCodeGenOnly = 1;
30952 let DecoderNamespace = "EXT_mmvec";
30953 }
30954 def V6_vavgubrnd : HInst<
30955 (outs HvxVR:$Vd32),
30956 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30957 "$Vd32.ub = vavg($Vu32.ub,$Vv32.ub):rnd",
30958 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
30959 let Inst{7-5} = 0b011;
30960 let Inst{13-13} = 0b0;
30961 let Inst{31-21} = 0b00011100111;
30962 let hasNewValue = 1;
30963 let opNewValue = 0;
30964 let DecoderNamespace = "EXT_mmvec";
30965 }
30966 def V6_vavgubrnd_alt : HInst<
30967 (outs HvxVR:$Vd32),
30968 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30969 "$Vd32 = vavgub($Vu32,$Vv32):rnd",
30970 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30971 let hasNewValue = 1;
30972 let opNewValue = 0;
30973 let isPseudo = 1;
30974 let isCodeGenOnly = 1;
30975 let DecoderNamespace = "EXT_mmvec";
30976 }
30977 def V6_vavguh : HInst<
30978 (outs HvxVR:$Vd32),
30979 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30980 "$Vd32.uh = vavg($Vu32.uh,$Vv32.uh)",
30981 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
30982 let Inst{7-5} = 0b101;
30983 let Inst{13-13} = 0b0;
30984 let Inst{31-21} = 0b00011100110;
30985 let hasNewValue = 1;
30986 let opNewValue = 0;
30987 let DecoderNamespace = "EXT_mmvec";
30988 }
30989 def V6_vavguh_alt : HInst<
30990 (outs HvxVR:$Vd32),
30991 (ins HvxVR:$Vu32, HvxVR:$Vv32),
30992 "$Vd32 = vavguh($Vu32,$Vv32)",
30993 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
30994 let hasNewValue = 1;
30995 let opNewValue = 0;
30996 let isPseudo = 1;
30997 let isCodeGenOnly = 1;
30998 let DecoderNamespace = "EXT_mmvec";
30999 }
31000 def V6_vavguhrnd : HInst<
31001 (outs HvxVR:$Vd32),
31002 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31003 "$Vd32.uh = vavg($Vu32.uh,$Vv32.uh):rnd",
31004 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
31005 let Inst{7-5} = 0b100;
31006 let Inst{13-13} = 0b0;
31007 let Inst{31-21} = 0b00011100111;
31008 let hasNewValue = 1;
31009 let opNewValue = 0;
31010 let DecoderNamespace = "EXT_mmvec";
31011 }
31012 def V6_vavguhrnd_alt : HInst<
31013 (outs HvxVR:$Vd32),
31014 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31015 "$Vd32 = vavguh($Vu32,$Vv32):rnd",
31016 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31017 let hasNewValue = 1;
31018 let opNewValue = 0;
31019 let isPseudo = 1;
31020 let isCodeGenOnly = 1;
31021 let DecoderNamespace = "EXT_mmvec";
31022 }
31023 def V6_vavguw : HInst<
31024 (outs HvxVR:$Vd32),
31025 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31026 "$Vd32.uw = vavg($Vu32.uw,$Vv32.uw)",
31027 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV65]> {
31028 let Inst{7-5} = 0b010;
31029 let Inst{13-13} = 0b1;
31030 let Inst{31-21} = 0b00011111000;
31031 let hasNewValue = 1;
31032 let opNewValue = 0;
31033 let DecoderNamespace = "EXT_mmvec";
31034 }
31035 def V6_vavguw_alt : HInst<
31036 (outs HvxVR:$Vd32),
31037 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31038 "$Vd32 = vavguw($Vu32,$Vv32)",
31039 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
31040 let hasNewValue = 1;
31041 let opNewValue = 0;
31042 let isPseudo = 1;
31043 let isCodeGenOnly = 1;
31044 let DecoderNamespace = "EXT_mmvec";
31045 }
31046 def V6_vavguwrnd : HInst<
31047 (outs HvxVR:$Vd32),
31048 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31049 "$Vd32.uw = vavg($Vu32.uw,$Vv32.uw):rnd",
31050 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV65]> {
31051 let Inst{7-5} = 0b011;
31052 let Inst{13-13} = 0b1;
31053 let Inst{31-21} = 0b00011111000;
31054 let hasNewValue = 1;
31055 let opNewValue = 0;
31056 let DecoderNamespace = "EXT_mmvec";
31057 }
31058 def V6_vavguwrnd_alt : HInst<
31059 (outs HvxVR:$Vd32),
31060 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31061 "$Vd32 = vavguw($Vu32,$Vv32):rnd",
31062 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
31063 let hasNewValue = 1;
31064 let opNewValue = 0;
31065 let isPseudo = 1;
31066 let isCodeGenOnly = 1;
31067 let DecoderNamespace = "EXT_mmvec";
31068 }
31069 def V6_vavgw : HInst<
31070 (outs HvxVR:$Vd32),
31071 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31072 "$Vd32.w = vavg($Vu32.w,$Vv32.w)",
31073 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
31074 let Inst{7-5} = 0b111;
31075 let Inst{13-13} = 0b0;
31076 let Inst{31-21} = 0b00011100110;
31077 let hasNewValue = 1;
31078 let opNewValue = 0;
31079 let DecoderNamespace = "EXT_mmvec";
31080 }
31081 def V6_vavgw_alt : HInst<
31082 (outs HvxVR:$Vd32),
31083 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31084 "$Vd32 = vavgw($Vu32,$Vv32)",
31085 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31086 let hasNewValue = 1;
31087 let opNewValue = 0;
31088 let isPseudo = 1;
31089 let isCodeGenOnly = 1;
31090 let DecoderNamespace = "EXT_mmvec";
31091 }
31092 def V6_vavgwrnd : HInst<
31093 (outs HvxVR:$Vd32),
31094 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31095 "$Vd32.w = vavg($Vu32.w,$Vv32.w):rnd",
31096 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
31097 let Inst{7-5} = 0b110;
31098 let Inst{13-13} = 0b0;
31099 let Inst{31-21} = 0b00011100111;
31100 let hasNewValue = 1;
31101 let opNewValue = 0;
31102 let DecoderNamespace = "EXT_mmvec";
31103 }
31104 def V6_vavgwrnd_alt : HInst<
31105 (outs HvxVR:$Vd32),
31106 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31107 "$Vd32 = vavgw($Vu32,$Vv32):rnd",
31108 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31109 let hasNewValue = 1;
31110 let opNewValue = 0;
31111 let isPseudo = 1;
31112 let isCodeGenOnly = 1;
31113 let DecoderNamespace = "EXT_mmvec";
31114 }
31115 def V6_vccombine : HInst<
31116 (outs HvxWR:$Vdd32),
31117 (ins PredRegs:$Ps4, HvxVR:$Vu32, HvxVR:$Vv32),
31118 "if ($Ps4) $Vdd32 = vcombine($Vu32,$Vv32)",
31119 tc_af25efd9, TypeCVI_VA_DV>, Enc_8c2412, Requires<[UseHVXV60]> {
31120 let Inst{7-7} = 0b0;
31121 let Inst{13-13} = 0b0;
31122 let Inst{31-21} = 0b00011010011;
31123 let isPredicated = 1;
31124 let hasNewValue = 1;
31125 let opNewValue = 0;
31126 let DecoderNamespace = "EXT_mmvec";
31127 }
31128 def V6_vcl0h : HInst<
31129 (outs HvxVR:$Vd32),
31130 (ins HvxVR:$Vu32),
31131 "$Vd32.uh = vcl0($Vu32.uh)",
31132 tc_51d0ecc3, TypeCVI_VS>, Enc_e7581c, Requires<[UseHVXV60]> {
31133 let Inst{7-5} = 0b111;
31134 let Inst{13-13} = 0b0;
31135 let Inst{31-16} = 0b0001111000000010;
31136 let hasNewValue = 1;
31137 let opNewValue = 0;
31138 let DecoderNamespace = "EXT_mmvec";
31139 }
31140 def V6_vcl0h_alt : HInst<
31141 (outs HvxVR:$Vd32),
31142 (ins HvxVR:$Vu32),
31143 "$Vd32 = vcl0h($Vu32)",
31144 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31145 let hasNewValue = 1;
31146 let opNewValue = 0;
31147 let isPseudo = 1;
31148 let isCodeGenOnly = 1;
31149 let DecoderNamespace = "EXT_mmvec";
31150 }
31151 def V6_vcl0w : HInst<
31152 (outs HvxVR:$Vd32),
31153 (ins HvxVR:$Vu32),
31154 "$Vd32.uw = vcl0($Vu32.uw)",
31155 tc_51d0ecc3, TypeCVI_VS>, Enc_e7581c, Requires<[UseHVXV60]> {
31156 let Inst{7-5} = 0b101;
31157 let Inst{13-13} = 0b0;
31158 let Inst{31-16} = 0b0001111000000010;
31159 let hasNewValue = 1;
31160 let opNewValue = 0;
31161 let DecoderNamespace = "EXT_mmvec";
31162 }
31163 def V6_vcl0w_alt : HInst<
31164 (outs HvxVR:$Vd32),
31165 (ins HvxVR:$Vu32),
31166 "$Vd32 = vcl0w($Vu32)",
31167 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31168 let hasNewValue = 1;
31169 let opNewValue = 0;
31170 let isPseudo = 1;
31171 let isCodeGenOnly = 1;
31172 let DecoderNamespace = "EXT_mmvec";
31173 }
31174 def V6_vcmov : HInst<
31175 (outs HvxVR:$Vd32),
31176 (ins PredRegs:$Ps4, HvxVR:$Vu32),
31177 "if ($Ps4) $Vd32 = $Vu32",
31178 tc_3aacf4a8, TypeCVI_VA>, Enc_770858, Requires<[UseHVXV60]> {
31179 let Inst{7-7} = 0b0;
31180 let Inst{13-13} = 0b0;
31181 let Inst{31-16} = 0b0001101000000000;
31182 let isPredicated = 1;
31183 let hasNewValue = 1;
31184 let opNewValue = 0;
31185 let DecoderNamespace = "EXT_mmvec";
31186 }
31187 def V6_vcombine : HInst<
31188 (outs HvxWR:$Vdd32),
31189 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31190 "$Vdd32 = vcombine($Vu32,$Vv32)",
31191 tc_db5555f3, TypeCVI_VA_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
31192 let Inst{7-5} = 0b111;
31193 let Inst{13-13} = 0b0;
31194 let Inst{31-21} = 0b00011111010;
31195 let hasNewValue = 1;
31196 let opNewValue = 0;
31197 let isRegSequence = 1;
31198 let DecoderNamespace = "EXT_mmvec";
31199 }
31200 def V6_vd0 : HInst<
31201 (outs HvxVR:$Vd32),
31202 (ins),
31203 "$Vd32 = #0",
31204 CVI_VA, TypeCVI_VA>, Requires<[UseHVXV60]> {
31205 let hasNewValue = 1;
31206 let opNewValue = 0;
31207 let isPseudo = 1;
31208 let isCodeGenOnly = 1;
31209 let DecoderNamespace = "EXT_mmvec";
31210 }
31211 def V6_vdd0 : HInst<
31212 (outs HvxWR:$Vdd32),
31213 (ins),
31214 "$Vdd32 = #0",
31215 tc_718b5c53, TypeMAPPING>, Requires<[UseHVXV65]> {
31216 let hasNewValue = 1;
31217 let opNewValue = 0;
31218 let isPseudo = 1;
31219 let isCodeGenOnly = 1;
31220 let DecoderNamespace = "EXT_mmvec";
31221 }
31222 def V6_vdeal : HInst<
31223 (outs HvxVR:$Vy32, HvxVR:$Vx32),
31224 (ins HvxVR:$Vy32in, HvxVR:$Vx32in, IntRegs:$Rt32),
31225 "vdeal($Vy32,$Vx32,$Rt32)",
31226 tc_561aaa58, TypeCVI_VP_VS>, Enc_989021, Requires<[UseHVXV60]> {
31227 let Inst{7-5} = 0b010;
31228 let Inst{13-13} = 0b1;
31229 let Inst{31-21} = 0b00011001111;
31230 let hasNewValue = 1;
31231 let opNewValue = 0;
31232 let hasNewValue2 = 1;
31233 let opNewValue2 = 1;
31234 let DecoderNamespace = "EXT_mmvec";
31235 let Constraints = "$Vy32 = $Vy32in, $Vx32 = $Vx32in";
31236 }
31237 def V6_vdealb : HInst<
31238 (outs HvxVR:$Vd32),
31239 (ins HvxVR:$Vu32),
31240 "$Vd32.b = vdeal($Vu32.b)",
31241 tc_946013d8, TypeCVI_VP>, Enc_e7581c, Requires<[UseHVXV60]> {
31242 let Inst{7-5} = 0b111;
31243 let Inst{13-13} = 0b0;
31244 let Inst{31-16} = 0b0001111000000000;
31245 let hasNewValue = 1;
31246 let opNewValue = 0;
31247 let DecoderNamespace = "EXT_mmvec";
31248 }
31249 def V6_vdealb4w : HInst<
31250 (outs HvxVR:$Vd32),
31251 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31252 "$Vd32.b = vdeale($Vu32.b,$Vv32.b)",
31253 tc_46d6c3e0, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
31254 let Inst{7-5} = 0b111;
31255 let Inst{13-13} = 0b0;
31256 let Inst{31-21} = 0b00011111001;
31257 let hasNewValue = 1;
31258 let opNewValue = 0;
31259 let DecoderNamespace = "EXT_mmvec";
31260 }
31261 def V6_vdealb4w_alt : HInst<
31262 (outs HvxVR:$Vd32),
31263 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31264 "$Vd32 = vdealb4w($Vu32,$Vv32)",
31265 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31266 let hasNewValue = 1;
31267 let opNewValue = 0;
31268 let isPseudo = 1;
31269 let isCodeGenOnly = 1;
31270 let DecoderNamespace = "EXT_mmvec";
31271 }
31272 def V6_vdealb_alt : HInst<
31273 (outs HvxVR:$Vd32),
31274 (ins HvxVR:$Vu32),
31275 "$Vd32 = vdealb($Vu32)",
31276 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31277 let hasNewValue = 1;
31278 let opNewValue = 0;
31279 let isPseudo = 1;
31280 let isCodeGenOnly = 1;
31281 let DecoderNamespace = "EXT_mmvec";
31282 }
31283 def V6_vdealh : HInst<
31284 (outs HvxVR:$Vd32),
31285 (ins HvxVR:$Vu32),
31286 "$Vd32.h = vdeal($Vu32.h)",
31287 tc_946013d8, TypeCVI_VP>, Enc_e7581c, Requires<[UseHVXV60]> {
31288 let Inst{7-5} = 0b110;
31289 let Inst{13-13} = 0b0;
31290 let Inst{31-16} = 0b0001111000000000;
31291 let hasNewValue = 1;
31292 let opNewValue = 0;
31293 let DecoderNamespace = "EXT_mmvec";
31294 }
31295 def V6_vdealh_alt : HInst<
31296 (outs HvxVR:$Vd32),
31297 (ins HvxVR:$Vu32),
31298 "$Vd32 = vdealh($Vu32)",
31299 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31300 let hasNewValue = 1;
31301 let opNewValue = 0;
31302 let isPseudo = 1;
31303 let isCodeGenOnly = 1;
31304 let DecoderNamespace = "EXT_mmvec";
31305 }
31306 def V6_vdealvdd : HInst<
31307 (outs HvxWR:$Vdd32),
31308 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
31309 "$Vdd32 = vdeal($Vu32,$Vv32,$Rt8)",
31310 tc_87adc037, TypeCVI_VP_VS>, Enc_24a7dc, Requires<[UseHVXV60]> {
31311 let Inst{7-5} = 0b100;
31312 let Inst{13-13} = 0b1;
31313 let Inst{31-24} = 0b00011011;
31314 let hasNewValue = 1;
31315 let opNewValue = 0;
31316 let DecoderNamespace = "EXT_mmvec";
31317 }
31318 def V6_vdelta : HInst<
31319 (outs HvxVR:$Vd32),
31320 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31321 "$Vd32 = vdelta($Vu32,$Vv32)",
31322 tc_46d6c3e0, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
31323 let Inst{7-5} = 0b001;
31324 let Inst{13-13} = 0b0;
31325 let Inst{31-21} = 0b00011111001;
31326 let hasNewValue = 1;
31327 let opNewValue = 0;
31328 let DecoderNamespace = "EXT_mmvec";
31329 }
31330 def V6_vdmpybus : HInst<
31331 (outs HvxVR:$Vd32),
31332 (ins HvxVR:$Vu32, IntRegs:$Rt32),
31333 "$Vd32.h = vdmpy($Vu32.ub,$Rt32.b)",
31334 tc_649072c2, TypeCVI_VX>, Enc_b087ac, Requires<[UseHVXV60]> {
31335 let Inst{7-5} = 0b110;
31336 let Inst{13-13} = 0b0;
31337 let Inst{31-21} = 0b00011001000;
31338 let hasNewValue = 1;
31339 let opNewValue = 0;
31340 let DecoderNamespace = "EXT_mmvec";
31341 }
31342 def V6_vdmpybus_acc : HInst<
31343 (outs HvxVR:$Vx32),
31344 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
31345 "$Vx32.h += vdmpy($Vu32.ub,$Rt32.b)",
31346 tc_b091f1c6, TypeCVI_VX>, Enc_5138b3, Requires<[UseHVXV60]> {
31347 let Inst{7-5} = 0b110;
31348 let Inst{13-13} = 0b1;
31349 let Inst{31-21} = 0b00011001000;
31350 let hasNewValue = 1;
31351 let opNewValue = 0;
31352 let isAccumulator = 1;
31353 let DecoderNamespace = "EXT_mmvec";
31354 let Constraints = "$Vx32 = $Vx32in";
31355 }
31356 def V6_vdmpybus_acc_alt : HInst<
31357 (outs HvxVR:$Vx32),
31358 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
31359 "$Vx32 += vdmpybus($Vu32,$Rt32)",
31360 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31361 let hasNewValue = 1;
31362 let opNewValue = 0;
31363 let isAccumulator = 1;
31364 let isPseudo = 1;
31365 let isCodeGenOnly = 1;
31366 let DecoderNamespace = "EXT_mmvec";
31367 let Constraints = "$Vx32 = $Vx32in";
31368 }
31369 def V6_vdmpybus_alt : HInst<
31370 (outs HvxVR:$Vd32),
31371 (ins HvxVR:$Vu32, IntRegs:$Rt32),
31372 "$Vd32 = vdmpybus($Vu32,$Rt32)",
31373 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31374 let hasNewValue = 1;
31375 let opNewValue = 0;
31376 let isPseudo = 1;
31377 let isCodeGenOnly = 1;
31378 let DecoderNamespace = "EXT_mmvec";
31379 }
31380 def V6_vdmpybus_dv : HInst<
31381 (outs HvxWR:$Vdd32),
31382 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
31383 "$Vdd32.h = vdmpy($Vuu32.ub,$Rt32.b)",
31384 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV60]> {
31385 let Inst{7-5} = 0b111;
31386 let Inst{13-13} = 0b0;
31387 let Inst{31-21} = 0b00011001000;
31388 let hasNewValue = 1;
31389 let opNewValue = 0;
31390 let DecoderNamespace = "EXT_mmvec";
31391 }
31392 def V6_vdmpybus_dv_acc : HInst<
31393 (outs HvxWR:$Vxx32),
31394 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
31395 "$Vxx32.h += vdmpy($Vuu32.ub,$Rt32.b)",
31396 tc_660769f1, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV60]> {
31397 let Inst{7-5} = 0b111;
31398 let Inst{13-13} = 0b1;
31399 let Inst{31-21} = 0b00011001000;
31400 let hasNewValue = 1;
31401 let opNewValue = 0;
31402 let isAccumulator = 1;
31403 let DecoderNamespace = "EXT_mmvec";
31404 let Constraints = "$Vxx32 = $Vxx32in";
31405 }
31406 def V6_vdmpybus_dv_acc_alt : HInst<
31407 (outs HvxWR:$Vxx32),
31408 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
31409 "$Vxx32 += vdmpybus($Vuu32,$Rt32)",
31410 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31411 let hasNewValue = 1;
31412 let opNewValue = 0;
31413 let isAccumulator = 1;
31414 let isPseudo = 1;
31415 let isCodeGenOnly = 1;
31416 let DecoderNamespace = "EXT_mmvec";
31417 let Constraints = "$Vxx32 = $Vxx32in";
31418 }
31419 def V6_vdmpybus_dv_alt : HInst<
31420 (outs HvxWR:$Vdd32),
31421 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
31422 "$Vdd32 = vdmpybus($Vuu32,$Rt32)",
31423 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31424 let hasNewValue = 1;
31425 let opNewValue = 0;
31426 let isPseudo = 1;
31427 let isCodeGenOnly = 1;
31428 let DecoderNamespace = "EXT_mmvec";
31429 }
31430 def V6_vdmpyhb : HInst<
31431 (outs HvxVR:$Vd32),
31432 (ins HvxVR:$Vu32, IntRegs:$Rt32),
31433 "$Vd32.w = vdmpy($Vu32.h,$Rt32.b)",
31434 tc_649072c2, TypeCVI_VX>, Enc_b087ac, Requires<[UseHVXV60]> {
31435 let Inst{7-5} = 0b010;
31436 let Inst{13-13} = 0b0;
31437 let Inst{31-21} = 0b00011001000;
31438 let hasNewValue = 1;
31439 let opNewValue = 0;
31440 let DecoderNamespace = "EXT_mmvec";
31441 }
31442 def V6_vdmpyhb_acc : HInst<
31443 (outs HvxVR:$Vx32),
31444 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
31445 "$Vx32.w += vdmpy($Vu32.h,$Rt32.b)",
31446 tc_b091f1c6, TypeCVI_VX>, Enc_5138b3, Requires<[UseHVXV60]> {
31447 let Inst{7-5} = 0b011;
31448 let Inst{13-13} = 0b1;
31449 let Inst{31-21} = 0b00011001000;
31450 let hasNewValue = 1;
31451 let opNewValue = 0;
31452 let isAccumulator = 1;
31453 let DecoderNamespace = "EXT_mmvec";
31454 let Constraints = "$Vx32 = $Vx32in";
31455 }
31456 def V6_vdmpyhb_acc_alt : HInst<
31457 (outs HvxVR:$Vx32),
31458 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
31459 "$Vx32 += vdmpyhb($Vu32,$Rt32)",
31460 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31461 let hasNewValue = 1;
31462 let opNewValue = 0;
31463 let isAccumulator = 1;
31464 let isPseudo = 1;
31465 let isCodeGenOnly = 1;
31466 let DecoderNamespace = "EXT_mmvec";
31467 let Constraints = "$Vx32 = $Vx32in";
31468 }
31469 def V6_vdmpyhb_alt : HInst<
31470 (outs HvxVR:$Vd32),
31471 (ins HvxVR:$Vu32, IntRegs:$Rt32),
31472 "$Vd32 = vdmpyhb($Vu32,$Rt32)",
31473 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31474 let hasNewValue = 1;
31475 let opNewValue = 0;
31476 let isPseudo = 1;
31477 let isCodeGenOnly = 1;
31478 let DecoderNamespace = "EXT_mmvec";
31479 }
31480 def V6_vdmpyhb_dv : HInst<
31481 (outs HvxWR:$Vdd32),
31482 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
31483 "$Vdd32.w = vdmpy($Vuu32.h,$Rt32.b)",
31484 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV60]> {
31485 let Inst{7-5} = 0b100;
31486 let Inst{13-13} = 0b0;
31487 let Inst{31-21} = 0b00011001001;
31488 let hasNewValue = 1;
31489 let opNewValue = 0;
31490 let DecoderNamespace = "EXT_mmvec";
31491 }
31492 def V6_vdmpyhb_dv_acc : HInst<
31493 (outs HvxWR:$Vxx32),
31494 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
31495 "$Vxx32.w += vdmpy($Vuu32.h,$Rt32.b)",
31496 tc_660769f1, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV60]> {
31497 let Inst{7-5} = 0b100;
31498 let Inst{13-13} = 0b1;
31499 let Inst{31-21} = 0b00011001001;
31500 let hasNewValue = 1;
31501 let opNewValue = 0;
31502 let isAccumulator = 1;
31503 let DecoderNamespace = "EXT_mmvec";
31504 let Constraints = "$Vxx32 = $Vxx32in";
31505 }
31506 def V6_vdmpyhb_dv_acc_alt : HInst<
31507 (outs HvxWR:$Vxx32),
31508 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
31509 "$Vxx32 += vdmpyhb($Vuu32,$Rt32)",
31510 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31511 let hasNewValue = 1;
31512 let opNewValue = 0;
31513 let isAccumulator = 1;
31514 let isPseudo = 1;
31515 let isCodeGenOnly = 1;
31516 let DecoderNamespace = "EXT_mmvec";
31517 let Constraints = "$Vxx32 = $Vxx32in";
31518 }
31519 def V6_vdmpyhb_dv_alt : HInst<
31520 (outs HvxWR:$Vdd32),
31521 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
31522 "$Vdd32 = vdmpyhb($Vuu32,$Rt32)",
31523 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31524 let hasNewValue = 1;
31525 let opNewValue = 0;
31526 let isPseudo = 1;
31527 let isCodeGenOnly = 1;
31528 let DecoderNamespace = "EXT_mmvec";
31529 }
31530 def V6_vdmpyhisat : HInst<
31531 (outs HvxVR:$Vd32),
31532 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
31533 "$Vd32.w = vdmpy($Vuu32.h,$Rt32.h):sat",
31534 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_0e41fa, Requires<[UseHVXV60]> {
31535 let Inst{7-5} = 0b011;
31536 let Inst{13-13} = 0b0;
31537 let Inst{31-21} = 0b00011001001;
31538 let hasNewValue = 1;
31539 let opNewValue = 0;
31540 let DecoderNamespace = "EXT_mmvec";
31541 }
31542 def V6_vdmpyhisat_acc : HInst<
31543 (outs HvxVR:$Vx32),
31544 (ins HvxVR:$Vx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
31545 "$Vx32.w += vdmpy($Vuu32.h,$Rt32.h):sat",
31546 tc_660769f1, TypeCVI_VX_DV>, Enc_cc857d, Requires<[UseHVXV60]> {
31547 let Inst{7-5} = 0b010;
31548 let Inst{13-13} = 0b1;
31549 let Inst{31-21} = 0b00011001001;
31550 let hasNewValue = 1;
31551 let opNewValue = 0;
31552 let isAccumulator = 1;
31553 let DecoderNamespace = "EXT_mmvec";
31554 let Constraints = "$Vx32 = $Vx32in";
31555 }
31556 def V6_vdmpyhisat_acc_alt : HInst<
31557 (outs HvxVR:$Vx32),
31558 (ins HvxVR:$Vx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
31559 "$Vx32 += vdmpyh($Vuu32,$Rt32):sat",
31560 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31561 let hasNewValue = 1;
31562 let opNewValue = 0;
31563 let isAccumulator = 1;
31564 let isPseudo = 1;
31565 let isCodeGenOnly = 1;
31566 let DecoderNamespace = "EXT_mmvec";
31567 let Constraints = "$Vx32 = $Vx32in";
31568 }
31569 def V6_vdmpyhisat_alt : HInst<
31570 (outs HvxVR:$Vd32),
31571 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
31572 "$Vd32 = vdmpyh($Vuu32,$Rt32):sat",
31573 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31574 let hasNewValue = 1;
31575 let opNewValue = 0;
31576 let isPseudo = 1;
31577 let isCodeGenOnly = 1;
31578 let DecoderNamespace = "EXT_mmvec";
31579 }
31580 def V6_vdmpyhsat : HInst<
31581 (outs HvxVR:$Vd32),
31582 (ins HvxVR:$Vu32, IntRegs:$Rt32),
31583 "$Vd32.w = vdmpy($Vu32.h,$Rt32.h):sat",
31584 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_b087ac, Requires<[UseHVXV60]> {
31585 let Inst{7-5} = 0b010;
31586 let Inst{13-13} = 0b0;
31587 let Inst{31-21} = 0b00011001001;
31588 let hasNewValue = 1;
31589 let opNewValue = 0;
31590 let DecoderNamespace = "EXT_mmvec";
31591 }
31592 def V6_vdmpyhsat_acc : HInst<
31593 (outs HvxVR:$Vx32),
31594 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
31595 "$Vx32.w += vdmpy($Vu32.h,$Rt32.h):sat",
31596 tc_660769f1, TypeCVI_VX_DV>, Enc_5138b3, Requires<[UseHVXV60]> {
31597 let Inst{7-5} = 0b011;
31598 let Inst{13-13} = 0b1;
31599 let Inst{31-21} = 0b00011001001;
31600 let hasNewValue = 1;
31601 let opNewValue = 0;
31602 let isAccumulator = 1;
31603 let DecoderNamespace = "EXT_mmvec";
31604 let Constraints = "$Vx32 = $Vx32in";
31605 }
31606 def V6_vdmpyhsat_acc_alt : HInst<
31607 (outs HvxVR:$Vx32),
31608 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
31609 "$Vx32 += vdmpyh($Vu32,$Rt32):sat",
31610 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31611 let hasNewValue = 1;
31612 let opNewValue = 0;
31613 let isAccumulator = 1;
31614 let isPseudo = 1;
31615 let isCodeGenOnly = 1;
31616 let DecoderNamespace = "EXT_mmvec";
31617 let Constraints = "$Vx32 = $Vx32in";
31618 }
31619 def V6_vdmpyhsat_alt : HInst<
31620 (outs HvxVR:$Vd32),
31621 (ins HvxVR:$Vu32, IntRegs:$Rt32),
31622 "$Vd32 = vdmpyh($Vu32,$Rt32):sat",
31623 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31624 let hasNewValue = 1;
31625 let opNewValue = 0;
31626 let isPseudo = 1;
31627 let isCodeGenOnly = 1;
31628 let DecoderNamespace = "EXT_mmvec";
31629 }
31630 def V6_vdmpyhsuisat : HInst<
31631 (outs HvxVR:$Vd32),
31632 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
31633 "$Vd32.w = vdmpy($Vuu32.h,$Rt32.uh,#1):sat",
31634 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_0e41fa, Requires<[UseHVXV60]> {
31635 let Inst{7-5} = 0b001;
31636 let Inst{13-13} = 0b0;
31637 let Inst{31-21} = 0b00011001001;
31638 let hasNewValue = 1;
31639 let opNewValue = 0;
31640 let DecoderNamespace = "EXT_mmvec";
31641 }
31642 def V6_vdmpyhsuisat_acc : HInst<
31643 (outs HvxVR:$Vx32),
31644 (ins HvxVR:$Vx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
31645 "$Vx32.w += vdmpy($Vuu32.h,$Rt32.uh,#1):sat",
31646 tc_660769f1, TypeCVI_VX_DV>, Enc_cc857d, Requires<[UseHVXV60]> {
31647 let Inst{7-5} = 0b001;
31648 let Inst{13-13} = 0b1;
31649 let Inst{31-21} = 0b00011001001;
31650 let hasNewValue = 1;
31651 let opNewValue = 0;
31652 let isAccumulator = 1;
31653 let DecoderNamespace = "EXT_mmvec";
31654 let Constraints = "$Vx32 = $Vx32in";
31655 }
31656 def V6_vdmpyhsuisat_acc_alt : HInst<
31657 (outs HvxVR:$Vx32),
31658 (ins HvxVR:$Vx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
31659 "$Vx32 += vdmpyhsu($Vuu32,$Rt32,#1):sat",
31660 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31661 let hasNewValue = 1;
31662 let opNewValue = 0;
31663 let isAccumulator = 1;
31664 let isPseudo = 1;
31665 let isCodeGenOnly = 1;
31666 let DecoderNamespace = "EXT_mmvec";
31667 let Constraints = "$Vx32 = $Vx32in";
31668 }
31669 def V6_vdmpyhsuisat_alt : HInst<
31670 (outs HvxVR:$Vd32),
31671 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
31672 "$Vd32 = vdmpyhsu($Vuu32,$Rt32,#1):sat",
31673 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31674 let hasNewValue = 1;
31675 let opNewValue = 0;
31676 let isPseudo = 1;
31677 let isCodeGenOnly = 1;
31678 let DecoderNamespace = "EXT_mmvec";
31679 }
31680 def V6_vdmpyhsusat : HInst<
31681 (outs HvxVR:$Vd32),
31682 (ins HvxVR:$Vu32, IntRegs:$Rt32),
31683 "$Vd32.w = vdmpy($Vu32.h,$Rt32.uh):sat",
31684 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_b087ac, Requires<[UseHVXV60]> {
31685 let Inst{7-5} = 0b000;
31686 let Inst{13-13} = 0b0;
31687 let Inst{31-21} = 0b00011001001;
31688 let hasNewValue = 1;
31689 let opNewValue = 0;
31690 let DecoderNamespace = "EXT_mmvec";
31691 }
31692 def V6_vdmpyhsusat_acc : HInst<
31693 (outs HvxVR:$Vx32),
31694 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
31695 "$Vx32.w += vdmpy($Vu32.h,$Rt32.uh):sat",
31696 tc_660769f1, TypeCVI_VX_DV>, Enc_5138b3, Requires<[UseHVXV60]> {
31697 let Inst{7-5} = 0b000;
31698 let Inst{13-13} = 0b1;
31699 let Inst{31-21} = 0b00011001001;
31700 let hasNewValue = 1;
31701 let opNewValue = 0;
31702 let isAccumulator = 1;
31703 let DecoderNamespace = "EXT_mmvec";
31704 let Constraints = "$Vx32 = $Vx32in";
31705 }
31706 def V6_vdmpyhsusat_acc_alt : HInst<
31707 (outs HvxVR:$Vx32),
31708 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
31709 "$Vx32 += vdmpyhsu($Vu32,$Rt32):sat",
31710 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31711 let hasNewValue = 1;
31712 let opNewValue = 0;
31713 let isAccumulator = 1;
31714 let isPseudo = 1;
31715 let isCodeGenOnly = 1;
31716 let DecoderNamespace = "EXT_mmvec";
31717 let Constraints = "$Vx32 = $Vx32in";
31718 }
31719 def V6_vdmpyhsusat_alt : HInst<
31720 (outs HvxVR:$Vd32),
31721 (ins HvxVR:$Vu32, IntRegs:$Rt32),
31722 "$Vd32 = vdmpyhsu($Vu32,$Rt32):sat",
31723 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31724 let hasNewValue = 1;
31725 let opNewValue = 0;
31726 let isPseudo = 1;
31727 let isCodeGenOnly = 1;
31728 let DecoderNamespace = "EXT_mmvec";
31729 }
31730 def V6_vdmpyhvsat : HInst<
31731 (outs HvxVR:$Vd32),
31732 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31733 "$Vd32.w = vdmpy($Vu32.h,$Vv32.h):sat",
31734 tc_d8287c14, TypeCVI_VX_DV>, Enc_45364e, Requires<[UseHVXV60]> {
31735 let Inst{7-5} = 0b011;
31736 let Inst{13-13} = 0b0;
31737 let Inst{31-21} = 0b00011100000;
31738 let hasNewValue = 1;
31739 let opNewValue = 0;
31740 let DecoderNamespace = "EXT_mmvec";
31741 }
31742 def V6_vdmpyhvsat_acc : HInst<
31743 (outs HvxVR:$Vx32),
31744 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
31745 "$Vx32.w += vdmpy($Vu32.h,$Vv32.h):sat",
31746 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
31747 let Inst{7-5} = 0b011;
31748 let Inst{13-13} = 0b1;
31749 let Inst{31-21} = 0b00011100000;
31750 let hasNewValue = 1;
31751 let opNewValue = 0;
31752 let isAccumulator = 1;
31753 let DecoderNamespace = "EXT_mmvec";
31754 let Constraints = "$Vx32 = $Vx32in";
31755 }
31756 def V6_vdmpyhvsat_acc_alt : HInst<
31757 (outs HvxVR:$Vx32),
31758 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
31759 "$Vx32 += vdmpyh($Vu32,$Vv32):sat",
31760 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31761 let hasNewValue = 1;
31762 let opNewValue = 0;
31763 let isAccumulator = 1;
31764 let isPseudo = 1;
31765 let isCodeGenOnly = 1;
31766 let DecoderNamespace = "EXT_mmvec";
31767 let Constraints = "$Vx32 = $Vx32in";
31768 }
31769 def V6_vdmpyhvsat_alt : HInst<
31770 (outs HvxVR:$Vd32),
31771 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31772 "$Vd32 = vdmpyh($Vu32,$Vv32):sat",
31773 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31774 let hasNewValue = 1;
31775 let opNewValue = 0;
31776 let isPseudo = 1;
31777 let isCodeGenOnly = 1;
31778 let DecoderNamespace = "EXT_mmvec";
31779 }
31780 def V6_vdsaduh : HInst<
31781 (outs HvxWR:$Vdd32),
31782 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
31783 "$Vdd32.uw = vdsad($Vuu32.uh,$Rt32.uh)",
31784 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV60]> {
31785 let Inst{7-5} = 0b101;
31786 let Inst{13-13} = 0b0;
31787 let Inst{31-21} = 0b00011001000;
31788 let hasNewValue = 1;
31789 let opNewValue = 0;
31790 let DecoderNamespace = "EXT_mmvec";
31791 }
31792 def V6_vdsaduh_acc : HInst<
31793 (outs HvxWR:$Vxx32),
31794 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
31795 "$Vxx32.uw += vdsad($Vuu32.uh,$Rt32.uh)",
31796 tc_660769f1, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV60]> {
31797 let Inst{7-5} = 0b000;
31798 let Inst{13-13} = 0b1;
31799 let Inst{31-21} = 0b00011001011;
31800 let hasNewValue = 1;
31801 let opNewValue = 0;
31802 let isAccumulator = 1;
31803 let DecoderNamespace = "EXT_mmvec";
31804 let Constraints = "$Vxx32 = $Vxx32in";
31805 }
31806 def V6_vdsaduh_acc_alt : HInst<
31807 (outs HvxWR:$Vxx32),
31808 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
31809 "$Vxx32 += vdsaduh($Vuu32,$Rt32)",
31810 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31811 let hasNewValue = 1;
31812 let opNewValue = 0;
31813 let isAccumulator = 1;
31814 let isPseudo = 1;
31815 let isCodeGenOnly = 1;
31816 let DecoderNamespace = "EXT_mmvec";
31817 let Constraints = "$Vxx32 = $Vxx32in";
31818 }
31819 def V6_vdsaduh_alt : HInst<
31820 (outs HvxWR:$Vdd32),
31821 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
31822 "$Vdd32 = vdsaduh($Vuu32,$Rt32)",
31823 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
31824 let hasNewValue = 1;
31825 let opNewValue = 0;
31826 let isPseudo = 1;
31827 let isCodeGenOnly = 1;
31828 let DecoderNamespace = "EXT_mmvec";
31829 }
31830 def V6_veqb : HInst<
31831 (outs HvxQR:$Qd4),
31832 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31833 "$Qd4 = vcmp.eq($Vu32.b,$Vv32.b)",
31834 tc_56c4f9fe, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
31835 let Inst{7-2} = 0b000000;
31836 let Inst{13-13} = 0b0;
31837 let Inst{31-21} = 0b00011111100;
31838 let hasNewValue = 1;
31839 let opNewValue = 0;
31840 let DecoderNamespace = "EXT_mmvec";
31841 }
31842 def V6_veqb_and : HInst<
31843 (outs HvxQR:$Qx4),
31844 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
31845 "$Qx4 &= vcmp.eq($Vu32.b,$Vv32.b)",
31846 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
31847 let Inst{7-2} = 0b000000;
31848 let Inst{13-13} = 0b1;
31849 let Inst{31-21} = 0b00011100100;
31850 let DecoderNamespace = "EXT_mmvec";
31851 let Constraints = "$Qx4 = $Qx4in";
31852 }
31853 def V6_veqb_or : HInst<
31854 (outs HvxQR:$Qx4),
31855 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
31856 "$Qx4 |= vcmp.eq($Vu32.b,$Vv32.b)",
31857 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
31858 let Inst{7-2} = 0b010000;
31859 let Inst{13-13} = 0b1;
31860 let Inst{31-21} = 0b00011100100;
31861 let isAccumulator = 1;
31862 let DecoderNamespace = "EXT_mmvec";
31863 let Constraints = "$Qx4 = $Qx4in";
31864 }
31865 def V6_veqb_xor : HInst<
31866 (outs HvxQR:$Qx4),
31867 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
31868 "$Qx4 ^= vcmp.eq($Vu32.b,$Vv32.b)",
31869 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
31870 let Inst{7-2} = 0b100000;
31871 let Inst{13-13} = 0b1;
31872 let Inst{31-21} = 0b00011100100;
31873 let DecoderNamespace = "EXT_mmvec";
31874 let Constraints = "$Qx4 = $Qx4in";
31875 }
31876 def V6_veqh : HInst<
31877 (outs HvxQR:$Qd4),
31878 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31879 "$Qd4 = vcmp.eq($Vu32.h,$Vv32.h)",
31880 tc_56c4f9fe, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
31881 let Inst{7-2} = 0b000001;
31882 let Inst{13-13} = 0b0;
31883 let Inst{31-21} = 0b00011111100;
31884 let hasNewValue = 1;
31885 let opNewValue = 0;
31886 let DecoderNamespace = "EXT_mmvec";
31887 }
31888 def V6_veqh_and : HInst<
31889 (outs HvxQR:$Qx4),
31890 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
31891 "$Qx4 &= vcmp.eq($Vu32.h,$Vv32.h)",
31892 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
31893 let Inst{7-2} = 0b000001;
31894 let Inst{13-13} = 0b1;
31895 let Inst{31-21} = 0b00011100100;
31896 let DecoderNamespace = "EXT_mmvec";
31897 let Constraints = "$Qx4 = $Qx4in";
31898 }
31899 def V6_veqh_or : HInst<
31900 (outs HvxQR:$Qx4),
31901 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
31902 "$Qx4 |= vcmp.eq($Vu32.h,$Vv32.h)",
31903 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
31904 let Inst{7-2} = 0b010001;
31905 let Inst{13-13} = 0b1;
31906 let Inst{31-21} = 0b00011100100;
31907 let isAccumulator = 1;
31908 let DecoderNamespace = "EXT_mmvec";
31909 let Constraints = "$Qx4 = $Qx4in";
31910 }
31911 def V6_veqh_xor : HInst<
31912 (outs HvxQR:$Qx4),
31913 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
31914 "$Qx4 ^= vcmp.eq($Vu32.h,$Vv32.h)",
31915 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
31916 let Inst{7-2} = 0b100001;
31917 let Inst{13-13} = 0b1;
31918 let Inst{31-21} = 0b00011100100;
31919 let DecoderNamespace = "EXT_mmvec";
31920 let Constraints = "$Qx4 = $Qx4in";
31921 }
31922 def V6_veqw : HInst<
31923 (outs HvxQR:$Qd4),
31924 (ins HvxVR:$Vu32, HvxVR:$Vv32),
31925 "$Qd4 = vcmp.eq($Vu32.w,$Vv32.w)",
31926 tc_56c4f9fe, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
31927 let Inst{7-2} = 0b000010;
31928 let Inst{13-13} = 0b0;
31929 let Inst{31-21} = 0b00011111100;
31930 let hasNewValue = 1;
31931 let opNewValue = 0;
31932 let DecoderNamespace = "EXT_mmvec";
31933 }
31934 def V6_veqw_and : HInst<
31935 (outs HvxQR:$Qx4),
31936 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
31937 "$Qx4 &= vcmp.eq($Vu32.w,$Vv32.w)",
31938 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
31939 let Inst{7-2} = 0b000010;
31940 let Inst{13-13} = 0b1;
31941 let Inst{31-21} = 0b00011100100;
31942 let DecoderNamespace = "EXT_mmvec";
31943 let Constraints = "$Qx4 = $Qx4in";
31944 }
31945 def V6_veqw_or : HInst<
31946 (outs HvxQR:$Qx4),
31947 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
31948 "$Qx4 |= vcmp.eq($Vu32.w,$Vv32.w)",
31949 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
31950 let Inst{7-2} = 0b010010;
31951 let Inst{13-13} = 0b1;
31952 let Inst{31-21} = 0b00011100100;
31953 let isAccumulator = 1;
31954 let DecoderNamespace = "EXT_mmvec";
31955 let Constraints = "$Qx4 = $Qx4in";
31956 }
31957 def V6_veqw_xor : HInst<
31958 (outs HvxQR:$Qx4),
31959 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
31960 "$Qx4 ^= vcmp.eq($Vu32.w,$Vv32.w)",
31961 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
31962 let Inst{7-2} = 0b100010;
31963 let Inst{13-13} = 0b1;
31964 let Inst{31-21} = 0b00011100100;
31965 let DecoderNamespace = "EXT_mmvec";
31966 let Constraints = "$Qx4 = $Qx4in";
31967 }
31968 def V6_vgathermh : HInst<
31969 (outs),
31970 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32),
31971 "vtmp.h = vgather($Rt32,$Mu2,$Vv32.h).h",
31972 tc_e8797b98, TypeCVI_GATHER>, Enc_8b8927, Requires<[UseHVXV65]> {
31973 let Inst{12-5} = 0b00001000;
31974 let Inst{31-21} = 0b00101111000;
31975 let hasNewValue = 1;
31976 let opNewValue = 0;
31977 let accessSize = HalfWordAccess;
31978 let isCVLoad = 1;
31979 let hasTmpDst = 1;
31980 let mayLoad = 1;
31981 let Defs = [VTMP];
31982 let DecoderNamespace = "EXT_mmvec";
31983 }
31984 def V6_vgathermhq : HInst<
31985 (outs),
31986 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32),
31987 "if ($Qs4) vtmp.h = vgather($Rt32,$Mu2,$Vv32.h).h",
31988 tc_05ac6f98, TypeCVI_GATHER>, Enc_158beb, Requires<[UseHVXV65]> {
31989 let Inst{12-7} = 0b001010;
31990 let Inst{31-21} = 0b00101111000;
31991 let hasNewValue = 1;
31992 let opNewValue = 0;
31993 let accessSize = HalfWordAccess;
31994 let isCVLoad = 1;
31995 let hasTmpDst = 1;
31996 let mayLoad = 1;
31997 let Defs = [VTMP];
31998 let DecoderNamespace = "EXT_mmvec";
31999 }
32000 def V6_vgathermhw : HInst<
32001 (outs),
32002 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxWR:$Vvv32),
32003 "vtmp.h = vgather($Rt32,$Mu2,$Vvv32.w).h",
32004 tc_05058f6f, TypeCVI_GATHER>, Enc_28dcbb, Requires<[UseHVXV65]> {
32005 let Inst{12-5} = 0b00010000;
32006 let Inst{31-21} = 0b00101111000;
32007 let hasNewValue = 1;
32008 let opNewValue = 0;
32009 let accessSize = HalfWordAccess;
32010 let isCVLoad = 1;
32011 let hasTmpDst = 1;
32012 let mayLoad = 1;
32013 let Defs = [VTMP];
32014 let DecoderNamespace = "EXT_mmvec";
32015 }
32016 def V6_vgathermhwq : HInst<
32017 (outs),
32018 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxWR:$Vvv32),
32019 "if ($Qs4) vtmp.h = vgather($Rt32,$Mu2,$Vvv32.w).h",
32020 tc_fd7610da, TypeCVI_GATHER>, Enc_4e4a80, Requires<[UseHVXV65]> {
32021 let Inst{12-7} = 0b001100;
32022 let Inst{31-21} = 0b00101111000;
32023 let hasNewValue = 1;
32024 let opNewValue = 0;
32025 let accessSize = HalfWordAccess;
32026 let isCVLoad = 1;
32027 let hasTmpDst = 1;
32028 let mayLoad = 1;
32029 let Defs = [VTMP];
32030 let DecoderNamespace = "EXT_mmvec";
32031 }
32032 def V6_vgathermw : HInst<
32033 (outs),
32034 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32),
32035 "vtmp.w = vgather($Rt32,$Mu2,$Vv32.w).w",
32036 tc_e8797b98, TypeCVI_GATHER>, Enc_8b8927, Requires<[UseHVXV65]> {
32037 let Inst{12-5} = 0b00000000;
32038 let Inst{31-21} = 0b00101111000;
32039 let hasNewValue = 1;
32040 let opNewValue = 0;
32041 let accessSize = WordAccess;
32042 let isCVLoad = 1;
32043 let hasTmpDst = 1;
32044 let mayLoad = 1;
32045 let Defs = [VTMP];
32046 let DecoderNamespace = "EXT_mmvec";
32047 }
32048 def V6_vgathermwq : HInst<
32049 (outs),
32050 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32),
32051 "if ($Qs4) vtmp.w = vgather($Rt32,$Mu2,$Vv32.w).w",
32052 tc_05ac6f98, TypeCVI_GATHER>, Enc_158beb, Requires<[UseHVXV65]> {
32053 let Inst{12-7} = 0b001000;
32054 let Inst{31-21} = 0b00101111000;
32055 let hasNewValue = 1;
32056 let opNewValue = 0;
32057 let accessSize = WordAccess;
32058 let isCVLoad = 1;
32059 let hasTmpDst = 1;
32060 let mayLoad = 1;
32061 let Defs = [VTMP];
32062 let DecoderNamespace = "EXT_mmvec";
32063 }
32064 def V6_vgtb : HInst<
32065 (outs HvxQR:$Qd4),
32066 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32067 "$Qd4 = vcmp.gt($Vu32.b,$Vv32.b)",
32068 tc_56c4f9fe, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
32069 let Inst{7-2} = 0b000100;
32070 let Inst{13-13} = 0b0;
32071 let Inst{31-21} = 0b00011111100;
32072 let hasNewValue = 1;
32073 let opNewValue = 0;
32074 let DecoderNamespace = "EXT_mmvec";
32075 }
32076 def V6_vgtb_and : HInst<
32077 (outs HvxQR:$Qx4),
32078 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32079 "$Qx4 &= vcmp.gt($Vu32.b,$Vv32.b)",
32080 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32081 let Inst{7-2} = 0b000100;
32082 let Inst{13-13} = 0b1;
32083 let Inst{31-21} = 0b00011100100;
32084 let DecoderNamespace = "EXT_mmvec";
32085 let Constraints = "$Qx4 = $Qx4in";
32086 }
32087 def V6_vgtb_or : HInst<
32088 (outs HvxQR:$Qx4),
32089 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32090 "$Qx4 |= vcmp.gt($Vu32.b,$Vv32.b)",
32091 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32092 let Inst{7-2} = 0b010100;
32093 let Inst{13-13} = 0b1;
32094 let Inst{31-21} = 0b00011100100;
32095 let isAccumulator = 1;
32096 let DecoderNamespace = "EXT_mmvec";
32097 let Constraints = "$Qx4 = $Qx4in";
32098 }
32099 def V6_vgtb_xor : HInst<
32100 (outs HvxQR:$Qx4),
32101 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32102 "$Qx4 ^= vcmp.gt($Vu32.b,$Vv32.b)",
32103 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32104 let Inst{7-2} = 0b100100;
32105 let Inst{13-13} = 0b1;
32106 let Inst{31-21} = 0b00011100100;
32107 let DecoderNamespace = "EXT_mmvec";
32108 let Constraints = "$Qx4 = $Qx4in";
32109 }
32110 def V6_vgth : HInst<
32111 (outs HvxQR:$Qd4),
32112 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32113 "$Qd4 = vcmp.gt($Vu32.h,$Vv32.h)",
32114 tc_56c4f9fe, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
32115 let Inst{7-2} = 0b000101;
32116 let Inst{13-13} = 0b0;
32117 let Inst{31-21} = 0b00011111100;
32118 let hasNewValue = 1;
32119 let opNewValue = 0;
32120 let DecoderNamespace = "EXT_mmvec";
32121 }
32122 def V6_vgth_and : HInst<
32123 (outs HvxQR:$Qx4),
32124 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32125 "$Qx4 &= vcmp.gt($Vu32.h,$Vv32.h)",
32126 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32127 let Inst{7-2} = 0b000101;
32128 let Inst{13-13} = 0b1;
32129 let Inst{31-21} = 0b00011100100;
32130 let DecoderNamespace = "EXT_mmvec";
32131 let Constraints = "$Qx4 = $Qx4in";
32132 }
32133 def V6_vgth_or : HInst<
32134 (outs HvxQR:$Qx4),
32135 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32136 "$Qx4 |= vcmp.gt($Vu32.h,$Vv32.h)",
32137 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32138 let Inst{7-2} = 0b010101;
32139 let Inst{13-13} = 0b1;
32140 let Inst{31-21} = 0b00011100100;
32141 let isAccumulator = 1;
32142 let DecoderNamespace = "EXT_mmvec";
32143 let Constraints = "$Qx4 = $Qx4in";
32144 }
32145 def V6_vgth_xor : HInst<
32146 (outs HvxQR:$Qx4),
32147 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32148 "$Qx4 ^= vcmp.gt($Vu32.h,$Vv32.h)",
32149 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32150 let Inst{7-2} = 0b100101;
32151 let Inst{13-13} = 0b1;
32152 let Inst{31-21} = 0b00011100100;
32153 let DecoderNamespace = "EXT_mmvec";
32154 let Constraints = "$Qx4 = $Qx4in";
32155 }
32156 def V6_vgtub : HInst<
32157 (outs HvxQR:$Qd4),
32158 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32159 "$Qd4 = vcmp.gt($Vu32.ub,$Vv32.ub)",
32160 tc_56c4f9fe, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
32161 let Inst{7-2} = 0b001000;
32162 let Inst{13-13} = 0b0;
32163 let Inst{31-21} = 0b00011111100;
32164 let hasNewValue = 1;
32165 let opNewValue = 0;
32166 let DecoderNamespace = "EXT_mmvec";
32167 }
32168 def V6_vgtub_and : HInst<
32169 (outs HvxQR:$Qx4),
32170 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32171 "$Qx4 &= vcmp.gt($Vu32.ub,$Vv32.ub)",
32172 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32173 let Inst{7-2} = 0b001000;
32174 let Inst{13-13} = 0b1;
32175 let Inst{31-21} = 0b00011100100;
32176 let DecoderNamespace = "EXT_mmvec";
32177 let Constraints = "$Qx4 = $Qx4in";
32178 }
32179 def V6_vgtub_or : HInst<
32180 (outs HvxQR:$Qx4),
32181 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32182 "$Qx4 |= vcmp.gt($Vu32.ub,$Vv32.ub)",
32183 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32184 let Inst{7-2} = 0b011000;
32185 let Inst{13-13} = 0b1;
32186 let Inst{31-21} = 0b00011100100;
32187 let isAccumulator = 1;
32188 let DecoderNamespace = "EXT_mmvec";
32189 let Constraints = "$Qx4 = $Qx4in";
32190 }
32191 def V6_vgtub_xor : HInst<
32192 (outs HvxQR:$Qx4),
32193 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32194 "$Qx4 ^= vcmp.gt($Vu32.ub,$Vv32.ub)",
32195 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32196 let Inst{7-2} = 0b101000;
32197 let Inst{13-13} = 0b1;
32198 let Inst{31-21} = 0b00011100100;
32199 let DecoderNamespace = "EXT_mmvec";
32200 let Constraints = "$Qx4 = $Qx4in";
32201 }
32202 def V6_vgtuh : HInst<
32203 (outs HvxQR:$Qd4),
32204 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32205 "$Qd4 = vcmp.gt($Vu32.uh,$Vv32.uh)",
32206 tc_56c4f9fe, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
32207 let Inst{7-2} = 0b001001;
32208 let Inst{13-13} = 0b0;
32209 let Inst{31-21} = 0b00011111100;
32210 let hasNewValue = 1;
32211 let opNewValue = 0;
32212 let DecoderNamespace = "EXT_mmvec";
32213 }
32214 def V6_vgtuh_and : HInst<
32215 (outs HvxQR:$Qx4),
32216 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32217 "$Qx4 &= vcmp.gt($Vu32.uh,$Vv32.uh)",
32218 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32219 let Inst{7-2} = 0b001001;
32220 let Inst{13-13} = 0b1;
32221 let Inst{31-21} = 0b00011100100;
32222 let DecoderNamespace = "EXT_mmvec";
32223 let Constraints = "$Qx4 = $Qx4in";
32224 }
32225 def V6_vgtuh_or : HInst<
32226 (outs HvxQR:$Qx4),
32227 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32228 "$Qx4 |= vcmp.gt($Vu32.uh,$Vv32.uh)",
32229 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32230 let Inst{7-2} = 0b011001;
32231 let Inst{13-13} = 0b1;
32232 let Inst{31-21} = 0b00011100100;
32233 let isAccumulator = 1;
32234 let DecoderNamespace = "EXT_mmvec";
32235 let Constraints = "$Qx4 = $Qx4in";
32236 }
32237 def V6_vgtuh_xor : HInst<
32238 (outs HvxQR:$Qx4),
32239 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32240 "$Qx4 ^= vcmp.gt($Vu32.uh,$Vv32.uh)",
32241 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32242 let Inst{7-2} = 0b101001;
32243 let Inst{13-13} = 0b1;
32244 let Inst{31-21} = 0b00011100100;
32245 let DecoderNamespace = "EXT_mmvec";
32246 let Constraints = "$Qx4 = $Qx4in";
32247 }
32248 def V6_vgtuw : HInst<
32249 (outs HvxQR:$Qd4),
32250 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32251 "$Qd4 = vcmp.gt($Vu32.uw,$Vv32.uw)",
32252 tc_56c4f9fe, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
32253 let Inst{7-2} = 0b001010;
32254 let Inst{13-13} = 0b0;
32255 let Inst{31-21} = 0b00011111100;
32256 let hasNewValue = 1;
32257 let opNewValue = 0;
32258 let DecoderNamespace = "EXT_mmvec";
32259 }
32260 def V6_vgtuw_and : HInst<
32261 (outs HvxQR:$Qx4),
32262 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32263 "$Qx4 &= vcmp.gt($Vu32.uw,$Vv32.uw)",
32264 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32265 let Inst{7-2} = 0b001010;
32266 let Inst{13-13} = 0b1;
32267 let Inst{31-21} = 0b00011100100;
32268 let DecoderNamespace = "EXT_mmvec";
32269 let Constraints = "$Qx4 = $Qx4in";
32270 }
32271 def V6_vgtuw_or : HInst<
32272 (outs HvxQR:$Qx4),
32273 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32274 "$Qx4 |= vcmp.gt($Vu32.uw,$Vv32.uw)",
32275 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32276 let Inst{7-2} = 0b011010;
32277 let Inst{13-13} = 0b1;
32278 let Inst{31-21} = 0b00011100100;
32279 let isAccumulator = 1;
32280 let DecoderNamespace = "EXT_mmvec";
32281 let Constraints = "$Qx4 = $Qx4in";
32282 }
32283 def V6_vgtuw_xor : HInst<
32284 (outs HvxQR:$Qx4),
32285 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32286 "$Qx4 ^= vcmp.gt($Vu32.uw,$Vv32.uw)",
32287 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32288 let Inst{7-2} = 0b101010;
32289 let Inst{13-13} = 0b1;
32290 let Inst{31-21} = 0b00011100100;
32291 let DecoderNamespace = "EXT_mmvec";
32292 let Constraints = "$Qx4 = $Qx4in";
32293 }
32294 def V6_vgtw : HInst<
32295 (outs HvxQR:$Qd4),
32296 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32297 "$Qd4 = vcmp.gt($Vu32.w,$Vv32.w)",
32298 tc_56c4f9fe, TypeCVI_VA>, Enc_95441f, Requires<[UseHVXV60]> {
32299 let Inst{7-2} = 0b000110;
32300 let Inst{13-13} = 0b0;
32301 let Inst{31-21} = 0b00011111100;
32302 let hasNewValue = 1;
32303 let opNewValue = 0;
32304 let DecoderNamespace = "EXT_mmvec";
32305 }
32306 def V6_vgtw_and : HInst<
32307 (outs HvxQR:$Qx4),
32308 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32309 "$Qx4 &= vcmp.gt($Vu32.w,$Vv32.w)",
32310 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32311 let Inst{7-2} = 0b000110;
32312 let Inst{13-13} = 0b1;
32313 let Inst{31-21} = 0b00011100100;
32314 let DecoderNamespace = "EXT_mmvec";
32315 let Constraints = "$Qx4 = $Qx4in";
32316 }
32317 def V6_vgtw_or : HInst<
32318 (outs HvxQR:$Qx4),
32319 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32320 "$Qx4 |= vcmp.gt($Vu32.w,$Vv32.w)",
32321 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32322 let Inst{7-2} = 0b010110;
32323 let Inst{13-13} = 0b1;
32324 let Inst{31-21} = 0b00011100100;
32325 let isAccumulator = 1;
32326 let DecoderNamespace = "EXT_mmvec";
32327 let Constraints = "$Qx4 = $Qx4in";
32328 }
32329 def V6_vgtw_xor : HInst<
32330 (outs HvxQR:$Qx4),
32331 (ins HvxQR:$Qx4in, HvxVR:$Vu32, HvxVR:$Vv32),
32332 "$Qx4 ^= vcmp.gt($Vu32.w,$Vv32.w)",
32333 tc_257f6f7c, TypeCVI_VA>, Enc_eaa9f8, Requires<[UseHVXV60]> {
32334 let Inst{7-2} = 0b100110;
32335 let Inst{13-13} = 0b1;
32336 let Inst{31-21} = 0b00011100100;
32337 let DecoderNamespace = "EXT_mmvec";
32338 let Constraints = "$Qx4 = $Qx4in";
32339 }
32340 def V6_vhist : HInst<
32341 (outs),
32342 (ins),
32343 "vhist",
32344 tc_1381a97c, TypeCVI_HIST>, Enc_e3b0c4, Requires<[UseHVXV60]> {
32345 let Inst{13-0} = 0b10000010000000;
32346 let Inst{31-16} = 0b0001111000000000;
32347 let DecoderNamespace = "EXT_mmvec";
32348 }
32349 def V6_vhistq : HInst<
32350 (outs),
32351 (ins HvxQR:$Qv4),
32352 "vhist($Qv4)",
32353 tc_e3f68a46, TypeCVI_HIST>, Enc_217147, Requires<[UseHVXV60]> {
32354 let Inst{13-0} = 0b10000010000000;
32355 let Inst{21-16} = 0b000010;
32356 let Inst{31-24} = 0b00011110;
32357 let DecoderNamespace = "EXT_mmvec";
32358 }
32359 def V6_vinsertwr : HInst<
32360 (outs HvxVR:$Vx32),
32361 (ins HvxVR:$Vx32in, IntRegs:$Rt32),
32362 "$Vx32.w = vinsert($Rt32)",
32363 tc_ac4046bc, TypeCVI_VX_LATE>, Enc_569cfe, Requires<[UseHVXV60]> {
32364 let Inst{13-5} = 0b100000001;
32365 let Inst{31-21} = 0b00011001101;
32366 let hasNewValue = 1;
32367 let opNewValue = 0;
32368 let DecoderNamespace = "EXT_mmvec";
32369 let Constraints = "$Vx32 = $Vx32in";
32370 }
32371 def V6_vlalignb : HInst<
32372 (outs HvxVR:$Vd32),
32373 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
32374 "$Vd32 = vlalign($Vu32,$Vv32,$Rt8)",
32375 tc_56e64202, TypeCVI_VP>, Enc_a30110, Requires<[UseHVXV60]> {
32376 let Inst{7-5} = 0b001;
32377 let Inst{13-13} = 0b0;
32378 let Inst{31-24} = 0b00011011;
32379 let hasNewValue = 1;
32380 let opNewValue = 0;
32381 let DecoderNamespace = "EXT_mmvec";
32382 }
32383 def V6_vlalignbi : HInst<
32384 (outs HvxVR:$Vd32),
32385 (ins HvxVR:$Vu32, HvxVR:$Vv32, u3_0Imm:$Ii),
32386 "$Vd32 = vlalign($Vu32,$Vv32,#$Ii)",
32387 tc_56e64202, TypeCVI_VP>, Enc_0b2e5b, Requires<[UseHVXV60]> {
32388 let Inst{13-13} = 0b1;
32389 let Inst{31-21} = 0b00011110011;
32390 let hasNewValue = 1;
32391 let opNewValue = 0;
32392 let DecoderNamespace = "EXT_mmvec";
32393 }
32394 def V6_vlsrb : HInst<
32395 (outs HvxVR:$Vd32),
32396 (ins HvxVR:$Vu32, IntRegs:$Rt32),
32397 "$Vd32.ub = vlsr($Vu32.ub,$Rt32)",
32398 tc_7417e785, TypeCVI_VS>, Enc_b087ac, Requires<[UseHVXV62]> {
32399 let Inst{7-5} = 0b011;
32400 let Inst{13-13} = 0b0;
32401 let Inst{31-21} = 0b00011001100;
32402 let hasNewValue = 1;
32403 let opNewValue = 0;
32404 let DecoderNamespace = "EXT_mmvec";
32405 }
32406 def V6_vlsrh : HInst<
32407 (outs HvxVR:$Vd32),
32408 (ins HvxVR:$Vu32, IntRegs:$Rt32),
32409 "$Vd32.uh = vlsr($Vu32.uh,$Rt32)",
32410 tc_7417e785, TypeCVI_VS>, Enc_b087ac, Requires<[UseHVXV60]> {
32411 let Inst{7-5} = 0b010;
32412 let Inst{13-13} = 0b0;
32413 let Inst{31-21} = 0b00011001100;
32414 let hasNewValue = 1;
32415 let opNewValue = 0;
32416 let DecoderNamespace = "EXT_mmvec";
32417 }
32418 def V6_vlsrh_alt : HInst<
32419 (outs HvxVR:$Vd32),
32420 (ins HvxVR:$Vu32, IntRegs:$Rt32),
32421 "$Vd32 = vlsrh($Vu32,$Rt32)",
32422 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32423 let hasNewValue = 1;
32424 let opNewValue = 0;
32425 let isPseudo = 1;
32426 let isCodeGenOnly = 1;
32427 let DecoderNamespace = "EXT_mmvec";
32428 }
32429 def V6_vlsrhv : HInst<
32430 (outs HvxVR:$Vd32),
32431 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32432 "$Vd32.h = vlsr($Vu32.h,$Vv32.h)",
32433 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
32434 let Inst{7-5} = 0b010;
32435 let Inst{13-13} = 0b0;
32436 let Inst{31-21} = 0b00011111101;
32437 let hasNewValue = 1;
32438 let opNewValue = 0;
32439 let DecoderNamespace = "EXT_mmvec";
32440 }
32441 def V6_vlsrhv_alt : HInst<
32442 (outs HvxVR:$Vd32),
32443 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32444 "$Vd32 = vlsrh($Vu32,$Vv32)",
32445 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32446 let hasNewValue = 1;
32447 let opNewValue = 0;
32448 let isPseudo = 1;
32449 let isCodeGenOnly = 1;
32450 let DecoderNamespace = "EXT_mmvec";
32451 }
32452 def V6_vlsrw : HInst<
32453 (outs HvxVR:$Vd32),
32454 (ins HvxVR:$Vu32, IntRegs:$Rt32),
32455 "$Vd32.uw = vlsr($Vu32.uw,$Rt32)",
32456 tc_7417e785, TypeCVI_VS>, Enc_b087ac, Requires<[UseHVXV60]> {
32457 let Inst{7-5} = 0b001;
32458 let Inst{13-13} = 0b0;
32459 let Inst{31-21} = 0b00011001100;
32460 let hasNewValue = 1;
32461 let opNewValue = 0;
32462 let DecoderNamespace = "EXT_mmvec";
32463 }
32464 def V6_vlsrw_alt : HInst<
32465 (outs HvxVR:$Vd32),
32466 (ins HvxVR:$Vu32, IntRegs:$Rt32),
32467 "$Vd32 = vlsrw($Vu32,$Rt32)",
32468 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32469 let hasNewValue = 1;
32470 let opNewValue = 0;
32471 let isPseudo = 1;
32472 let isCodeGenOnly = 1;
32473 let DecoderNamespace = "EXT_mmvec";
32474 }
32475 def V6_vlsrwv : HInst<
32476 (outs HvxVR:$Vd32),
32477 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32478 "$Vd32.w = vlsr($Vu32.w,$Vv32.w)",
32479 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
32480 let Inst{7-5} = 0b001;
32481 let Inst{13-13} = 0b0;
32482 let Inst{31-21} = 0b00011111101;
32483 let hasNewValue = 1;
32484 let opNewValue = 0;
32485 let DecoderNamespace = "EXT_mmvec";
32486 }
32487 def V6_vlsrwv_alt : HInst<
32488 (outs HvxVR:$Vd32),
32489 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32490 "$Vd32 = vlsrw($Vu32,$Vv32)",
32491 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32492 let hasNewValue = 1;
32493 let opNewValue = 0;
32494 let isPseudo = 1;
32495 let isCodeGenOnly = 1;
32496 let DecoderNamespace = "EXT_mmvec";
32497 }
32498 def V6_vlut4 : HInst<
32499 (outs HvxVR:$Vd32),
32500 (ins HvxVR:$Vu32, DoubleRegs:$Rtt32),
32501 "$Vd32.h = vlut4($Vu32.uh,$Rtt32.h)",
32502 tc_f1de44ef, TypeCVI_VX_DV>, Enc_263841, Requires<[UseHVXV65]> {
32503 let Inst{7-5} = 0b100;
32504 let Inst{13-13} = 0b0;
32505 let Inst{31-21} = 0b00011001011;
32506 let hasNewValue = 1;
32507 let opNewValue = 0;
32508 let DecoderNamespace = "EXT_mmvec";
32509 }
32510 def V6_vlutvvb : HInst<
32511 (outs HvxVR:$Vd32),
32512 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
32513 "$Vd32.b = vlut32($Vu32.b,$Vv32.b,$Rt8)",
32514 tc_56e64202, TypeCVI_VP>, Enc_a30110, Requires<[UseHVXV60]> {
32515 let Inst{7-5} = 0b001;
32516 let Inst{13-13} = 0b1;
32517 let Inst{31-24} = 0b00011011;
32518 let hasNewValue = 1;
32519 let opNewValue = 0;
32520 let DecoderNamespace = "EXT_mmvec";
32521 }
32522 def V6_vlutvvb_nm : HInst<
32523 (outs HvxVR:$Vd32),
32524 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
32525 "$Vd32.b = vlut32($Vu32.b,$Vv32.b,$Rt8):nomatch",
32526 tc_56e64202, TypeCVI_VP>, Enc_a30110, Requires<[UseHVXV62]> {
32527 let Inst{7-5} = 0b011;
32528 let Inst{13-13} = 0b0;
32529 let Inst{31-24} = 0b00011000;
32530 let hasNewValue = 1;
32531 let opNewValue = 0;
32532 let DecoderNamespace = "EXT_mmvec";
32533 }
32534 def V6_vlutvvb_oracc : HInst<
32535 (outs HvxVR:$Vx32),
32536 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
32537 "$Vx32.b |= vlut32($Vu32.b,$Vv32.b,$Rt8)",
32538 tc_9d1dc972, TypeCVI_VP_VS>, Enc_245865, Requires<[UseHVXV60]> {
32539 let Inst{7-5} = 0b101;
32540 let Inst{13-13} = 0b1;
32541 let Inst{31-24} = 0b00011011;
32542 let hasNewValue = 1;
32543 let opNewValue = 0;
32544 let isAccumulator = 1;
32545 let DecoderNamespace = "EXT_mmvec";
32546 let Constraints = "$Vx32 = $Vx32in";
32547 }
32548 def V6_vlutvvb_oracci : HInst<
32549 (outs HvxVR:$Vx32),
32550 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32, u3_0Imm:$Ii),
32551 "$Vx32.b |= vlut32($Vu32.b,$Vv32.b,#$Ii)",
32552 tc_9d1dc972, TypeCVI_VP_VS>, Enc_cd4705, Requires<[UseHVXV62]> {
32553 let Inst{13-13} = 0b1;
32554 let Inst{31-21} = 0b00011100110;
32555 let hasNewValue = 1;
32556 let opNewValue = 0;
32557 let isAccumulator = 1;
32558 let DecoderNamespace = "EXT_mmvec";
32559 let Constraints = "$Vx32 = $Vx32in";
32560 }
32561 def V6_vlutvvbi : HInst<
32562 (outs HvxVR:$Vd32),
32563 (ins HvxVR:$Vu32, HvxVR:$Vv32, u3_0Imm:$Ii),
32564 "$Vd32.b = vlut32($Vu32.b,$Vv32.b,#$Ii)",
32565 tc_56e64202, TypeCVI_VP>, Enc_0b2e5b, Requires<[UseHVXV62]> {
32566 let Inst{13-13} = 0b0;
32567 let Inst{31-21} = 0b00011110001;
32568 let hasNewValue = 1;
32569 let opNewValue = 0;
32570 let DecoderNamespace = "EXT_mmvec";
32571 }
32572 def V6_vlutvwh : HInst<
32573 (outs HvxWR:$Vdd32),
32574 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
32575 "$Vdd32.h = vlut16($Vu32.b,$Vv32.h,$Rt8)",
32576 tc_87adc037, TypeCVI_VP_VS>, Enc_24a7dc, Requires<[UseHVXV60]> {
32577 let Inst{7-5} = 0b110;
32578 let Inst{13-13} = 0b1;
32579 let Inst{31-24} = 0b00011011;
32580 let hasNewValue = 1;
32581 let opNewValue = 0;
32582 let DecoderNamespace = "EXT_mmvec";
32583 }
32584 def V6_vlutvwh_nm : HInst<
32585 (outs HvxWR:$Vdd32),
32586 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
32587 "$Vdd32.h = vlut16($Vu32.b,$Vv32.h,$Rt8):nomatch",
32588 tc_87adc037, TypeCVI_VP_VS>, Enc_24a7dc, Requires<[UseHVXV62]> {
32589 let Inst{7-5} = 0b100;
32590 let Inst{13-13} = 0b0;
32591 let Inst{31-24} = 0b00011000;
32592 let hasNewValue = 1;
32593 let opNewValue = 0;
32594 let DecoderNamespace = "EXT_mmvec";
32595 }
32596 def V6_vlutvwh_oracc : HInst<
32597 (outs HvxWR:$Vxx32),
32598 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
32599 "$Vxx32.h |= vlut16($Vu32.b,$Vv32.h,$Rt8)",
32600 tc_9d1dc972, TypeCVI_VP_VS>, Enc_7b523d, Requires<[UseHVXV60]> {
32601 let Inst{7-5} = 0b111;
32602 let Inst{13-13} = 0b1;
32603 let Inst{31-24} = 0b00011011;
32604 let hasNewValue = 1;
32605 let opNewValue = 0;
32606 let isAccumulator = 1;
32607 let DecoderNamespace = "EXT_mmvec";
32608 let Constraints = "$Vxx32 = $Vxx32in";
32609 }
32610 def V6_vlutvwh_oracci : HInst<
32611 (outs HvxWR:$Vxx32),
32612 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32, u3_0Imm:$Ii),
32613 "$Vxx32.h |= vlut16($Vu32.b,$Vv32.h,#$Ii)",
32614 tc_9d1dc972, TypeCVI_VP_VS>, Enc_1178da, Requires<[UseHVXV62]> {
32615 let Inst{13-13} = 0b1;
32616 let Inst{31-21} = 0b00011100111;
32617 let hasNewValue = 1;
32618 let opNewValue = 0;
32619 let isAccumulator = 1;
32620 let DecoderNamespace = "EXT_mmvec";
32621 let Constraints = "$Vxx32 = $Vxx32in";
32622 }
32623 def V6_vlutvwhi : HInst<
32624 (outs HvxWR:$Vdd32),
32625 (ins HvxVR:$Vu32, HvxVR:$Vv32, u3_0Imm:$Ii),
32626 "$Vdd32.h = vlut16($Vu32.b,$Vv32.h,#$Ii)",
32627 tc_87adc037, TypeCVI_VP_VS>, Enc_4b39e4, Requires<[UseHVXV62]> {
32628 let Inst{13-13} = 0b0;
32629 let Inst{31-21} = 0b00011110011;
32630 let hasNewValue = 1;
32631 let opNewValue = 0;
32632 let DecoderNamespace = "EXT_mmvec";
32633 }
32634 def V6_vmaxb : HInst<
32635 (outs HvxVR:$Vd32),
32636 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32637 "$Vd32.b = vmax($Vu32.b,$Vv32.b)",
32638 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
32639 let Inst{7-5} = 0b101;
32640 let Inst{13-13} = 0b0;
32641 let Inst{31-21} = 0b00011111001;
32642 let hasNewValue = 1;
32643 let opNewValue = 0;
32644 let DecoderNamespace = "EXT_mmvec";
32645 }
32646 def V6_vmaxb_alt : HInst<
32647 (outs HvxVR:$Vd32),
32648 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32649 "$Vd32 = vmaxb($Vu32,$Vv32)",
32650 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
32651 let hasNewValue = 1;
32652 let opNewValue = 0;
32653 let isPseudo = 1;
32654 let isCodeGenOnly = 1;
32655 let DecoderNamespace = "EXT_mmvec";
32656 }
32657 def V6_vmaxh : HInst<
32658 (outs HvxVR:$Vd32),
32659 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32660 "$Vd32.h = vmax($Vu32.h,$Vv32.h)",
32661 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
32662 let Inst{7-5} = 0b111;
32663 let Inst{13-13} = 0b0;
32664 let Inst{31-21} = 0b00011111000;
32665 let hasNewValue = 1;
32666 let opNewValue = 0;
32667 let DecoderNamespace = "EXT_mmvec";
32668 }
32669 def V6_vmaxh_alt : HInst<
32670 (outs HvxVR:$Vd32),
32671 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32672 "$Vd32 = vmaxh($Vu32,$Vv32)",
32673 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32674 let hasNewValue = 1;
32675 let opNewValue = 0;
32676 let isPseudo = 1;
32677 let isCodeGenOnly = 1;
32678 let DecoderNamespace = "EXT_mmvec";
32679 }
32680 def V6_vmaxub : HInst<
32681 (outs HvxVR:$Vd32),
32682 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32683 "$Vd32.ub = vmax($Vu32.ub,$Vv32.ub)",
32684 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
32685 let Inst{7-5} = 0b101;
32686 let Inst{13-13} = 0b0;
32687 let Inst{31-21} = 0b00011111000;
32688 let hasNewValue = 1;
32689 let opNewValue = 0;
32690 let DecoderNamespace = "EXT_mmvec";
32691 }
32692 def V6_vmaxub_alt : HInst<
32693 (outs HvxVR:$Vd32),
32694 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32695 "$Vd32 = vmaxub($Vu32,$Vv32)",
32696 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32697 let hasNewValue = 1;
32698 let opNewValue = 0;
32699 let isPseudo = 1;
32700 let isCodeGenOnly = 1;
32701 let DecoderNamespace = "EXT_mmvec";
32702 }
32703 def V6_vmaxuh : HInst<
32704 (outs HvxVR:$Vd32),
32705 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32706 "$Vd32.uh = vmax($Vu32.uh,$Vv32.uh)",
32707 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
32708 let Inst{7-5} = 0b110;
32709 let Inst{13-13} = 0b0;
32710 let Inst{31-21} = 0b00011111000;
32711 let hasNewValue = 1;
32712 let opNewValue = 0;
32713 let DecoderNamespace = "EXT_mmvec";
32714 }
32715 def V6_vmaxuh_alt : HInst<
32716 (outs HvxVR:$Vd32),
32717 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32718 "$Vd32 = vmaxuh($Vu32,$Vv32)",
32719 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32720 let hasNewValue = 1;
32721 let opNewValue = 0;
32722 let isPseudo = 1;
32723 let isCodeGenOnly = 1;
32724 let DecoderNamespace = "EXT_mmvec";
32725 }
32726 def V6_vmaxw : HInst<
32727 (outs HvxVR:$Vd32),
32728 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32729 "$Vd32.w = vmax($Vu32.w,$Vv32.w)",
32730 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
32731 let Inst{7-5} = 0b000;
32732 let Inst{13-13} = 0b0;
32733 let Inst{31-21} = 0b00011111001;
32734 let hasNewValue = 1;
32735 let opNewValue = 0;
32736 let DecoderNamespace = "EXT_mmvec";
32737 }
32738 def V6_vmaxw_alt : HInst<
32739 (outs HvxVR:$Vd32),
32740 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32741 "$Vd32 = vmaxw($Vu32,$Vv32)",
32742 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32743 let hasNewValue = 1;
32744 let opNewValue = 0;
32745 let isPseudo = 1;
32746 let isCodeGenOnly = 1;
32747 let DecoderNamespace = "EXT_mmvec";
32748 }
32749 def V6_vminb : HInst<
32750 (outs HvxVR:$Vd32),
32751 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32752 "$Vd32.b = vmin($Vu32.b,$Vv32.b)",
32753 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
32754 let Inst{7-5} = 0b100;
32755 let Inst{13-13} = 0b0;
32756 let Inst{31-21} = 0b00011111001;
32757 let hasNewValue = 1;
32758 let opNewValue = 0;
32759 let DecoderNamespace = "EXT_mmvec";
32760 }
32761 def V6_vminb_alt : HInst<
32762 (outs HvxVR:$Vd32),
32763 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32764 "$Vd32 = vminb($Vu32,$Vv32)",
32765 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
32766 let hasNewValue = 1;
32767 let opNewValue = 0;
32768 let isPseudo = 1;
32769 let isCodeGenOnly = 1;
32770 let DecoderNamespace = "EXT_mmvec";
32771 }
32772 def V6_vminh : HInst<
32773 (outs HvxVR:$Vd32),
32774 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32775 "$Vd32.h = vmin($Vu32.h,$Vv32.h)",
32776 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
32777 let Inst{7-5} = 0b011;
32778 let Inst{13-13} = 0b0;
32779 let Inst{31-21} = 0b00011111000;
32780 let hasNewValue = 1;
32781 let opNewValue = 0;
32782 let DecoderNamespace = "EXT_mmvec";
32783 }
32784 def V6_vminh_alt : HInst<
32785 (outs HvxVR:$Vd32),
32786 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32787 "$Vd32 = vminh($Vu32,$Vv32)",
32788 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32789 let hasNewValue = 1;
32790 let opNewValue = 0;
32791 let isPseudo = 1;
32792 let isCodeGenOnly = 1;
32793 let DecoderNamespace = "EXT_mmvec";
32794 }
32795 def V6_vminub : HInst<
32796 (outs HvxVR:$Vd32),
32797 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32798 "$Vd32.ub = vmin($Vu32.ub,$Vv32.ub)",
32799 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
32800 let Inst{7-5} = 0b001;
32801 let Inst{13-13} = 0b0;
32802 let Inst{31-21} = 0b00011111000;
32803 let hasNewValue = 1;
32804 let opNewValue = 0;
32805 let DecoderNamespace = "EXT_mmvec";
32806 }
32807 def V6_vminub_alt : HInst<
32808 (outs HvxVR:$Vd32),
32809 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32810 "$Vd32 = vminub($Vu32,$Vv32)",
32811 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32812 let hasNewValue = 1;
32813 let opNewValue = 0;
32814 let isPseudo = 1;
32815 let isCodeGenOnly = 1;
32816 let DecoderNamespace = "EXT_mmvec";
32817 }
32818 def V6_vminuh : HInst<
32819 (outs HvxVR:$Vd32),
32820 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32821 "$Vd32.uh = vmin($Vu32.uh,$Vv32.uh)",
32822 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
32823 let Inst{7-5} = 0b010;
32824 let Inst{13-13} = 0b0;
32825 let Inst{31-21} = 0b00011111000;
32826 let hasNewValue = 1;
32827 let opNewValue = 0;
32828 let DecoderNamespace = "EXT_mmvec";
32829 }
32830 def V6_vminuh_alt : HInst<
32831 (outs HvxVR:$Vd32),
32832 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32833 "$Vd32 = vminuh($Vu32,$Vv32)",
32834 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32835 let hasNewValue = 1;
32836 let opNewValue = 0;
32837 let isPseudo = 1;
32838 let isCodeGenOnly = 1;
32839 let DecoderNamespace = "EXT_mmvec";
32840 }
32841 def V6_vminw : HInst<
32842 (outs HvxVR:$Vd32),
32843 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32844 "$Vd32.w = vmin($Vu32.w,$Vv32.w)",
32845 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
32846 let Inst{7-5} = 0b100;
32847 let Inst{13-13} = 0b0;
32848 let Inst{31-21} = 0b00011111000;
32849 let hasNewValue = 1;
32850 let opNewValue = 0;
32851 let DecoderNamespace = "EXT_mmvec";
32852 }
32853 def V6_vminw_alt : HInst<
32854 (outs HvxVR:$Vd32),
32855 (ins HvxVR:$Vu32, HvxVR:$Vv32),
32856 "$Vd32 = vminw($Vu32,$Vv32)",
32857 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32858 let hasNewValue = 1;
32859 let opNewValue = 0;
32860 let isPseudo = 1;
32861 let isCodeGenOnly = 1;
32862 let DecoderNamespace = "EXT_mmvec";
32863 }
32864 def V6_vmpabus : HInst<
32865 (outs HvxWR:$Vdd32),
32866 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
32867 "$Vdd32.h = vmpa($Vuu32.ub,$Rt32.b)",
32868 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV60]> {
32869 let Inst{7-5} = 0b110;
32870 let Inst{13-13} = 0b0;
32871 let Inst{31-21} = 0b00011001001;
32872 let hasNewValue = 1;
32873 let opNewValue = 0;
32874 let DecoderNamespace = "EXT_mmvec";
32875 }
32876 def V6_vmpabus_acc : HInst<
32877 (outs HvxWR:$Vxx32),
32878 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
32879 "$Vxx32.h += vmpa($Vuu32.ub,$Rt32.b)",
32880 tc_660769f1, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV60]> {
32881 let Inst{7-5} = 0b110;
32882 let Inst{13-13} = 0b1;
32883 let Inst{31-21} = 0b00011001001;
32884 let hasNewValue = 1;
32885 let opNewValue = 0;
32886 let isAccumulator = 1;
32887 let DecoderNamespace = "EXT_mmvec";
32888 let Constraints = "$Vxx32 = $Vxx32in";
32889 }
32890 def V6_vmpabus_acc_alt : HInst<
32891 (outs HvxWR:$Vxx32),
32892 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
32893 "$Vxx32 += vmpabus($Vuu32,$Rt32)",
32894 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32895 let hasNewValue = 1;
32896 let opNewValue = 0;
32897 let isAccumulator = 1;
32898 let isPseudo = 1;
32899 let isCodeGenOnly = 1;
32900 let DecoderNamespace = "EXT_mmvec";
32901 let Constraints = "$Vxx32 = $Vxx32in";
32902 }
32903 def V6_vmpabus_alt : HInst<
32904 (outs HvxWR:$Vdd32),
32905 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
32906 "$Vdd32 = vmpabus($Vuu32,$Rt32)",
32907 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32908 let hasNewValue = 1;
32909 let opNewValue = 0;
32910 let isPseudo = 1;
32911 let isCodeGenOnly = 1;
32912 let DecoderNamespace = "EXT_mmvec";
32913 }
32914 def V6_vmpabusv : HInst<
32915 (outs HvxWR:$Vdd32),
32916 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
32917 "$Vdd32.h = vmpa($Vuu32.ub,$Vvv32.b)",
32918 tc_d8287c14, TypeCVI_VX_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
32919 let Inst{7-5} = 0b011;
32920 let Inst{13-13} = 0b0;
32921 let Inst{31-21} = 0b00011100001;
32922 let hasNewValue = 1;
32923 let opNewValue = 0;
32924 let DecoderNamespace = "EXT_mmvec";
32925 }
32926 def V6_vmpabusv_alt : HInst<
32927 (outs HvxWR:$Vdd32),
32928 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
32929 "$Vdd32 = vmpabus($Vuu32,$Vvv32)",
32930 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
32931 let hasNewValue = 1;
32932 let opNewValue = 0;
32933 let isPseudo = 1;
32934 let isCodeGenOnly = 1;
32935 let DecoderNamespace = "EXT_mmvec";
32936 }
32937 def V6_vmpabuu : HInst<
32938 (outs HvxWR:$Vdd32),
32939 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
32940 "$Vdd32.h = vmpa($Vuu32.ub,$Rt32.ub)",
32941 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV65]> {
32942 let Inst{7-5} = 0b011;
32943 let Inst{13-13} = 0b0;
32944 let Inst{31-21} = 0b00011001011;
32945 let hasNewValue = 1;
32946 let opNewValue = 0;
32947 let DecoderNamespace = "EXT_mmvec";
32948 }
32949 def V6_vmpabuu_acc : HInst<
32950 (outs HvxWR:$Vxx32),
32951 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
32952 "$Vxx32.h += vmpa($Vuu32.ub,$Rt32.ub)",
32953 tc_660769f1, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV65]> {
32954 let Inst{7-5} = 0b100;
32955 let Inst{13-13} = 0b1;
32956 let Inst{31-21} = 0b00011001101;
32957 let hasNewValue = 1;
32958 let opNewValue = 0;
32959 let isAccumulator = 1;
32960 let DecoderNamespace = "EXT_mmvec";
32961 let Constraints = "$Vxx32 = $Vxx32in";
32962 }
32963 def V6_vmpabuu_acc_alt : HInst<
32964 (outs HvxWR:$Vxx32),
32965 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
32966 "$Vxx32 += vmpabuu($Vuu32,$Rt32)",
32967 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
32968 let hasNewValue = 1;
32969 let opNewValue = 0;
32970 let isAccumulator = 1;
32971 let isPseudo = 1;
32972 let isCodeGenOnly = 1;
32973 let DecoderNamespace = "EXT_mmvec";
32974 let Constraints = "$Vxx32 = $Vxx32in";
32975 }
32976 def V6_vmpabuu_alt : HInst<
32977 (outs HvxWR:$Vdd32),
32978 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
32979 "$Vdd32 = vmpabuu($Vuu32,$Rt32)",
32980 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
32981 let hasNewValue = 1;
32982 let opNewValue = 0;
32983 let isPseudo = 1;
32984 let isCodeGenOnly = 1;
32985 let DecoderNamespace = "EXT_mmvec";
32986 }
32987 def V6_vmpabuuv : HInst<
32988 (outs HvxWR:$Vdd32),
32989 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
32990 "$Vdd32.h = vmpa($Vuu32.ub,$Vvv32.ub)",
32991 tc_d8287c14, TypeCVI_VX_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
32992 let Inst{7-5} = 0b111;
32993 let Inst{13-13} = 0b0;
32994 let Inst{31-21} = 0b00011100111;
32995 let hasNewValue = 1;
32996 let opNewValue = 0;
32997 let DecoderNamespace = "EXT_mmvec";
32998 }
32999 def V6_vmpabuuv_alt : HInst<
33000 (outs HvxWR:$Vdd32),
33001 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
33002 "$Vdd32 = vmpabuu($Vuu32,$Vvv32)",
33003 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33004 let hasNewValue = 1;
33005 let opNewValue = 0;
33006 let isPseudo = 1;
33007 let isCodeGenOnly = 1;
33008 let DecoderNamespace = "EXT_mmvec";
33009 }
33010 def V6_vmpahb : HInst<
33011 (outs HvxWR:$Vdd32),
33012 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
33013 "$Vdd32.w = vmpa($Vuu32.h,$Rt32.b)",
33014 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV60]> {
33015 let Inst{7-5} = 0b111;
33016 let Inst{13-13} = 0b0;
33017 let Inst{31-21} = 0b00011001001;
33018 let hasNewValue = 1;
33019 let opNewValue = 0;
33020 let DecoderNamespace = "EXT_mmvec";
33021 }
33022 def V6_vmpahb_acc : HInst<
33023 (outs HvxWR:$Vxx32),
33024 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
33025 "$Vxx32.w += vmpa($Vuu32.h,$Rt32.b)",
33026 tc_660769f1, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV60]> {
33027 let Inst{7-5} = 0b111;
33028 let Inst{13-13} = 0b1;
33029 let Inst{31-21} = 0b00011001001;
33030 let hasNewValue = 1;
33031 let opNewValue = 0;
33032 let isAccumulator = 1;
33033 let DecoderNamespace = "EXT_mmvec";
33034 let Constraints = "$Vxx32 = $Vxx32in";
33035 }
33036 def V6_vmpahb_acc_alt : HInst<
33037 (outs HvxWR:$Vxx32),
33038 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
33039 "$Vxx32 += vmpahb($Vuu32,$Rt32)",
33040 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33041 let hasNewValue = 1;
33042 let opNewValue = 0;
33043 let isAccumulator = 1;
33044 let isPseudo = 1;
33045 let isCodeGenOnly = 1;
33046 let DecoderNamespace = "EXT_mmvec";
33047 let Constraints = "$Vxx32 = $Vxx32in";
33048 }
33049 def V6_vmpahb_alt : HInst<
33050 (outs HvxWR:$Vdd32),
33051 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
33052 "$Vdd32 = vmpahb($Vuu32,$Rt32)",
33053 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33054 let hasNewValue = 1;
33055 let opNewValue = 0;
33056 let isPseudo = 1;
33057 let isCodeGenOnly = 1;
33058 let DecoderNamespace = "EXT_mmvec";
33059 }
33060 def V6_vmpahhsat : HInst<
33061 (outs HvxVR:$Vx32),
33062 (ins HvxVR:$Vx32in, HvxVR:$Vu32, DoubleRegs:$Rtt32),
33063 "$Vx32.h = vmpa($Vx32in.h,$Vu32.h,$Rtt32.h):sat",
33064 tc_90bcc1db, TypeCVI_VX_DV>, Enc_310ba1, Requires<[UseHVXV65]> {
33065 let Inst{7-5} = 0b100;
33066 let Inst{13-13} = 0b1;
33067 let Inst{31-21} = 0b00011001100;
33068 let hasNewValue = 1;
33069 let opNewValue = 0;
33070 let DecoderNamespace = "EXT_mmvec";
33071 let Constraints = "$Vx32 = $Vx32in";
33072 }
33073 def V6_vmpauhb : HInst<
33074 (outs HvxWR:$Vdd32),
33075 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
33076 "$Vdd32.w = vmpa($Vuu32.uh,$Rt32.b)",
33077 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV62]> {
33078 let Inst{7-5} = 0b101;
33079 let Inst{13-13} = 0b0;
33080 let Inst{31-21} = 0b00011001100;
33081 let hasNewValue = 1;
33082 let opNewValue = 0;
33083 let DecoderNamespace = "EXT_mmvec";
33084 }
33085 def V6_vmpauhb_acc : HInst<
33086 (outs HvxWR:$Vxx32),
33087 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
33088 "$Vxx32.w += vmpa($Vuu32.uh,$Rt32.b)",
33089 tc_660769f1, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV62]> {
33090 let Inst{7-5} = 0b010;
33091 let Inst{13-13} = 0b1;
33092 let Inst{31-21} = 0b00011001100;
33093 let hasNewValue = 1;
33094 let opNewValue = 0;
33095 let isAccumulator = 1;
33096 let DecoderNamespace = "EXT_mmvec";
33097 let Constraints = "$Vxx32 = $Vxx32in";
33098 }
33099 def V6_vmpauhb_acc_alt : HInst<
33100 (outs HvxWR:$Vxx32),
33101 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
33102 "$Vxx32 += vmpauhb($Vuu32,$Rt32)",
33103 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
33104 let hasNewValue = 1;
33105 let opNewValue = 0;
33106 let isAccumulator = 1;
33107 let isPseudo = 1;
33108 let isCodeGenOnly = 1;
33109 let DecoderNamespace = "EXT_mmvec";
33110 let Constraints = "$Vxx32 = $Vxx32in";
33111 }
33112 def V6_vmpauhb_alt : HInst<
33113 (outs HvxWR:$Vdd32),
33114 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
33115 "$Vdd32 = vmpauhb($Vuu32,$Rt32)",
33116 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
33117 let hasNewValue = 1;
33118 let opNewValue = 0;
33119 let isPseudo = 1;
33120 let isCodeGenOnly = 1;
33121 let DecoderNamespace = "EXT_mmvec";
33122 }
33123 def V6_vmpauhuhsat : HInst<
33124 (outs HvxVR:$Vx32),
33125 (ins HvxVR:$Vx32in, HvxVR:$Vu32, DoubleRegs:$Rtt32),
33126 "$Vx32.h = vmpa($Vx32in.h,$Vu32.uh,$Rtt32.uh):sat",
33127 tc_90bcc1db, TypeCVI_VX_DV>, Enc_310ba1, Requires<[UseHVXV65]> {
33128 let Inst{7-5} = 0b101;
33129 let Inst{13-13} = 0b1;
33130 let Inst{31-21} = 0b00011001100;
33131 let hasNewValue = 1;
33132 let opNewValue = 0;
33133 let DecoderNamespace = "EXT_mmvec";
33134 let Constraints = "$Vx32 = $Vx32in";
33135 }
33136 def V6_vmpsuhuhsat : HInst<
33137 (outs HvxVR:$Vx32),
33138 (ins HvxVR:$Vx32in, HvxVR:$Vu32, DoubleRegs:$Rtt32),
33139 "$Vx32.h = vmps($Vx32in.h,$Vu32.uh,$Rtt32.uh):sat",
33140 tc_90bcc1db, TypeCVI_VX_DV>, Enc_310ba1, Requires<[UseHVXV65]> {
33141 let Inst{7-5} = 0b110;
33142 let Inst{13-13} = 0b1;
33143 let Inst{31-21} = 0b00011001100;
33144 let hasNewValue = 1;
33145 let opNewValue = 0;
33146 let DecoderNamespace = "EXT_mmvec";
33147 let Constraints = "$Vx32 = $Vx32in";
33148 }
33149 def V6_vmpybus : HInst<
33150 (outs HvxWR:$Vdd32),
33151 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33152 "$Vdd32.h = vmpy($Vu32.ub,$Rt32.b)",
33153 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_01d3d0, Requires<[UseHVXV60]> {
33154 let Inst{7-5} = 0b101;
33155 let Inst{13-13} = 0b0;
33156 let Inst{31-21} = 0b00011001001;
33157 let hasNewValue = 1;
33158 let opNewValue = 0;
33159 let DecoderNamespace = "EXT_mmvec";
33160 }
33161 def V6_vmpybus_acc : HInst<
33162 (outs HvxWR:$Vxx32),
33163 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33164 "$Vxx32.h += vmpy($Vu32.ub,$Rt32.b)",
33165 tc_660769f1, TypeCVI_VX_DV>, Enc_5e8512, Requires<[UseHVXV60]> {
33166 let Inst{7-5} = 0b101;
33167 let Inst{13-13} = 0b1;
33168 let Inst{31-21} = 0b00011001001;
33169 let hasNewValue = 1;
33170 let opNewValue = 0;
33171 let isAccumulator = 1;
33172 let DecoderNamespace = "EXT_mmvec";
33173 let Constraints = "$Vxx32 = $Vxx32in";
33174 }
33175 def V6_vmpybus_acc_alt : HInst<
33176 (outs HvxWR:$Vxx32),
33177 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33178 "$Vxx32 += vmpybus($Vu32,$Rt32)",
33179 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33180 let hasNewValue = 1;
33181 let opNewValue = 0;
33182 let isAccumulator = 1;
33183 let isPseudo = 1;
33184 let isCodeGenOnly = 1;
33185 let DecoderNamespace = "EXT_mmvec";
33186 let Constraints = "$Vxx32 = $Vxx32in";
33187 }
33188 def V6_vmpybus_alt : HInst<
33189 (outs HvxWR:$Vdd32),
33190 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33191 "$Vdd32 = vmpybus($Vu32,$Rt32)",
33192 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33193 let hasNewValue = 1;
33194 let opNewValue = 0;
33195 let isPseudo = 1;
33196 let isCodeGenOnly = 1;
33197 let DecoderNamespace = "EXT_mmvec";
33198 }
33199 def V6_vmpybusv : HInst<
33200 (outs HvxWR:$Vdd32),
33201 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33202 "$Vdd32.h = vmpy($Vu32.ub,$Vv32.b)",
33203 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
33204 let Inst{7-5} = 0b110;
33205 let Inst{13-13} = 0b0;
33206 let Inst{31-21} = 0b00011100000;
33207 let hasNewValue = 1;
33208 let opNewValue = 0;
33209 let DecoderNamespace = "EXT_mmvec";
33210 }
33211 def V6_vmpybusv_acc : HInst<
33212 (outs HvxWR:$Vxx32),
33213 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33214 "$Vxx32.h += vmpy($Vu32.ub,$Vv32.b)",
33215 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV60]> {
33216 let Inst{7-5} = 0b110;
33217 let Inst{13-13} = 0b1;
33218 let Inst{31-21} = 0b00011100000;
33219 let hasNewValue = 1;
33220 let opNewValue = 0;
33221 let isAccumulator = 1;
33222 let DecoderNamespace = "EXT_mmvec";
33223 let Constraints = "$Vxx32 = $Vxx32in";
33224 }
33225 def V6_vmpybusv_acc_alt : HInst<
33226 (outs HvxWR:$Vxx32),
33227 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33228 "$Vxx32 += vmpybus($Vu32,$Vv32)",
33229 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33230 let hasNewValue = 1;
33231 let opNewValue = 0;
33232 let isAccumulator = 1;
33233 let isPseudo = 1;
33234 let isCodeGenOnly = 1;
33235 let DecoderNamespace = "EXT_mmvec";
33236 let Constraints = "$Vxx32 = $Vxx32in";
33237 }
33238 def V6_vmpybusv_alt : HInst<
33239 (outs HvxWR:$Vdd32),
33240 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33241 "$Vdd32 = vmpybus($Vu32,$Vv32)",
33242 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33243 let hasNewValue = 1;
33244 let opNewValue = 0;
33245 let isPseudo = 1;
33246 let isCodeGenOnly = 1;
33247 let DecoderNamespace = "EXT_mmvec";
33248 }
33249 def V6_vmpybv : HInst<
33250 (outs HvxWR:$Vdd32),
33251 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33252 "$Vdd32.h = vmpy($Vu32.b,$Vv32.b)",
33253 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
33254 let Inst{7-5} = 0b100;
33255 let Inst{13-13} = 0b0;
33256 let Inst{31-21} = 0b00011100000;
33257 let hasNewValue = 1;
33258 let opNewValue = 0;
33259 let DecoderNamespace = "EXT_mmvec";
33260 }
33261 def V6_vmpybv_acc : HInst<
33262 (outs HvxWR:$Vxx32),
33263 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33264 "$Vxx32.h += vmpy($Vu32.b,$Vv32.b)",
33265 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV60]> {
33266 let Inst{7-5} = 0b100;
33267 let Inst{13-13} = 0b1;
33268 let Inst{31-21} = 0b00011100000;
33269 let hasNewValue = 1;
33270 let opNewValue = 0;
33271 let isAccumulator = 1;
33272 let DecoderNamespace = "EXT_mmvec";
33273 let Constraints = "$Vxx32 = $Vxx32in";
33274 }
33275 def V6_vmpybv_acc_alt : HInst<
33276 (outs HvxWR:$Vxx32),
33277 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33278 "$Vxx32 += vmpyb($Vu32,$Vv32)",
33279 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33280 let hasNewValue = 1;
33281 let opNewValue = 0;
33282 let isAccumulator = 1;
33283 let isPseudo = 1;
33284 let isCodeGenOnly = 1;
33285 let DecoderNamespace = "EXT_mmvec";
33286 let Constraints = "$Vxx32 = $Vxx32in";
33287 }
33288 def V6_vmpybv_alt : HInst<
33289 (outs HvxWR:$Vdd32),
33290 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33291 "$Vdd32 = vmpyb($Vu32,$Vv32)",
33292 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33293 let hasNewValue = 1;
33294 let opNewValue = 0;
33295 let isPseudo = 1;
33296 let isCodeGenOnly = 1;
33297 let DecoderNamespace = "EXT_mmvec";
33298 }
33299 def V6_vmpyewuh : HInst<
33300 (outs HvxVR:$Vd32),
33301 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33302 "$Vd32.w = vmpye($Vu32.w,$Vv32.uh)",
33303 tc_d8287c14, TypeCVI_VX_DV>, Enc_45364e, Requires<[UseHVXV60]> {
33304 let Inst{7-5} = 0b101;
33305 let Inst{13-13} = 0b0;
33306 let Inst{31-21} = 0b00011111111;
33307 let hasNewValue = 1;
33308 let opNewValue = 0;
33309 let DecoderNamespace = "EXT_mmvec";
33310 }
33311 def V6_vmpyewuh_64 : HInst<
33312 (outs HvxWR:$Vdd32),
33313 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33314 "$Vdd32 = vmpye($Vu32.w,$Vv32.uh)",
33315 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV62]> {
33316 let Inst{7-5} = 0b110;
33317 let Inst{13-13} = 0b0;
33318 let Inst{31-21} = 0b00011110101;
33319 let hasNewValue = 1;
33320 let opNewValue = 0;
33321 let DecoderNamespace = "EXT_mmvec";
33322 }
33323 def V6_vmpyewuh_alt : HInst<
33324 (outs HvxVR:$Vd32),
33325 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33326 "$Vd32 = vmpyewuh($Vu32,$Vv32)",
33327 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33328 let hasNewValue = 1;
33329 let opNewValue = 0;
33330 let isPseudo = 1;
33331 let isCodeGenOnly = 1;
33332 let DecoderNamespace = "EXT_mmvec";
33333 }
33334 def V6_vmpyh : HInst<
33335 (outs HvxWR:$Vdd32),
33336 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33337 "$Vdd32.w = vmpy($Vu32.h,$Rt32.h)",
33338 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_01d3d0, Requires<[UseHVXV60]> {
33339 let Inst{7-5} = 0b000;
33340 let Inst{13-13} = 0b0;
33341 let Inst{31-21} = 0b00011001010;
33342 let hasNewValue = 1;
33343 let opNewValue = 0;
33344 let DecoderNamespace = "EXT_mmvec";
33345 }
33346 def V6_vmpyh_acc : HInst<
33347 (outs HvxWR:$Vxx32),
33348 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33349 "$Vxx32.w += vmpy($Vu32.h,$Rt32.h)",
33350 tc_660769f1, TypeCVI_VX_DV>, Enc_5e8512, Requires<[UseHVXV65]> {
33351 let Inst{7-5} = 0b110;
33352 let Inst{13-13} = 0b1;
33353 let Inst{31-21} = 0b00011001101;
33354 let hasNewValue = 1;
33355 let opNewValue = 0;
33356 let isAccumulator = 1;
33357 let DecoderNamespace = "EXT_mmvec";
33358 let Constraints = "$Vxx32 = $Vxx32in";
33359 }
33360 def V6_vmpyh_acc_alt : HInst<
33361 (outs HvxWR:$Vxx32),
33362 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33363 "$Vxx32 += vmpyh($Vu32,$Rt32)",
33364 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
33365 let hasNewValue = 1;
33366 let opNewValue = 0;
33367 let isAccumulator = 1;
33368 let isPseudo = 1;
33369 let isCodeGenOnly = 1;
33370 let DecoderNamespace = "EXT_mmvec";
33371 let Constraints = "$Vxx32 = $Vxx32in";
33372 }
33373 def V6_vmpyh_alt : HInst<
33374 (outs HvxWR:$Vdd32),
33375 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33376 "$Vdd32 = vmpyh($Vu32,$Rt32)",
33377 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33378 let hasNewValue = 1;
33379 let opNewValue = 0;
33380 let isPseudo = 1;
33381 let isCodeGenOnly = 1;
33382 let DecoderNamespace = "EXT_mmvec";
33383 }
33384 def V6_vmpyhsat_acc : HInst<
33385 (outs HvxWR:$Vxx32),
33386 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33387 "$Vxx32.w += vmpy($Vu32.h,$Rt32.h):sat",
33388 tc_660769f1, TypeCVI_VX_DV>, Enc_5e8512, Requires<[UseHVXV60]> {
33389 let Inst{7-5} = 0b000;
33390 let Inst{13-13} = 0b1;
33391 let Inst{31-21} = 0b00011001010;
33392 let hasNewValue = 1;
33393 let opNewValue = 0;
33394 let isAccumulator = 1;
33395 let DecoderNamespace = "EXT_mmvec";
33396 let Constraints = "$Vxx32 = $Vxx32in";
33397 }
33398 def V6_vmpyhsat_acc_alt : HInst<
33399 (outs HvxWR:$Vxx32),
33400 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33401 "$Vxx32 += vmpyh($Vu32,$Rt32):sat",
33402 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33403 let hasNewValue = 1;
33404 let opNewValue = 0;
33405 let isAccumulator = 1;
33406 let isPseudo = 1;
33407 let isCodeGenOnly = 1;
33408 let DecoderNamespace = "EXT_mmvec";
33409 let Constraints = "$Vxx32 = $Vxx32in";
33410 }
33411 def V6_vmpyhsrs : HInst<
33412 (outs HvxVR:$Vd32),
33413 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33414 "$Vd32.h = vmpy($Vu32.h,$Rt32.h):<<1:rnd:sat",
33415 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_b087ac, Requires<[UseHVXV60]> {
33416 let Inst{7-5} = 0b010;
33417 let Inst{13-13} = 0b0;
33418 let Inst{31-21} = 0b00011001010;
33419 let hasNewValue = 1;
33420 let opNewValue = 0;
33421 let DecoderNamespace = "EXT_mmvec";
33422 }
33423 def V6_vmpyhsrs_alt : HInst<
33424 (outs HvxVR:$Vd32),
33425 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33426 "$Vd32 = vmpyh($Vu32,$Rt32):<<1:rnd:sat",
33427 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33428 let hasNewValue = 1;
33429 let opNewValue = 0;
33430 let isPseudo = 1;
33431 let isCodeGenOnly = 1;
33432 let DecoderNamespace = "EXT_mmvec";
33433 }
33434 def V6_vmpyhss : HInst<
33435 (outs HvxVR:$Vd32),
33436 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33437 "$Vd32.h = vmpy($Vu32.h,$Rt32.h):<<1:sat",
33438 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_b087ac, Requires<[UseHVXV60]> {
33439 let Inst{7-5} = 0b001;
33440 let Inst{13-13} = 0b0;
33441 let Inst{31-21} = 0b00011001010;
33442 let hasNewValue = 1;
33443 let opNewValue = 0;
33444 let DecoderNamespace = "EXT_mmvec";
33445 }
33446 def V6_vmpyhss_alt : HInst<
33447 (outs HvxVR:$Vd32),
33448 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33449 "$Vd32 = vmpyh($Vu32,$Rt32):<<1:sat",
33450 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33451 let hasNewValue = 1;
33452 let opNewValue = 0;
33453 let isPseudo = 1;
33454 let isCodeGenOnly = 1;
33455 let DecoderNamespace = "EXT_mmvec";
33456 }
33457 def V6_vmpyhus : HInst<
33458 (outs HvxWR:$Vdd32),
33459 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33460 "$Vdd32.w = vmpy($Vu32.h,$Vv32.uh)",
33461 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
33462 let Inst{7-5} = 0b010;
33463 let Inst{13-13} = 0b0;
33464 let Inst{31-21} = 0b00011100001;
33465 let hasNewValue = 1;
33466 let opNewValue = 0;
33467 let DecoderNamespace = "EXT_mmvec";
33468 }
33469 def V6_vmpyhus_acc : HInst<
33470 (outs HvxWR:$Vxx32),
33471 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33472 "$Vxx32.w += vmpy($Vu32.h,$Vv32.uh)",
33473 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV60]> {
33474 let Inst{7-5} = 0b001;
33475 let Inst{13-13} = 0b1;
33476 let Inst{31-21} = 0b00011100001;
33477 let hasNewValue = 1;
33478 let opNewValue = 0;
33479 let isAccumulator = 1;
33480 let DecoderNamespace = "EXT_mmvec";
33481 let Constraints = "$Vxx32 = $Vxx32in";
33482 }
33483 def V6_vmpyhus_acc_alt : HInst<
33484 (outs HvxWR:$Vxx32),
33485 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33486 "$Vxx32 += vmpyhus($Vu32,$Vv32)",
33487 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33488 let hasNewValue = 1;
33489 let opNewValue = 0;
33490 let isAccumulator = 1;
33491 let isPseudo = 1;
33492 let isCodeGenOnly = 1;
33493 let DecoderNamespace = "EXT_mmvec";
33494 let Constraints = "$Vxx32 = $Vxx32in";
33495 }
33496 def V6_vmpyhus_alt : HInst<
33497 (outs HvxWR:$Vdd32),
33498 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33499 "$Vdd32 = vmpyhus($Vu32,$Vv32)",
33500 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33501 let hasNewValue = 1;
33502 let opNewValue = 0;
33503 let isPseudo = 1;
33504 let isCodeGenOnly = 1;
33505 let DecoderNamespace = "EXT_mmvec";
33506 }
33507 def V6_vmpyhv : HInst<
33508 (outs HvxWR:$Vdd32),
33509 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33510 "$Vdd32.w = vmpy($Vu32.h,$Vv32.h)",
33511 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
33512 let Inst{7-5} = 0b111;
33513 let Inst{13-13} = 0b0;
33514 let Inst{31-21} = 0b00011100000;
33515 let hasNewValue = 1;
33516 let opNewValue = 0;
33517 let DecoderNamespace = "EXT_mmvec";
33518 }
33519 def V6_vmpyhv_acc : HInst<
33520 (outs HvxWR:$Vxx32),
33521 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33522 "$Vxx32.w += vmpy($Vu32.h,$Vv32.h)",
33523 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV60]> {
33524 let Inst{7-5} = 0b111;
33525 let Inst{13-13} = 0b1;
33526 let Inst{31-21} = 0b00011100000;
33527 let hasNewValue = 1;
33528 let opNewValue = 0;
33529 let isAccumulator = 1;
33530 let DecoderNamespace = "EXT_mmvec";
33531 let Constraints = "$Vxx32 = $Vxx32in";
33532 }
33533 def V6_vmpyhv_acc_alt : HInst<
33534 (outs HvxWR:$Vxx32),
33535 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33536 "$Vxx32 += vmpyh($Vu32,$Vv32)",
33537 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33538 let hasNewValue = 1;
33539 let opNewValue = 0;
33540 let isAccumulator = 1;
33541 let isPseudo = 1;
33542 let isCodeGenOnly = 1;
33543 let DecoderNamespace = "EXT_mmvec";
33544 let Constraints = "$Vxx32 = $Vxx32in";
33545 }
33546 def V6_vmpyhv_alt : HInst<
33547 (outs HvxWR:$Vdd32),
33548 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33549 "$Vdd32 = vmpyh($Vu32,$Vv32)",
33550 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33551 let hasNewValue = 1;
33552 let opNewValue = 0;
33553 let isPseudo = 1;
33554 let isCodeGenOnly = 1;
33555 let DecoderNamespace = "EXT_mmvec";
33556 }
33557 def V6_vmpyhvsrs : HInst<
33558 (outs HvxVR:$Vd32),
33559 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33560 "$Vd32.h = vmpy($Vu32.h,$Vv32.h):<<1:rnd:sat",
33561 tc_d8287c14, TypeCVI_VX_DV>, Enc_45364e, Requires<[UseHVXV60]> {
33562 let Inst{7-5} = 0b001;
33563 let Inst{13-13} = 0b0;
33564 let Inst{31-21} = 0b00011100001;
33565 let hasNewValue = 1;
33566 let opNewValue = 0;
33567 let DecoderNamespace = "EXT_mmvec";
33568 }
33569 def V6_vmpyhvsrs_alt : HInst<
33570 (outs HvxVR:$Vd32),
33571 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33572 "$Vd32 = vmpyh($Vu32,$Vv32):<<1:rnd:sat",
33573 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33574 let hasNewValue = 1;
33575 let opNewValue = 0;
33576 let isPseudo = 1;
33577 let isCodeGenOnly = 1;
33578 let DecoderNamespace = "EXT_mmvec";
33579 }
33580 def V6_vmpyieoh : HInst<
33581 (outs HvxVR:$Vd32),
33582 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33583 "$Vd32.w = vmpyieo($Vu32.h,$Vv32.h)",
33584 tc_c127de3a, TypeCVI_VX>, Enc_45364e, Requires<[UseHVXV60]> {
33585 let Inst{7-5} = 0b000;
33586 let Inst{13-13} = 0b0;
33587 let Inst{31-21} = 0b00011111011;
33588 let hasNewValue = 1;
33589 let opNewValue = 0;
33590 let DecoderNamespace = "EXT_mmvec";
33591 }
33592 def V6_vmpyiewh_acc : HInst<
33593 (outs HvxVR:$Vx32),
33594 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33595 "$Vx32.w += vmpyie($Vu32.w,$Vv32.h)",
33596 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
33597 let Inst{7-5} = 0b000;
33598 let Inst{13-13} = 0b1;
33599 let Inst{31-21} = 0b00011100010;
33600 let hasNewValue = 1;
33601 let opNewValue = 0;
33602 let isAccumulator = 1;
33603 let DecoderNamespace = "EXT_mmvec";
33604 let Constraints = "$Vx32 = $Vx32in";
33605 }
33606 def V6_vmpyiewh_acc_alt : HInst<
33607 (outs HvxVR:$Vx32),
33608 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33609 "$Vx32 += vmpyiewh($Vu32,$Vv32)",
33610 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33611 let hasNewValue = 1;
33612 let opNewValue = 0;
33613 let isAccumulator = 1;
33614 let isPseudo = 1;
33615 let isCodeGenOnly = 1;
33616 let DecoderNamespace = "EXT_mmvec";
33617 let Constraints = "$Vx32 = $Vx32in";
33618 }
33619 def V6_vmpyiewuh : HInst<
33620 (outs HvxVR:$Vd32),
33621 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33622 "$Vd32.w = vmpyie($Vu32.w,$Vv32.uh)",
33623 tc_d8287c14, TypeCVI_VX_DV>, Enc_45364e, Requires<[UseHVXV60]> {
33624 let Inst{7-5} = 0b000;
33625 let Inst{13-13} = 0b0;
33626 let Inst{31-21} = 0b00011111110;
33627 let hasNewValue = 1;
33628 let opNewValue = 0;
33629 let DecoderNamespace = "EXT_mmvec";
33630 }
33631 def V6_vmpyiewuh_acc : HInst<
33632 (outs HvxVR:$Vx32),
33633 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33634 "$Vx32.w += vmpyie($Vu32.w,$Vv32.uh)",
33635 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
33636 let Inst{7-5} = 0b101;
33637 let Inst{13-13} = 0b1;
33638 let Inst{31-21} = 0b00011100001;
33639 let hasNewValue = 1;
33640 let opNewValue = 0;
33641 let isAccumulator = 1;
33642 let DecoderNamespace = "EXT_mmvec";
33643 let Constraints = "$Vx32 = $Vx32in";
33644 }
33645 def V6_vmpyiewuh_acc_alt : HInst<
33646 (outs HvxVR:$Vx32),
33647 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33648 "$Vx32 += vmpyiewuh($Vu32,$Vv32)",
33649 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33650 let hasNewValue = 1;
33651 let opNewValue = 0;
33652 let isAccumulator = 1;
33653 let isPseudo = 1;
33654 let isCodeGenOnly = 1;
33655 let DecoderNamespace = "EXT_mmvec";
33656 let Constraints = "$Vx32 = $Vx32in";
33657 }
33658 def V6_vmpyiewuh_alt : HInst<
33659 (outs HvxVR:$Vd32),
33660 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33661 "$Vd32 = vmpyiewuh($Vu32,$Vv32)",
33662 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33663 let hasNewValue = 1;
33664 let opNewValue = 0;
33665 let isPseudo = 1;
33666 let isCodeGenOnly = 1;
33667 let DecoderNamespace = "EXT_mmvec";
33668 }
33669 def V6_vmpyih : HInst<
33670 (outs HvxVR:$Vd32),
33671 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33672 "$Vd32.h = vmpyi($Vu32.h,$Vv32.h)",
33673 tc_d8287c14, TypeCVI_VX_DV>, Enc_45364e, Requires<[UseHVXV60]> {
33674 let Inst{7-5} = 0b100;
33675 let Inst{13-13} = 0b0;
33676 let Inst{31-21} = 0b00011100001;
33677 let hasNewValue = 1;
33678 let opNewValue = 0;
33679 let DecoderNamespace = "EXT_mmvec";
33680 }
33681 def V6_vmpyih_acc : HInst<
33682 (outs HvxVR:$Vx32),
33683 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33684 "$Vx32.h += vmpyi($Vu32.h,$Vv32.h)",
33685 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
33686 let Inst{7-5} = 0b100;
33687 let Inst{13-13} = 0b1;
33688 let Inst{31-21} = 0b00011100001;
33689 let hasNewValue = 1;
33690 let opNewValue = 0;
33691 let isAccumulator = 1;
33692 let DecoderNamespace = "EXT_mmvec";
33693 let Constraints = "$Vx32 = $Vx32in";
33694 }
33695 def V6_vmpyih_acc_alt : HInst<
33696 (outs HvxVR:$Vx32),
33697 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33698 "$Vx32 += vmpyih($Vu32,$Vv32)",
33699 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33700 let hasNewValue = 1;
33701 let opNewValue = 0;
33702 let isAccumulator = 1;
33703 let isPseudo = 1;
33704 let isCodeGenOnly = 1;
33705 let DecoderNamespace = "EXT_mmvec";
33706 let Constraints = "$Vx32 = $Vx32in";
33707 }
33708 def V6_vmpyih_alt : HInst<
33709 (outs HvxVR:$Vd32),
33710 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33711 "$Vd32 = vmpyih($Vu32,$Vv32)",
33712 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33713 let hasNewValue = 1;
33714 let opNewValue = 0;
33715 let isPseudo = 1;
33716 let isCodeGenOnly = 1;
33717 let DecoderNamespace = "EXT_mmvec";
33718 }
33719 def V6_vmpyihb : HInst<
33720 (outs HvxVR:$Vd32),
33721 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33722 "$Vd32.h = vmpyi($Vu32.h,$Rt32.b)",
33723 tc_649072c2, TypeCVI_VX>, Enc_b087ac, Requires<[UseHVXV60]> {
33724 let Inst{7-5} = 0b000;
33725 let Inst{13-13} = 0b0;
33726 let Inst{31-21} = 0b00011001011;
33727 let hasNewValue = 1;
33728 let opNewValue = 0;
33729 let DecoderNamespace = "EXT_mmvec";
33730 }
33731 def V6_vmpyihb_acc : HInst<
33732 (outs HvxVR:$Vx32),
33733 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33734 "$Vx32.h += vmpyi($Vu32.h,$Rt32.b)",
33735 tc_b091f1c6, TypeCVI_VX>, Enc_5138b3, Requires<[UseHVXV60]> {
33736 let Inst{7-5} = 0b001;
33737 let Inst{13-13} = 0b1;
33738 let Inst{31-21} = 0b00011001011;
33739 let hasNewValue = 1;
33740 let opNewValue = 0;
33741 let isAccumulator = 1;
33742 let DecoderNamespace = "EXT_mmvec";
33743 let Constraints = "$Vx32 = $Vx32in";
33744 }
33745 def V6_vmpyihb_acc_alt : HInst<
33746 (outs HvxVR:$Vx32),
33747 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33748 "$Vx32 += vmpyihb($Vu32,$Rt32)",
33749 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33750 let hasNewValue = 1;
33751 let opNewValue = 0;
33752 let isAccumulator = 1;
33753 let isPseudo = 1;
33754 let isCodeGenOnly = 1;
33755 let DecoderNamespace = "EXT_mmvec";
33756 let Constraints = "$Vx32 = $Vx32in";
33757 }
33758 def V6_vmpyihb_alt : HInst<
33759 (outs HvxVR:$Vd32),
33760 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33761 "$Vd32 = vmpyihb($Vu32,$Rt32)",
33762 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33763 let hasNewValue = 1;
33764 let opNewValue = 0;
33765 let isPseudo = 1;
33766 let isCodeGenOnly = 1;
33767 let DecoderNamespace = "EXT_mmvec";
33768 }
33769 def V6_vmpyiowh : HInst<
33770 (outs HvxVR:$Vd32),
33771 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33772 "$Vd32.w = vmpyio($Vu32.w,$Vv32.h)",
33773 tc_d8287c14, TypeCVI_VX_DV>, Enc_45364e, Requires<[UseHVXV60]> {
33774 let Inst{7-5} = 0b001;
33775 let Inst{13-13} = 0b0;
33776 let Inst{31-21} = 0b00011111110;
33777 let hasNewValue = 1;
33778 let opNewValue = 0;
33779 let DecoderNamespace = "EXT_mmvec";
33780 }
33781 def V6_vmpyiowh_alt : HInst<
33782 (outs HvxVR:$Vd32),
33783 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33784 "$Vd32 = vmpyiowh($Vu32,$Vv32)",
33785 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33786 let hasNewValue = 1;
33787 let opNewValue = 0;
33788 let isPseudo = 1;
33789 let isCodeGenOnly = 1;
33790 let DecoderNamespace = "EXT_mmvec";
33791 }
33792 def V6_vmpyiwb : HInst<
33793 (outs HvxVR:$Vd32),
33794 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33795 "$Vd32.w = vmpyi($Vu32.w,$Rt32.b)",
33796 tc_649072c2, TypeCVI_VX>, Enc_b087ac, Requires<[UseHVXV60]> {
33797 let Inst{7-5} = 0b000;
33798 let Inst{13-13} = 0b0;
33799 let Inst{31-21} = 0b00011001101;
33800 let hasNewValue = 1;
33801 let opNewValue = 0;
33802 let DecoderNamespace = "EXT_mmvec";
33803 }
33804 def V6_vmpyiwb_acc : HInst<
33805 (outs HvxVR:$Vx32),
33806 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33807 "$Vx32.w += vmpyi($Vu32.w,$Rt32.b)",
33808 tc_b091f1c6, TypeCVI_VX>, Enc_5138b3, Requires<[UseHVXV60]> {
33809 let Inst{7-5} = 0b010;
33810 let Inst{13-13} = 0b1;
33811 let Inst{31-21} = 0b00011001010;
33812 let hasNewValue = 1;
33813 let opNewValue = 0;
33814 let isAccumulator = 1;
33815 let DecoderNamespace = "EXT_mmvec";
33816 let Constraints = "$Vx32 = $Vx32in";
33817 }
33818 def V6_vmpyiwb_acc_alt : HInst<
33819 (outs HvxVR:$Vx32),
33820 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33821 "$Vx32 += vmpyiwb($Vu32,$Rt32)",
33822 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33823 let hasNewValue = 1;
33824 let opNewValue = 0;
33825 let isAccumulator = 1;
33826 let isPseudo = 1;
33827 let isCodeGenOnly = 1;
33828 let DecoderNamespace = "EXT_mmvec";
33829 let Constraints = "$Vx32 = $Vx32in";
33830 }
33831 def V6_vmpyiwb_alt : HInst<
33832 (outs HvxVR:$Vd32),
33833 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33834 "$Vd32 = vmpyiwb($Vu32,$Rt32)",
33835 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33836 let hasNewValue = 1;
33837 let opNewValue = 0;
33838 let isPseudo = 1;
33839 let isCodeGenOnly = 1;
33840 let DecoderNamespace = "EXT_mmvec";
33841 }
33842 def V6_vmpyiwh : HInst<
33843 (outs HvxVR:$Vd32),
33844 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33845 "$Vd32.w = vmpyi($Vu32.w,$Rt32.h)",
33846 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_b087ac, Requires<[UseHVXV60]> {
33847 let Inst{7-5} = 0b111;
33848 let Inst{13-13} = 0b0;
33849 let Inst{31-21} = 0b00011001100;
33850 let hasNewValue = 1;
33851 let opNewValue = 0;
33852 let DecoderNamespace = "EXT_mmvec";
33853 }
33854 def V6_vmpyiwh_acc : HInst<
33855 (outs HvxVR:$Vx32),
33856 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33857 "$Vx32.w += vmpyi($Vu32.w,$Rt32.h)",
33858 tc_660769f1, TypeCVI_VX_DV>, Enc_5138b3, Requires<[UseHVXV60]> {
33859 let Inst{7-5} = 0b011;
33860 let Inst{13-13} = 0b1;
33861 let Inst{31-21} = 0b00011001010;
33862 let hasNewValue = 1;
33863 let opNewValue = 0;
33864 let isAccumulator = 1;
33865 let DecoderNamespace = "EXT_mmvec";
33866 let Constraints = "$Vx32 = $Vx32in";
33867 }
33868 def V6_vmpyiwh_acc_alt : HInst<
33869 (outs HvxVR:$Vx32),
33870 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33871 "$Vx32 += vmpyiwh($Vu32,$Rt32)",
33872 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33873 let hasNewValue = 1;
33874 let opNewValue = 0;
33875 let isAccumulator = 1;
33876 let isPseudo = 1;
33877 let isCodeGenOnly = 1;
33878 let DecoderNamespace = "EXT_mmvec";
33879 let Constraints = "$Vx32 = $Vx32in";
33880 }
33881 def V6_vmpyiwh_alt : HInst<
33882 (outs HvxVR:$Vd32),
33883 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33884 "$Vd32 = vmpyiwh($Vu32,$Rt32)",
33885 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33886 let hasNewValue = 1;
33887 let opNewValue = 0;
33888 let isPseudo = 1;
33889 let isCodeGenOnly = 1;
33890 let DecoderNamespace = "EXT_mmvec";
33891 }
33892 def V6_vmpyiwub : HInst<
33893 (outs HvxVR:$Vd32),
33894 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33895 "$Vd32.w = vmpyi($Vu32.w,$Rt32.ub)",
33896 tc_649072c2, TypeCVI_VX>, Enc_b087ac, Requires<[UseHVXV62]> {
33897 let Inst{7-5} = 0b110;
33898 let Inst{13-13} = 0b0;
33899 let Inst{31-21} = 0b00011001100;
33900 let hasNewValue = 1;
33901 let opNewValue = 0;
33902 let DecoderNamespace = "EXT_mmvec";
33903 }
33904 def V6_vmpyiwub_acc : HInst<
33905 (outs HvxVR:$Vx32),
33906 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33907 "$Vx32.w += vmpyi($Vu32.w,$Rt32.ub)",
33908 tc_b091f1c6, TypeCVI_VX>, Enc_5138b3, Requires<[UseHVXV62]> {
33909 let Inst{7-5} = 0b001;
33910 let Inst{13-13} = 0b1;
33911 let Inst{31-21} = 0b00011001100;
33912 let hasNewValue = 1;
33913 let opNewValue = 0;
33914 let isAccumulator = 1;
33915 let DecoderNamespace = "EXT_mmvec";
33916 let Constraints = "$Vx32 = $Vx32in";
33917 }
33918 def V6_vmpyiwub_acc_alt : HInst<
33919 (outs HvxVR:$Vx32),
33920 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
33921 "$Vx32 += vmpyiwub($Vu32,$Rt32)",
33922 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
33923 let hasNewValue = 1;
33924 let opNewValue = 0;
33925 let isAccumulator = 1;
33926 let isPseudo = 1;
33927 let isCodeGenOnly = 1;
33928 let DecoderNamespace = "EXT_mmvec";
33929 let Constraints = "$Vx32 = $Vx32in";
33930 }
33931 def V6_vmpyiwub_alt : HInst<
33932 (outs HvxVR:$Vd32),
33933 (ins HvxVR:$Vu32, IntRegs:$Rt32),
33934 "$Vd32 = vmpyiwub($Vu32,$Rt32)",
33935 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
33936 let hasNewValue = 1;
33937 let opNewValue = 0;
33938 let isPseudo = 1;
33939 let isCodeGenOnly = 1;
33940 let DecoderNamespace = "EXT_mmvec";
33941 }
33942 def V6_vmpyowh : HInst<
33943 (outs HvxVR:$Vd32),
33944 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33945 "$Vd32.w = vmpyo($Vu32.w,$Vv32.h):<<1:sat",
33946 tc_d8287c14, TypeCVI_VX_DV>, Enc_45364e, Requires<[UseHVXV60]> {
33947 let Inst{7-5} = 0b111;
33948 let Inst{13-13} = 0b0;
33949 let Inst{31-21} = 0b00011111111;
33950 let hasNewValue = 1;
33951 let opNewValue = 0;
33952 let DecoderNamespace = "EXT_mmvec";
33953 }
33954 def V6_vmpyowh_64_acc : HInst<
33955 (outs HvxWR:$Vxx32),
33956 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
33957 "$Vxx32 += vmpyo($Vu32.w,$Vv32.h)",
33958 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV62]> {
33959 let Inst{7-5} = 0b011;
33960 let Inst{13-13} = 0b1;
33961 let Inst{31-21} = 0b00011100001;
33962 let hasNewValue = 1;
33963 let opNewValue = 0;
33964 let isAccumulator = 1;
33965 let DecoderNamespace = "EXT_mmvec";
33966 let Constraints = "$Vxx32 = $Vxx32in";
33967 }
33968 def V6_vmpyowh_alt : HInst<
33969 (outs HvxVR:$Vd32),
33970 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33971 "$Vd32 = vmpyowh($Vu32,$Vv32):<<1:sat",
33972 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33973 let hasNewValue = 1;
33974 let opNewValue = 0;
33975 let isPseudo = 1;
33976 let isCodeGenOnly = 1;
33977 let DecoderNamespace = "EXT_mmvec";
33978 }
33979 def V6_vmpyowh_rnd : HInst<
33980 (outs HvxVR:$Vd32),
33981 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33982 "$Vd32.w = vmpyo($Vu32.w,$Vv32.h):<<1:rnd:sat",
33983 tc_d8287c14, TypeCVI_VX_DV>, Enc_45364e, Requires<[UseHVXV60]> {
33984 let Inst{7-5} = 0b000;
33985 let Inst{13-13} = 0b0;
33986 let Inst{31-21} = 0b00011111010;
33987 let hasNewValue = 1;
33988 let opNewValue = 0;
33989 let DecoderNamespace = "EXT_mmvec";
33990 }
33991 def V6_vmpyowh_rnd_alt : HInst<
33992 (outs HvxVR:$Vd32),
33993 (ins HvxVR:$Vu32, HvxVR:$Vv32),
33994 "$Vd32 = vmpyowh($Vu32,$Vv32):<<1:rnd:sat",
33995 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
33996 let hasNewValue = 1;
33997 let opNewValue = 0;
33998 let isPseudo = 1;
33999 let isCodeGenOnly = 1;
34000 let DecoderNamespace = "EXT_mmvec";
34001 }
34002 def V6_vmpyowh_rnd_sacc : HInst<
34003 (outs HvxVR:$Vx32),
34004 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34005 "$Vx32.w += vmpyo($Vu32.w,$Vv32.h):<<1:rnd:sat:shift",
34006 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
34007 let Inst{7-5} = 0b111;
34008 let Inst{13-13} = 0b1;
34009 let Inst{31-21} = 0b00011100001;
34010 let hasNewValue = 1;
34011 let opNewValue = 0;
34012 let isAccumulator = 1;
34013 let DecoderNamespace = "EXT_mmvec";
34014 let Constraints = "$Vx32 = $Vx32in";
34015 }
34016 def V6_vmpyowh_rnd_sacc_alt : HInst<
34017 (outs HvxVR:$Vx32),
34018 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34019 "$Vx32 += vmpyowh($Vu32,$Vv32):<<1:rnd:sat:shift",
34020 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34021 let hasNewValue = 1;
34022 let opNewValue = 0;
34023 let isAccumulator = 1;
34024 let isPseudo = 1;
34025 let DecoderNamespace = "EXT_mmvec";
34026 let Constraints = "$Vx32 = $Vx32in";
34027 }
34028 def V6_vmpyowh_sacc : HInst<
34029 (outs HvxVR:$Vx32),
34030 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34031 "$Vx32.w += vmpyo($Vu32.w,$Vv32.h):<<1:sat:shift",
34032 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
34033 let Inst{7-5} = 0b110;
34034 let Inst{13-13} = 0b1;
34035 let Inst{31-21} = 0b00011100001;
34036 let hasNewValue = 1;
34037 let opNewValue = 0;
34038 let isAccumulator = 1;
34039 let DecoderNamespace = "EXT_mmvec";
34040 let Constraints = "$Vx32 = $Vx32in";
34041 }
34042 def V6_vmpyowh_sacc_alt : HInst<
34043 (outs HvxVR:$Vx32),
34044 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34045 "$Vx32 += vmpyowh($Vu32,$Vv32):<<1:sat:shift",
34046 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34047 let hasNewValue = 1;
34048 let opNewValue = 0;
34049 let isAccumulator = 1;
34050 let isPseudo = 1;
34051 let DecoderNamespace = "EXT_mmvec";
34052 let Constraints = "$Vx32 = $Vx32in";
34053 }
34054 def V6_vmpyub : HInst<
34055 (outs HvxWR:$Vdd32),
34056 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34057 "$Vdd32.uh = vmpy($Vu32.ub,$Rt32.ub)",
34058 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_01d3d0, Requires<[UseHVXV60]> {
34059 let Inst{7-5} = 0b000;
34060 let Inst{13-13} = 0b0;
34061 let Inst{31-21} = 0b00011001110;
34062 let hasNewValue = 1;
34063 let opNewValue = 0;
34064 let DecoderNamespace = "EXT_mmvec";
34065 }
34066 def V6_vmpyub_acc : HInst<
34067 (outs HvxWR:$Vxx32),
34068 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34069 "$Vxx32.uh += vmpy($Vu32.ub,$Rt32.ub)",
34070 tc_660769f1, TypeCVI_VX_DV>, Enc_5e8512, Requires<[UseHVXV60]> {
34071 let Inst{7-5} = 0b000;
34072 let Inst{13-13} = 0b1;
34073 let Inst{31-21} = 0b00011001100;
34074 let hasNewValue = 1;
34075 let opNewValue = 0;
34076 let isAccumulator = 1;
34077 let DecoderNamespace = "EXT_mmvec";
34078 let Constraints = "$Vxx32 = $Vxx32in";
34079 }
34080 def V6_vmpyub_acc_alt : HInst<
34081 (outs HvxWR:$Vxx32),
34082 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34083 "$Vxx32 += vmpyub($Vu32,$Rt32)",
34084 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34085 let hasNewValue = 1;
34086 let opNewValue = 0;
34087 let isAccumulator = 1;
34088 let isPseudo = 1;
34089 let isCodeGenOnly = 1;
34090 let DecoderNamespace = "EXT_mmvec";
34091 let Constraints = "$Vxx32 = $Vxx32in";
34092 }
34093 def V6_vmpyub_alt : HInst<
34094 (outs HvxWR:$Vdd32),
34095 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34096 "$Vdd32 = vmpyub($Vu32,$Rt32)",
34097 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34098 let hasNewValue = 1;
34099 let opNewValue = 0;
34100 let isPseudo = 1;
34101 let isCodeGenOnly = 1;
34102 let DecoderNamespace = "EXT_mmvec";
34103 }
34104 def V6_vmpyubv : HInst<
34105 (outs HvxWR:$Vdd32),
34106 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34107 "$Vdd32.uh = vmpy($Vu32.ub,$Vv32.ub)",
34108 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
34109 let Inst{7-5} = 0b101;
34110 let Inst{13-13} = 0b0;
34111 let Inst{31-21} = 0b00011100000;
34112 let hasNewValue = 1;
34113 let opNewValue = 0;
34114 let DecoderNamespace = "EXT_mmvec";
34115 }
34116 def V6_vmpyubv_acc : HInst<
34117 (outs HvxWR:$Vxx32),
34118 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34119 "$Vxx32.uh += vmpy($Vu32.ub,$Vv32.ub)",
34120 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV60]> {
34121 let Inst{7-5} = 0b101;
34122 let Inst{13-13} = 0b1;
34123 let Inst{31-21} = 0b00011100000;
34124 let hasNewValue = 1;
34125 let opNewValue = 0;
34126 let isAccumulator = 1;
34127 let DecoderNamespace = "EXT_mmvec";
34128 let Constraints = "$Vxx32 = $Vxx32in";
34129 }
34130 def V6_vmpyubv_acc_alt : HInst<
34131 (outs HvxWR:$Vxx32),
34132 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34133 "$Vxx32 += vmpyub($Vu32,$Vv32)",
34134 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34135 let hasNewValue = 1;
34136 let opNewValue = 0;
34137 let isAccumulator = 1;
34138 let isPseudo = 1;
34139 let isCodeGenOnly = 1;
34140 let DecoderNamespace = "EXT_mmvec";
34141 let Constraints = "$Vxx32 = $Vxx32in";
34142 }
34143 def V6_vmpyubv_alt : HInst<
34144 (outs HvxWR:$Vdd32),
34145 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34146 "$Vdd32 = vmpyub($Vu32,$Vv32)",
34147 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34148 let hasNewValue = 1;
34149 let opNewValue = 0;
34150 let isPseudo = 1;
34151 let isCodeGenOnly = 1;
34152 let DecoderNamespace = "EXT_mmvec";
34153 }
34154 def V6_vmpyuh : HInst<
34155 (outs HvxWR:$Vdd32),
34156 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34157 "$Vdd32.uw = vmpy($Vu32.uh,$Rt32.uh)",
34158 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_01d3d0, Requires<[UseHVXV60]> {
34159 let Inst{7-5} = 0b011;
34160 let Inst{13-13} = 0b0;
34161 let Inst{31-21} = 0b00011001010;
34162 let hasNewValue = 1;
34163 let opNewValue = 0;
34164 let DecoderNamespace = "EXT_mmvec";
34165 }
34166 def V6_vmpyuh_acc : HInst<
34167 (outs HvxWR:$Vxx32),
34168 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34169 "$Vxx32.uw += vmpy($Vu32.uh,$Rt32.uh)",
34170 tc_660769f1, TypeCVI_VX_DV>, Enc_5e8512, Requires<[UseHVXV60]> {
34171 let Inst{7-5} = 0b001;
34172 let Inst{13-13} = 0b1;
34173 let Inst{31-21} = 0b00011001010;
34174 let hasNewValue = 1;
34175 let opNewValue = 0;
34176 let isAccumulator = 1;
34177 let DecoderNamespace = "EXT_mmvec";
34178 let Constraints = "$Vxx32 = $Vxx32in";
34179 }
34180 def V6_vmpyuh_acc_alt : HInst<
34181 (outs HvxWR:$Vxx32),
34182 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34183 "$Vxx32 += vmpyuh($Vu32,$Rt32)",
34184 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34185 let hasNewValue = 1;
34186 let opNewValue = 0;
34187 let isAccumulator = 1;
34188 let isPseudo = 1;
34189 let isCodeGenOnly = 1;
34190 let DecoderNamespace = "EXT_mmvec";
34191 let Constraints = "$Vxx32 = $Vxx32in";
34192 }
34193 def V6_vmpyuh_alt : HInst<
34194 (outs HvxWR:$Vdd32),
34195 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34196 "$Vdd32 = vmpyuh($Vu32,$Rt32)",
34197 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34198 let hasNewValue = 1;
34199 let opNewValue = 0;
34200 let isPseudo = 1;
34201 let isCodeGenOnly = 1;
34202 let DecoderNamespace = "EXT_mmvec";
34203 }
34204 def V6_vmpyuhe : HInst<
34205 (outs HvxVR:$Vd32),
34206 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34207 "$Vd32.uw = vmpye($Vu32.uh,$Rt32.uh)",
34208 tc_649072c2, TypeCVI_VX>, Enc_b087ac, Requires<[UseHVXV65]> {
34209 let Inst{7-5} = 0b010;
34210 let Inst{13-13} = 0b0;
34211 let Inst{31-21} = 0b00011001011;
34212 let hasNewValue = 1;
34213 let opNewValue = 0;
34214 let DecoderNamespace = "EXT_mmvec";
34215 }
34216 def V6_vmpyuhe_acc : HInst<
34217 (outs HvxVR:$Vx32),
34218 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34219 "$Vx32.uw += vmpye($Vu32.uh,$Rt32.uh)",
34220 tc_b091f1c6, TypeCVI_VX>, Enc_5138b3, Requires<[UseHVXV65]> {
34221 let Inst{7-5} = 0b011;
34222 let Inst{13-13} = 0b1;
34223 let Inst{31-21} = 0b00011001100;
34224 let hasNewValue = 1;
34225 let opNewValue = 0;
34226 let isAccumulator = 1;
34227 let DecoderNamespace = "EXT_mmvec";
34228 let Constraints = "$Vx32 = $Vx32in";
34229 }
34230 def V6_vmpyuhv : HInst<
34231 (outs HvxWR:$Vdd32),
34232 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34233 "$Vdd32.uw = vmpy($Vu32.uh,$Vv32.uh)",
34234 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
34235 let Inst{7-5} = 0b000;
34236 let Inst{13-13} = 0b0;
34237 let Inst{31-21} = 0b00011100001;
34238 let hasNewValue = 1;
34239 let opNewValue = 0;
34240 let DecoderNamespace = "EXT_mmvec";
34241 }
34242 def V6_vmpyuhv_acc : HInst<
34243 (outs HvxWR:$Vxx32),
34244 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34245 "$Vxx32.uw += vmpy($Vu32.uh,$Vv32.uh)",
34246 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_3fc427, Requires<[UseHVXV60]> {
34247 let Inst{7-5} = 0b000;
34248 let Inst{13-13} = 0b1;
34249 let Inst{31-21} = 0b00011100001;
34250 let hasNewValue = 1;
34251 let opNewValue = 0;
34252 let isAccumulator = 1;
34253 let DecoderNamespace = "EXT_mmvec";
34254 let Constraints = "$Vxx32 = $Vxx32in";
34255 }
34256 def V6_vmpyuhv_acc_alt : HInst<
34257 (outs HvxWR:$Vxx32),
34258 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34259 "$Vxx32 += vmpyuh($Vu32,$Vv32)",
34260 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34261 let hasNewValue = 1;
34262 let opNewValue = 0;
34263 let isAccumulator = 1;
34264 let isPseudo = 1;
34265 let isCodeGenOnly = 1;
34266 let DecoderNamespace = "EXT_mmvec";
34267 let Constraints = "$Vxx32 = $Vxx32in";
34268 }
34269 def V6_vmpyuhv_alt : HInst<
34270 (outs HvxWR:$Vdd32),
34271 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34272 "$Vdd32 = vmpyuh($Vu32,$Vv32)",
34273 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34274 let hasNewValue = 1;
34275 let opNewValue = 0;
34276 let isPseudo = 1;
34277 let isCodeGenOnly = 1;
34278 let DecoderNamespace = "EXT_mmvec";
34279 }
34280 def V6_vmux : HInst<
34281 (outs HvxVR:$Vd32),
34282 (ins HvxQR:$Qt4, HvxVR:$Vu32, HvxVR:$Vv32),
34283 "$Vd32 = vmux($Qt4,$Vu32,$Vv32)",
34284 tc_257f6f7c, TypeCVI_VA>, Enc_31db33, Requires<[UseHVXV60]> {
34285 let Inst{7-7} = 0b0;
34286 let Inst{13-13} = 0b1;
34287 let Inst{31-21} = 0b00011110111;
34288 let hasNewValue = 1;
34289 let opNewValue = 0;
34290 let DecoderNamespace = "EXT_mmvec";
34291 }
34292 def V6_vnavgb : HInst<
34293 (outs HvxVR:$Vd32),
34294 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34295 "$Vd32.b = vnavg($Vu32.b,$Vv32.b)",
34296 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV65]> {
34297 let Inst{7-5} = 0b110;
34298 let Inst{13-13} = 0b1;
34299 let Inst{31-21} = 0b00011111000;
34300 let hasNewValue = 1;
34301 let opNewValue = 0;
34302 let DecoderNamespace = "EXT_mmvec";
34303 }
34304 def V6_vnavgb_alt : HInst<
34305 (outs HvxVR:$Vd32),
34306 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34307 "$Vd32 = vnavgb($Vu32,$Vv32)",
34308 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
34309 let hasNewValue = 1;
34310 let opNewValue = 0;
34311 let isPseudo = 1;
34312 let isCodeGenOnly = 1;
34313 let DecoderNamespace = "EXT_mmvec";
34314 }
34315 def V6_vnavgh : HInst<
34316 (outs HvxVR:$Vd32),
34317 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34318 "$Vd32.h = vnavg($Vu32.h,$Vv32.h)",
34319 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
34320 let Inst{7-5} = 0b001;
34321 let Inst{13-13} = 0b0;
34322 let Inst{31-21} = 0b00011100111;
34323 let hasNewValue = 1;
34324 let opNewValue = 0;
34325 let DecoderNamespace = "EXT_mmvec";
34326 }
34327 def V6_vnavgh_alt : HInst<
34328 (outs HvxVR:$Vd32),
34329 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34330 "$Vd32 = vnavgh($Vu32,$Vv32)",
34331 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34332 let hasNewValue = 1;
34333 let opNewValue = 0;
34334 let isPseudo = 1;
34335 let isCodeGenOnly = 1;
34336 let DecoderNamespace = "EXT_mmvec";
34337 }
34338 def V6_vnavgub : HInst<
34339 (outs HvxVR:$Vd32),
34340 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34341 "$Vd32.b = vnavg($Vu32.ub,$Vv32.ub)",
34342 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
34343 let Inst{7-5} = 0b000;
34344 let Inst{13-13} = 0b0;
34345 let Inst{31-21} = 0b00011100111;
34346 let hasNewValue = 1;
34347 let opNewValue = 0;
34348 let DecoderNamespace = "EXT_mmvec";
34349 }
34350 def V6_vnavgub_alt : HInst<
34351 (outs HvxVR:$Vd32),
34352 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34353 "$Vd32 = vnavgub($Vu32,$Vv32)",
34354 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34355 let hasNewValue = 1;
34356 let opNewValue = 0;
34357 let isPseudo = 1;
34358 let isCodeGenOnly = 1;
34359 let DecoderNamespace = "EXT_mmvec";
34360 }
34361 def V6_vnavgw : HInst<
34362 (outs HvxVR:$Vd32),
34363 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34364 "$Vd32.w = vnavg($Vu32.w,$Vv32.w)",
34365 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
34366 let Inst{7-5} = 0b010;
34367 let Inst{13-13} = 0b0;
34368 let Inst{31-21} = 0b00011100111;
34369 let hasNewValue = 1;
34370 let opNewValue = 0;
34371 let DecoderNamespace = "EXT_mmvec";
34372 }
34373 def V6_vnavgw_alt : HInst<
34374 (outs HvxVR:$Vd32),
34375 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34376 "$Vd32 = vnavgw($Vu32,$Vv32)",
34377 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34378 let hasNewValue = 1;
34379 let opNewValue = 0;
34380 let isPseudo = 1;
34381 let isCodeGenOnly = 1;
34382 let DecoderNamespace = "EXT_mmvec";
34383 }
34384 def V6_vnccombine : HInst<
34385 (outs HvxWR:$Vdd32),
34386 (ins PredRegs:$Ps4, HvxVR:$Vu32, HvxVR:$Vv32),
34387 "if (!$Ps4) $Vdd32 = vcombine($Vu32,$Vv32)",
34388 tc_af25efd9, TypeCVI_VA_DV>, Enc_8c2412, Requires<[UseHVXV60]> {
34389 let Inst{7-7} = 0b0;
34390 let Inst{13-13} = 0b0;
34391 let Inst{31-21} = 0b00011010010;
34392 let isPredicated = 1;
34393 let isPredicatedFalse = 1;
34394 let hasNewValue = 1;
34395 let opNewValue = 0;
34396 let DecoderNamespace = "EXT_mmvec";
34397 }
34398 def V6_vncmov : HInst<
34399 (outs HvxVR:$Vd32),
34400 (ins PredRegs:$Ps4, HvxVR:$Vu32),
34401 "if (!$Ps4) $Vd32 = $Vu32",
34402 tc_3aacf4a8, TypeCVI_VA>, Enc_770858, Requires<[UseHVXV60]> {
34403 let Inst{7-7} = 0b0;
34404 let Inst{13-13} = 0b0;
34405 let Inst{31-16} = 0b0001101000100000;
34406 let isPredicated = 1;
34407 let isPredicatedFalse = 1;
34408 let hasNewValue = 1;
34409 let opNewValue = 0;
34410 let DecoderNamespace = "EXT_mmvec";
34411 }
34412 def V6_vnormamth : HInst<
34413 (outs HvxVR:$Vd32),
34414 (ins HvxVR:$Vu32),
34415 "$Vd32.h = vnormamt($Vu32.h)",
34416 tc_51d0ecc3, TypeCVI_VS>, Enc_e7581c, Requires<[UseHVXV60]> {
34417 let Inst{7-5} = 0b101;
34418 let Inst{13-13} = 0b0;
34419 let Inst{31-16} = 0b0001111000000011;
34420 let hasNewValue = 1;
34421 let opNewValue = 0;
34422 let DecoderNamespace = "EXT_mmvec";
34423 }
34424 def V6_vnormamth_alt : HInst<
34425 (outs HvxVR:$Vd32),
34426 (ins HvxVR:$Vu32),
34427 "$Vd32 = vnormamth($Vu32)",
34428 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34429 let hasNewValue = 1;
34430 let opNewValue = 0;
34431 let isPseudo = 1;
34432 let isCodeGenOnly = 1;
34433 let DecoderNamespace = "EXT_mmvec";
34434 }
34435 def V6_vnormamtw : HInst<
34436 (outs HvxVR:$Vd32),
34437 (ins HvxVR:$Vu32),
34438 "$Vd32.w = vnormamt($Vu32.w)",
34439 tc_51d0ecc3, TypeCVI_VS>, Enc_e7581c, Requires<[UseHVXV60]> {
34440 let Inst{7-5} = 0b100;
34441 let Inst{13-13} = 0b0;
34442 let Inst{31-16} = 0b0001111000000011;
34443 let hasNewValue = 1;
34444 let opNewValue = 0;
34445 let DecoderNamespace = "EXT_mmvec";
34446 }
34447 def V6_vnormamtw_alt : HInst<
34448 (outs HvxVR:$Vd32),
34449 (ins HvxVR:$Vu32),
34450 "$Vd32 = vnormamtw($Vu32)",
34451 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34452 let hasNewValue = 1;
34453 let opNewValue = 0;
34454 let isPseudo = 1;
34455 let isCodeGenOnly = 1;
34456 let DecoderNamespace = "EXT_mmvec";
34457 }
34458 def V6_vnot : HInst<
34459 (outs HvxVR:$Vd32),
34460 (ins HvxVR:$Vu32),
34461 "$Vd32 = vnot($Vu32)",
34462 tc_0ec46cf9, TypeCVI_VA>, Enc_e7581c, Requires<[UseHVXV60]> {
34463 let Inst{7-5} = 0b100;
34464 let Inst{13-13} = 0b0;
34465 let Inst{31-16} = 0b0001111000000000;
34466 let hasNewValue = 1;
34467 let opNewValue = 0;
34468 let DecoderNamespace = "EXT_mmvec";
34469 }
34470 def V6_vor : HInst<
34471 (outs HvxVR:$Vd32),
34472 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34473 "$Vd32 = vor($Vu32,$Vv32)",
34474 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
34475 let Inst{7-5} = 0b110;
34476 let Inst{13-13} = 0b0;
34477 let Inst{31-21} = 0b00011100001;
34478 let hasNewValue = 1;
34479 let opNewValue = 0;
34480 let DecoderNamespace = "EXT_mmvec";
34481 }
34482 def V6_vpackeb : HInst<
34483 (outs HvxVR:$Vd32),
34484 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34485 "$Vd32.b = vpacke($Vu32.h,$Vv32.h)",
34486 tc_46d6c3e0, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
34487 let Inst{7-5} = 0b010;
34488 let Inst{13-13} = 0b0;
34489 let Inst{31-21} = 0b00011111110;
34490 let hasNewValue = 1;
34491 let opNewValue = 0;
34492 let DecoderNamespace = "EXT_mmvec";
34493 }
34494 def V6_vpackeb_alt : HInst<
34495 (outs HvxVR:$Vd32),
34496 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34497 "$Vd32 = vpackeb($Vu32,$Vv32)",
34498 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34499 let hasNewValue = 1;
34500 let opNewValue = 0;
34501 let isPseudo = 1;
34502 let isCodeGenOnly = 1;
34503 let DecoderNamespace = "EXT_mmvec";
34504 }
34505 def V6_vpackeh : HInst<
34506 (outs HvxVR:$Vd32),
34507 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34508 "$Vd32.h = vpacke($Vu32.w,$Vv32.w)",
34509 tc_46d6c3e0, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
34510 let Inst{7-5} = 0b011;
34511 let Inst{13-13} = 0b0;
34512 let Inst{31-21} = 0b00011111110;
34513 let hasNewValue = 1;
34514 let opNewValue = 0;
34515 let DecoderNamespace = "EXT_mmvec";
34516 }
34517 def V6_vpackeh_alt : HInst<
34518 (outs HvxVR:$Vd32),
34519 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34520 "$Vd32 = vpackeh($Vu32,$Vv32)",
34521 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34522 let hasNewValue = 1;
34523 let opNewValue = 0;
34524 let isPseudo = 1;
34525 let isCodeGenOnly = 1;
34526 let DecoderNamespace = "EXT_mmvec";
34527 }
34528 def V6_vpackhb_sat : HInst<
34529 (outs HvxVR:$Vd32),
34530 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34531 "$Vd32.b = vpack($Vu32.h,$Vv32.h):sat",
34532 tc_46d6c3e0, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
34533 let Inst{7-5} = 0b110;
34534 let Inst{13-13} = 0b0;
34535 let Inst{31-21} = 0b00011111110;
34536 let hasNewValue = 1;
34537 let opNewValue = 0;
34538 let DecoderNamespace = "EXT_mmvec";
34539 }
34540 def V6_vpackhb_sat_alt : HInst<
34541 (outs HvxVR:$Vd32),
34542 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34543 "$Vd32 = vpackhb($Vu32,$Vv32):sat",
34544 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34545 let hasNewValue = 1;
34546 let opNewValue = 0;
34547 let isPseudo = 1;
34548 let isCodeGenOnly = 1;
34549 let DecoderNamespace = "EXT_mmvec";
34550 }
34551 def V6_vpackhub_sat : HInst<
34552 (outs HvxVR:$Vd32),
34553 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34554 "$Vd32.ub = vpack($Vu32.h,$Vv32.h):sat",
34555 tc_46d6c3e0, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
34556 let Inst{7-5} = 0b101;
34557 let Inst{13-13} = 0b0;
34558 let Inst{31-21} = 0b00011111110;
34559 let hasNewValue = 1;
34560 let opNewValue = 0;
34561 let DecoderNamespace = "EXT_mmvec";
34562 }
34563 def V6_vpackhub_sat_alt : HInst<
34564 (outs HvxVR:$Vd32),
34565 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34566 "$Vd32 = vpackhub($Vu32,$Vv32):sat",
34567 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34568 let hasNewValue = 1;
34569 let opNewValue = 0;
34570 let isPseudo = 1;
34571 let isCodeGenOnly = 1;
34572 let DecoderNamespace = "EXT_mmvec";
34573 }
34574 def V6_vpackob : HInst<
34575 (outs HvxVR:$Vd32),
34576 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34577 "$Vd32.b = vpacko($Vu32.h,$Vv32.h)",
34578 tc_46d6c3e0, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
34579 let Inst{7-5} = 0b001;
34580 let Inst{13-13} = 0b0;
34581 let Inst{31-21} = 0b00011111111;
34582 let hasNewValue = 1;
34583 let opNewValue = 0;
34584 let DecoderNamespace = "EXT_mmvec";
34585 }
34586 def V6_vpackob_alt : HInst<
34587 (outs HvxVR:$Vd32),
34588 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34589 "$Vd32 = vpackob($Vu32,$Vv32)",
34590 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34591 let hasNewValue = 1;
34592 let opNewValue = 0;
34593 let isPseudo = 1;
34594 let isCodeGenOnly = 1;
34595 let DecoderNamespace = "EXT_mmvec";
34596 }
34597 def V6_vpackoh : HInst<
34598 (outs HvxVR:$Vd32),
34599 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34600 "$Vd32.h = vpacko($Vu32.w,$Vv32.w)",
34601 tc_46d6c3e0, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
34602 let Inst{7-5} = 0b010;
34603 let Inst{13-13} = 0b0;
34604 let Inst{31-21} = 0b00011111111;
34605 let hasNewValue = 1;
34606 let opNewValue = 0;
34607 let DecoderNamespace = "EXT_mmvec";
34608 }
34609 def V6_vpackoh_alt : HInst<
34610 (outs HvxVR:$Vd32),
34611 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34612 "$Vd32 = vpackoh($Vu32,$Vv32)",
34613 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34614 let hasNewValue = 1;
34615 let opNewValue = 0;
34616 let isPseudo = 1;
34617 let isCodeGenOnly = 1;
34618 let DecoderNamespace = "EXT_mmvec";
34619 }
34620 def V6_vpackwh_sat : HInst<
34621 (outs HvxVR:$Vd32),
34622 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34623 "$Vd32.h = vpack($Vu32.w,$Vv32.w):sat",
34624 tc_46d6c3e0, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
34625 let Inst{7-5} = 0b000;
34626 let Inst{13-13} = 0b0;
34627 let Inst{31-21} = 0b00011111111;
34628 let hasNewValue = 1;
34629 let opNewValue = 0;
34630 let DecoderNamespace = "EXT_mmvec";
34631 }
34632 def V6_vpackwh_sat_alt : HInst<
34633 (outs HvxVR:$Vd32),
34634 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34635 "$Vd32 = vpackwh($Vu32,$Vv32):sat",
34636 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34637 let hasNewValue = 1;
34638 let opNewValue = 0;
34639 let isPseudo = 1;
34640 let isCodeGenOnly = 1;
34641 let DecoderNamespace = "EXT_mmvec";
34642 }
34643 def V6_vpackwuh_sat : HInst<
34644 (outs HvxVR:$Vd32),
34645 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34646 "$Vd32.uh = vpack($Vu32.w,$Vv32.w):sat",
34647 tc_46d6c3e0, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
34648 let Inst{7-5} = 0b111;
34649 let Inst{13-13} = 0b0;
34650 let Inst{31-21} = 0b00011111110;
34651 let hasNewValue = 1;
34652 let opNewValue = 0;
34653 let DecoderNamespace = "EXT_mmvec";
34654 }
34655 def V6_vpackwuh_sat_alt : HInst<
34656 (outs HvxVR:$Vd32),
34657 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34658 "$Vd32 = vpackwuh($Vu32,$Vv32):sat",
34659 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34660 let hasNewValue = 1;
34661 let opNewValue = 0;
34662 let isPseudo = 1;
34663 let isCodeGenOnly = 1;
34664 let DecoderNamespace = "EXT_mmvec";
34665 }
34666 def V6_vpopcounth : HInst<
34667 (outs HvxVR:$Vd32),
34668 (ins HvxVR:$Vu32),
34669 "$Vd32.h = vpopcount($Vu32.h)",
34670 tc_51d0ecc3, TypeCVI_VS>, Enc_e7581c, Requires<[UseHVXV60]> {
34671 let Inst{7-5} = 0b110;
34672 let Inst{13-13} = 0b0;
34673 let Inst{31-16} = 0b0001111000000010;
34674 let hasNewValue = 1;
34675 let opNewValue = 0;
34676 let DecoderNamespace = "EXT_mmvec";
34677 }
34678 def V6_vpopcounth_alt : HInst<
34679 (outs HvxVR:$Vd32),
34680 (ins HvxVR:$Vu32),
34681 "$Vd32 = vpopcounth($Vu32)",
34682 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34683 let hasNewValue = 1;
34684 let opNewValue = 0;
34685 let isPseudo = 1;
34686 let isCodeGenOnly = 1;
34687 let DecoderNamespace = "EXT_mmvec";
34688 }
34689 def V6_vprefixqb : HInst<
34690 (outs HvxVR:$Vd32),
34691 (ins HvxQR:$Qv4),
34692 "$Vd32.b = prefixsum($Qv4)",
34693 tc_51d0ecc3, TypeCVI_VS>, Enc_6f83e7, Requires<[UseHVXV65]> {
34694 let Inst{13-5} = 0b100000010;
34695 let Inst{21-16} = 0b000011;
34696 let Inst{31-24} = 0b00011110;
34697 let hasNewValue = 1;
34698 let opNewValue = 0;
34699 let DecoderNamespace = "EXT_mmvec";
34700 }
34701 def V6_vprefixqh : HInst<
34702 (outs HvxVR:$Vd32),
34703 (ins HvxQR:$Qv4),
34704 "$Vd32.h = prefixsum($Qv4)",
34705 tc_51d0ecc3, TypeCVI_VS>, Enc_6f83e7, Requires<[UseHVXV65]> {
34706 let Inst{13-5} = 0b100001010;
34707 let Inst{21-16} = 0b000011;
34708 let Inst{31-24} = 0b00011110;
34709 let hasNewValue = 1;
34710 let opNewValue = 0;
34711 let DecoderNamespace = "EXT_mmvec";
34712 }
34713 def V6_vprefixqw : HInst<
34714 (outs HvxVR:$Vd32),
34715 (ins HvxQR:$Qv4),
34716 "$Vd32.w = prefixsum($Qv4)",
34717 tc_51d0ecc3, TypeCVI_VS>, Enc_6f83e7, Requires<[UseHVXV65]> {
34718 let Inst{13-5} = 0b100010010;
34719 let Inst{21-16} = 0b000011;
34720 let Inst{31-24} = 0b00011110;
34721 let hasNewValue = 1;
34722 let opNewValue = 0;
34723 let DecoderNamespace = "EXT_mmvec";
34724 }
34725 def V6_vrdelta : HInst<
34726 (outs HvxVR:$Vd32),
34727 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34728 "$Vd32 = vrdelta($Vu32,$Vv32)",
34729 tc_46d6c3e0, TypeCVI_VP>, Enc_45364e, Requires<[UseHVXV60]> {
34730 let Inst{7-5} = 0b011;
34731 let Inst{13-13} = 0b0;
34732 let Inst{31-21} = 0b00011111001;
34733 let hasNewValue = 1;
34734 let opNewValue = 0;
34735 let DecoderNamespace = "EXT_mmvec";
34736 }
34737 def V6_vrmpybub_rtt : HInst<
34738 (outs HvxWR:$Vdd32),
34739 (ins HvxVR:$Vu32, DoubleRegs:$Rtt32),
34740 "$Vdd32.w = vrmpy($Vu32.b,$Rtt32.ub)",
34741 tc_cd94bfe0, TypeCVI_VS_VX>, Enc_cb785b, Requires<[UseHVXV65]> {
34742 let Inst{7-5} = 0b101;
34743 let Inst{13-13} = 0b0;
34744 let Inst{31-21} = 0b00011001110;
34745 let hasNewValue = 1;
34746 let opNewValue = 0;
34747 let DecoderNamespace = "EXT_mmvec";
34748 }
34749 def V6_vrmpybub_rtt_acc : HInst<
34750 (outs HvxWR:$Vxx32),
34751 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, DoubleRegs:$Rtt32),
34752 "$Vxx32.w += vrmpy($Vu32.b,$Rtt32.ub)",
34753 tc_15fdf750, TypeCVI_VS_VX>, Enc_ad9bef, Requires<[UseHVXV65]> {
34754 let Inst{7-5} = 0b000;
34755 let Inst{13-13} = 0b1;
34756 let Inst{31-21} = 0b00011001101;
34757 let hasNewValue = 1;
34758 let opNewValue = 0;
34759 let isAccumulator = 1;
34760 let DecoderNamespace = "EXT_mmvec";
34761 let Constraints = "$Vxx32 = $Vxx32in";
34762 }
34763 def V6_vrmpybub_rtt_acc_alt : HInst<
34764 (outs HvxWR:$Vxx32),
34765 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, DoubleRegs:$Rtt32),
34766 "$Vxx32.w += vrmpy($Vu32.b,$Rtt32.ub)",
34767 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
34768 let hasNewValue = 1;
34769 let opNewValue = 0;
34770 let isAccumulator = 1;
34771 let isPseudo = 1;
34772 let isCodeGenOnly = 1;
34773 let DecoderNamespace = "EXT_mmvec";
34774 let Constraints = "$Vxx32 = $Vxx32in";
34775 }
34776 def V6_vrmpybub_rtt_alt : HInst<
34777 (outs HvxWR:$Vdd32),
34778 (ins HvxVR:$Vu32, DoubleRegs:$Rtt32),
34779 "$Vdd32.w = vrmpy($Vu32.b,$Rtt32.ub)",
34780 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
34781 let hasNewValue = 1;
34782 let opNewValue = 0;
34783 let isPseudo = 1;
34784 let isCodeGenOnly = 1;
34785 let DecoderNamespace = "EXT_mmvec";
34786 }
34787 def V6_vrmpybus : HInst<
34788 (outs HvxVR:$Vd32),
34789 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34790 "$Vd32.w = vrmpy($Vu32.ub,$Rt32.b)",
34791 tc_649072c2, TypeCVI_VX>, Enc_b087ac, Requires<[UseHVXV60]> {
34792 let Inst{7-5} = 0b100;
34793 let Inst{13-13} = 0b0;
34794 let Inst{31-21} = 0b00011001000;
34795 let hasNewValue = 1;
34796 let opNewValue = 0;
34797 let DecoderNamespace = "EXT_mmvec";
34798 }
34799 def V6_vrmpybus_acc : HInst<
34800 (outs HvxVR:$Vx32),
34801 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34802 "$Vx32.w += vrmpy($Vu32.ub,$Rt32.b)",
34803 tc_b091f1c6, TypeCVI_VX>, Enc_5138b3, Requires<[UseHVXV60]> {
34804 let Inst{7-5} = 0b101;
34805 let Inst{13-13} = 0b1;
34806 let Inst{31-21} = 0b00011001000;
34807 let hasNewValue = 1;
34808 let opNewValue = 0;
34809 let isAccumulator = 1;
34810 let DecoderNamespace = "EXT_mmvec";
34811 let Constraints = "$Vx32 = $Vx32in";
34812 }
34813 def V6_vrmpybus_acc_alt : HInst<
34814 (outs HvxVR:$Vx32),
34815 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
34816 "$Vx32 += vrmpybus($Vu32,$Rt32)",
34817 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34818 let hasNewValue = 1;
34819 let opNewValue = 0;
34820 let isAccumulator = 1;
34821 let isPseudo = 1;
34822 let isCodeGenOnly = 1;
34823 let DecoderNamespace = "EXT_mmvec";
34824 let Constraints = "$Vx32 = $Vx32in";
34825 }
34826 def V6_vrmpybus_alt : HInst<
34827 (outs HvxVR:$Vd32),
34828 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34829 "$Vd32 = vrmpybus($Vu32,$Rt32)",
34830 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34831 let hasNewValue = 1;
34832 let opNewValue = 0;
34833 let isPseudo = 1;
34834 let isCodeGenOnly = 1;
34835 let DecoderNamespace = "EXT_mmvec";
34836 }
34837 def V6_vrmpybusi : HInst<
34838 (outs HvxWR:$Vdd32),
34839 (ins HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
34840 "$Vdd32.w = vrmpy($Vuu32.ub,$Rt32.b,#$Ii)",
34841 tc_1ad8a370, TypeCVI_VX_DV>, Enc_2f2f04, Requires<[UseHVXV60]> {
34842 let Inst{7-6} = 0b10;
34843 let Inst{13-13} = 0b0;
34844 let Inst{31-21} = 0b00011001010;
34845 let hasNewValue = 1;
34846 let opNewValue = 0;
34847 let DecoderNamespace = "EXT_mmvec";
34848 }
34849 def V6_vrmpybusi_acc : HInst<
34850 (outs HvxWR:$Vxx32),
34851 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
34852 "$Vxx32.w += vrmpy($Vuu32.ub,$Rt32.b,#$Ii)",
34853 tc_e675c45a, TypeCVI_VX_DV>, Enc_d483b9, Requires<[UseHVXV60]> {
34854 let Inst{7-6} = 0b10;
34855 let Inst{13-13} = 0b1;
34856 let Inst{31-21} = 0b00011001010;
34857 let hasNewValue = 1;
34858 let opNewValue = 0;
34859 let isAccumulator = 1;
34860 let DecoderNamespace = "EXT_mmvec";
34861 let Constraints = "$Vxx32 = $Vxx32in";
34862 }
34863 def V6_vrmpybusi_acc_alt : HInst<
34864 (outs HvxWR:$Vxx32),
34865 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
34866 "$Vxx32 += vrmpybus($Vuu32,$Rt32,#$Ii)",
34867 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34868 let hasNewValue = 1;
34869 let opNewValue = 0;
34870 let isAccumulator = 1;
34871 let isPseudo = 1;
34872 let isCodeGenOnly = 1;
34873 let DecoderNamespace = "EXT_mmvec";
34874 let Constraints = "$Vxx32 = $Vxx32in";
34875 }
34876 def V6_vrmpybusi_alt : HInst<
34877 (outs HvxWR:$Vdd32),
34878 (ins HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
34879 "$Vdd32 = vrmpybus($Vuu32,$Rt32,#$Ii)",
34880 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34881 let hasNewValue = 1;
34882 let opNewValue = 0;
34883 let isPseudo = 1;
34884 let isCodeGenOnly = 1;
34885 let DecoderNamespace = "EXT_mmvec";
34886 }
34887 def V6_vrmpybusv : HInst<
34888 (outs HvxVR:$Vd32),
34889 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34890 "$Vd32.w = vrmpy($Vu32.ub,$Vv32.b)",
34891 tc_c127de3a, TypeCVI_VX>, Enc_45364e, Requires<[UseHVXV60]> {
34892 let Inst{7-5} = 0b010;
34893 let Inst{13-13} = 0b0;
34894 let Inst{31-21} = 0b00011100000;
34895 let hasNewValue = 1;
34896 let opNewValue = 0;
34897 let DecoderNamespace = "EXT_mmvec";
34898 }
34899 def V6_vrmpybusv_acc : HInst<
34900 (outs HvxVR:$Vx32),
34901 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34902 "$Vx32.w += vrmpy($Vu32.ub,$Vv32.b)",
34903 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
34904 let Inst{7-5} = 0b010;
34905 let Inst{13-13} = 0b1;
34906 let Inst{31-21} = 0b00011100000;
34907 let hasNewValue = 1;
34908 let opNewValue = 0;
34909 let isAccumulator = 1;
34910 let DecoderNamespace = "EXT_mmvec";
34911 let Constraints = "$Vx32 = $Vx32in";
34912 }
34913 def V6_vrmpybusv_acc_alt : HInst<
34914 (outs HvxVR:$Vx32),
34915 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34916 "$Vx32 += vrmpybus($Vu32,$Vv32)",
34917 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34918 let hasNewValue = 1;
34919 let opNewValue = 0;
34920 let isAccumulator = 1;
34921 let isPseudo = 1;
34922 let isCodeGenOnly = 1;
34923 let DecoderNamespace = "EXT_mmvec";
34924 let Constraints = "$Vx32 = $Vx32in";
34925 }
34926 def V6_vrmpybusv_alt : HInst<
34927 (outs HvxVR:$Vd32),
34928 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34929 "$Vd32 = vrmpybus($Vu32,$Vv32)",
34930 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34931 let hasNewValue = 1;
34932 let opNewValue = 0;
34933 let isPseudo = 1;
34934 let isCodeGenOnly = 1;
34935 let DecoderNamespace = "EXT_mmvec";
34936 }
34937 def V6_vrmpybv : HInst<
34938 (outs HvxVR:$Vd32),
34939 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34940 "$Vd32.w = vrmpy($Vu32.b,$Vv32.b)",
34941 tc_c127de3a, TypeCVI_VX>, Enc_45364e, Requires<[UseHVXV60]> {
34942 let Inst{7-5} = 0b001;
34943 let Inst{13-13} = 0b0;
34944 let Inst{31-21} = 0b00011100000;
34945 let hasNewValue = 1;
34946 let opNewValue = 0;
34947 let DecoderNamespace = "EXT_mmvec";
34948 }
34949 def V6_vrmpybv_acc : HInst<
34950 (outs HvxVR:$Vx32),
34951 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34952 "$Vx32.w += vrmpy($Vu32.b,$Vv32.b)",
34953 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
34954 let Inst{7-5} = 0b001;
34955 let Inst{13-13} = 0b1;
34956 let Inst{31-21} = 0b00011100000;
34957 let hasNewValue = 1;
34958 let opNewValue = 0;
34959 let isAccumulator = 1;
34960 let DecoderNamespace = "EXT_mmvec";
34961 let Constraints = "$Vx32 = $Vx32in";
34962 }
34963 def V6_vrmpybv_acc_alt : HInst<
34964 (outs HvxVR:$Vx32),
34965 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
34966 "$Vx32 += vrmpyb($Vu32,$Vv32)",
34967 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34968 let hasNewValue = 1;
34969 let opNewValue = 0;
34970 let isAccumulator = 1;
34971 let isPseudo = 1;
34972 let isCodeGenOnly = 1;
34973 let DecoderNamespace = "EXT_mmvec";
34974 let Constraints = "$Vx32 = $Vx32in";
34975 }
34976 def V6_vrmpybv_alt : HInst<
34977 (outs HvxVR:$Vd32),
34978 (ins HvxVR:$Vu32, HvxVR:$Vv32),
34979 "$Vd32 = vrmpyb($Vu32,$Vv32)",
34980 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
34981 let hasNewValue = 1;
34982 let opNewValue = 0;
34983 let isPseudo = 1;
34984 let isCodeGenOnly = 1;
34985 let DecoderNamespace = "EXT_mmvec";
34986 }
34987 def V6_vrmpyub : HInst<
34988 (outs HvxVR:$Vd32),
34989 (ins HvxVR:$Vu32, IntRegs:$Rt32),
34990 "$Vd32.uw = vrmpy($Vu32.ub,$Rt32.ub)",
34991 tc_649072c2, TypeCVI_VX>, Enc_b087ac, Requires<[UseHVXV60]> {
34992 let Inst{7-5} = 0b011;
34993 let Inst{13-13} = 0b0;
34994 let Inst{31-21} = 0b00011001000;
34995 let hasNewValue = 1;
34996 let opNewValue = 0;
34997 let DecoderNamespace = "EXT_mmvec";
34998 }
34999 def V6_vrmpyub_acc : HInst<
35000 (outs HvxVR:$Vx32),
35001 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
35002 "$Vx32.uw += vrmpy($Vu32.ub,$Rt32.ub)",
35003 tc_b091f1c6, TypeCVI_VX>, Enc_5138b3, Requires<[UseHVXV60]> {
35004 let Inst{7-5} = 0b100;
35005 let Inst{13-13} = 0b1;
35006 let Inst{31-21} = 0b00011001000;
35007 let hasNewValue = 1;
35008 let opNewValue = 0;
35009 let isAccumulator = 1;
35010 let DecoderNamespace = "EXT_mmvec";
35011 let Constraints = "$Vx32 = $Vx32in";
35012 }
35013 def V6_vrmpyub_acc_alt : HInst<
35014 (outs HvxVR:$Vx32),
35015 (ins HvxVR:$Vx32in, HvxVR:$Vu32, IntRegs:$Rt32),
35016 "$Vx32 += vrmpyub($Vu32,$Rt32)",
35017 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35018 let hasNewValue = 1;
35019 let opNewValue = 0;
35020 let isAccumulator = 1;
35021 let isPseudo = 1;
35022 let isCodeGenOnly = 1;
35023 let DecoderNamespace = "EXT_mmvec";
35024 let Constraints = "$Vx32 = $Vx32in";
35025 }
35026 def V6_vrmpyub_alt : HInst<
35027 (outs HvxVR:$Vd32),
35028 (ins HvxVR:$Vu32, IntRegs:$Rt32),
35029 "$Vd32 = vrmpyub($Vu32,$Rt32)",
35030 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35031 let hasNewValue = 1;
35032 let opNewValue = 0;
35033 let isPseudo = 1;
35034 let isCodeGenOnly = 1;
35035 let DecoderNamespace = "EXT_mmvec";
35036 }
35037 def V6_vrmpyub_rtt : HInst<
35038 (outs HvxWR:$Vdd32),
35039 (ins HvxVR:$Vu32, DoubleRegs:$Rtt32),
35040 "$Vdd32.uw = vrmpy($Vu32.ub,$Rtt32.ub)",
35041 tc_cd94bfe0, TypeCVI_VS_VX>, Enc_cb785b, Requires<[UseHVXV65]> {
35042 let Inst{7-5} = 0b100;
35043 let Inst{13-13} = 0b0;
35044 let Inst{31-21} = 0b00011001110;
35045 let hasNewValue = 1;
35046 let opNewValue = 0;
35047 let DecoderNamespace = "EXT_mmvec";
35048 }
35049 def V6_vrmpyub_rtt_acc : HInst<
35050 (outs HvxWR:$Vxx32),
35051 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, DoubleRegs:$Rtt32),
35052 "$Vxx32.uw += vrmpy($Vu32.ub,$Rtt32.ub)",
35053 tc_15fdf750, TypeCVI_VS_VX>, Enc_ad9bef, Requires<[UseHVXV65]> {
35054 let Inst{7-5} = 0b111;
35055 let Inst{13-13} = 0b1;
35056 let Inst{31-21} = 0b00011001101;
35057 let hasNewValue = 1;
35058 let opNewValue = 0;
35059 let isAccumulator = 1;
35060 let DecoderNamespace = "EXT_mmvec";
35061 let Constraints = "$Vxx32 = $Vxx32in";
35062 }
35063 def V6_vrmpyub_rtt_acc_alt : HInst<
35064 (outs HvxWR:$Vxx32),
35065 (ins HvxWR:$Vxx32in, HvxVR:$Vu32, DoubleRegs:$Rtt32),
35066 "$Vxx32.uw += vrmpy($Vu32.ub,$Rtt32.ub)",
35067 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
35068 let hasNewValue = 1;
35069 let opNewValue = 0;
35070 let isAccumulator = 1;
35071 let isPseudo = 1;
35072 let isCodeGenOnly = 1;
35073 let DecoderNamespace = "EXT_mmvec";
35074 let Constraints = "$Vxx32 = $Vxx32in";
35075 }
35076 def V6_vrmpyub_rtt_alt : HInst<
35077 (outs HvxWR:$Vdd32),
35078 (ins HvxVR:$Vu32, DoubleRegs:$Rtt32),
35079 "$Vdd32.uw = vrmpy($Vu32.ub,$Rtt32.ub)",
35080 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
35081 let hasNewValue = 1;
35082 let opNewValue = 0;
35083 let isPseudo = 1;
35084 let isCodeGenOnly = 1;
35085 let DecoderNamespace = "EXT_mmvec";
35086 }
35087 def V6_vrmpyubi : HInst<
35088 (outs HvxWR:$Vdd32),
35089 (ins HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
35090 "$Vdd32.uw = vrmpy($Vuu32.ub,$Rt32.ub,#$Ii)",
35091 tc_1ad8a370, TypeCVI_VX_DV>, Enc_2f2f04, Requires<[UseHVXV60]> {
35092 let Inst{7-6} = 0b11;
35093 let Inst{13-13} = 0b0;
35094 let Inst{31-21} = 0b00011001101;
35095 let hasNewValue = 1;
35096 let opNewValue = 0;
35097 let DecoderNamespace = "EXT_mmvec";
35098 }
35099 def V6_vrmpyubi_acc : HInst<
35100 (outs HvxWR:$Vxx32),
35101 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
35102 "$Vxx32.uw += vrmpy($Vuu32.ub,$Rt32.ub,#$Ii)",
35103 tc_e675c45a, TypeCVI_VX_DV>, Enc_d483b9, Requires<[UseHVXV60]> {
35104 let Inst{7-6} = 0b11;
35105 let Inst{13-13} = 0b1;
35106 let Inst{31-21} = 0b00011001011;
35107 let hasNewValue = 1;
35108 let opNewValue = 0;
35109 let isAccumulator = 1;
35110 let DecoderNamespace = "EXT_mmvec";
35111 let Constraints = "$Vxx32 = $Vxx32in";
35112 }
35113 def V6_vrmpyubi_acc_alt : HInst<
35114 (outs HvxWR:$Vxx32),
35115 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
35116 "$Vxx32 += vrmpyub($Vuu32,$Rt32,#$Ii)",
35117 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35118 let hasNewValue = 1;
35119 let opNewValue = 0;
35120 let isAccumulator = 1;
35121 let isPseudo = 1;
35122 let isCodeGenOnly = 1;
35123 let DecoderNamespace = "EXT_mmvec";
35124 let Constraints = "$Vxx32 = $Vxx32in";
35125 }
35126 def V6_vrmpyubi_alt : HInst<
35127 (outs HvxWR:$Vdd32),
35128 (ins HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
35129 "$Vdd32 = vrmpyub($Vuu32,$Rt32,#$Ii)",
35130 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35131 let hasNewValue = 1;
35132 let opNewValue = 0;
35133 let isPseudo = 1;
35134 let isCodeGenOnly = 1;
35135 let DecoderNamespace = "EXT_mmvec";
35136 }
35137 def V6_vrmpyubv : HInst<
35138 (outs HvxVR:$Vd32),
35139 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35140 "$Vd32.uw = vrmpy($Vu32.ub,$Vv32.ub)",
35141 tc_c127de3a, TypeCVI_VX>, Enc_45364e, Requires<[UseHVXV60]> {
35142 let Inst{7-5} = 0b000;
35143 let Inst{13-13} = 0b0;
35144 let Inst{31-21} = 0b00011100000;
35145 let hasNewValue = 1;
35146 let opNewValue = 0;
35147 let DecoderNamespace = "EXT_mmvec";
35148 }
35149 def V6_vrmpyubv_acc : HInst<
35150 (outs HvxVR:$Vx32),
35151 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
35152 "$Vx32.uw += vrmpy($Vu32.ub,$Vv32.ub)",
35153 tc_08a4f1b6, TypeCVI_VX_DV>, Enc_a7341a, Requires<[UseHVXV60]> {
35154 let Inst{7-5} = 0b000;
35155 let Inst{13-13} = 0b1;
35156 let Inst{31-21} = 0b00011100000;
35157 let hasNewValue = 1;
35158 let opNewValue = 0;
35159 let isAccumulator = 1;
35160 let DecoderNamespace = "EXT_mmvec";
35161 let Constraints = "$Vx32 = $Vx32in";
35162 }
35163 def V6_vrmpyubv_acc_alt : HInst<
35164 (outs HvxVR:$Vx32),
35165 (ins HvxVR:$Vx32in, HvxVR:$Vu32, HvxVR:$Vv32),
35166 "$Vx32 += vrmpyub($Vu32,$Vv32)",
35167 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35168 let hasNewValue = 1;
35169 let opNewValue = 0;
35170 let isAccumulator = 1;
35171 let isPseudo = 1;
35172 let isCodeGenOnly = 1;
35173 let DecoderNamespace = "EXT_mmvec";
35174 let Constraints = "$Vx32 = $Vx32in";
35175 }
35176 def V6_vrmpyubv_alt : HInst<
35177 (outs HvxVR:$Vd32),
35178 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35179 "$Vd32 = vrmpyub($Vu32,$Vv32)",
35180 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35181 let hasNewValue = 1;
35182 let opNewValue = 0;
35183 let isPseudo = 1;
35184 let isCodeGenOnly = 1;
35185 let DecoderNamespace = "EXT_mmvec";
35186 }
35187 def V6_vrmpyzbb_rt : HInst<
35188 (outs HvxVQR:$Vdddd32),
35189 (ins HvxVR:$Vu32, IntRegsLow8:$Rt8),
35190 "$Vdddd32.w = vrmpyz($Vu32.b,$Rt8.b)",
35191 tc_61bf7c03, TypeCVI_4SLOT_MPY>, Enc_1bd127, Requires<[UseHVXV66,UseZReg]> {
35192 let Inst{7-5} = 0b000;
35193 let Inst{13-13} = 0b0;
35194 let Inst{31-19} = 0b0001100111101;
35195 let hasNewValue = 1;
35196 let opNewValue = 0;
35197 let DecoderNamespace = "EXT_mmvec";
35198 }
35199 def V6_vrmpyzbb_rt_acc : HInst<
35200 (outs HvxVQR:$Vyyyy32),
35201 (ins HvxVQR:$Vyyyy32in, HvxVR:$Vu32, IntRegsLow8:$Rt8),
35202 "$Vyyyy32.w += vrmpyz($Vu32.b,$Rt8.b)",
35203 tc_933f2b39, TypeCVI_4SLOT_MPY>, Enc_d7bc34, Requires<[UseHVXV66,UseZReg]> {
35204 let Inst{7-5} = 0b010;
35205 let Inst{13-13} = 0b1;
35206 let Inst{31-19} = 0b0001100111000;
35207 let hasNewValue = 1;
35208 let opNewValue = 0;
35209 let isAccumulator = 1;
35210 let DecoderNamespace = "EXT_mmvec";
35211 let Constraints = "$Vyyyy32 = $Vyyyy32in";
35212 }
35213 def V6_vrmpyzbb_rx : HInst<
35214 (outs HvxVQR:$Vdddd32, IntRegsLow8:$Rx8),
35215 (ins HvxVR:$Vu32, IntRegs:$Rx8in),
35216 "$Vdddd32.w = vrmpyz($Vu32.b,$Rx8.b++)",
35217 tc_26a377fe, TypeCVI_4SLOT_MPY>, Enc_3b7631, Requires<[UseHVXV66,UseZReg]> {
35218 let Inst{7-5} = 0b000;
35219 let Inst{13-13} = 0b0;
35220 let Inst{31-19} = 0b0001100111100;
35221 let hasNewValue = 1;
35222 let opNewValue = 0;
35223 let DecoderNamespace = "EXT_mmvec";
35224 let Constraints = "$Rx8 = $Rx8in";
35225 }
35226 def V6_vrmpyzbb_rx_acc : HInst<
35227 (outs HvxVQR:$Vyyyy32, IntRegsLow8:$Rx8),
35228 (ins HvxVQR:$Vyyyy32in, HvxVR:$Vu32, IntRegs:$Rx8in),
35229 "$Vyyyy32.w += vrmpyz($Vu32.b,$Rx8.b++)",
35230 tc_2d4051cd, TypeCVI_4SLOT_MPY>, Enc_bddee3, Requires<[UseHVXV66,UseZReg]> {
35231 let Inst{7-5} = 0b010;
35232 let Inst{13-13} = 0b1;
35233 let Inst{31-19} = 0b0001100111001;
35234 let hasNewValue = 1;
35235 let opNewValue = 0;
35236 let isAccumulator = 1;
35237 let DecoderNamespace = "EXT_mmvec";
35238 let Constraints = "$Vyyyy32 = $Vyyyy32in, $Rx8 = $Rx8in";
35239 }
35240 def V6_vrmpyzbub_rt : HInst<
35241 (outs HvxVQR:$Vdddd32),
35242 (ins HvxVR:$Vu32, IntRegsLow8:$Rt8),
35243 "$Vdddd32.w = vrmpyz($Vu32.b,$Rt8.ub)",
35244 tc_61bf7c03, TypeCVI_4SLOT_MPY>, Enc_1bd127, Requires<[UseHVXV66,UseZReg]> {
35245 let Inst{7-5} = 0b010;
35246 let Inst{13-13} = 0b0;
35247 let Inst{31-19} = 0b0001100111111;
35248 let hasNewValue = 1;
35249 let opNewValue = 0;
35250 let DecoderNamespace = "EXT_mmvec";
35251 }
35252 def V6_vrmpyzbub_rt_acc : HInst<
35253 (outs HvxVQR:$Vyyyy32),
35254 (ins HvxVQR:$Vyyyy32in, HvxVR:$Vu32, IntRegsLow8:$Rt8),
35255 "$Vyyyy32.w += vrmpyz($Vu32.b,$Rt8.ub)",
35256 tc_933f2b39, TypeCVI_4SLOT_MPY>, Enc_d7bc34, Requires<[UseHVXV66,UseZReg]> {
35257 let Inst{7-5} = 0b001;
35258 let Inst{13-13} = 0b1;
35259 let Inst{31-19} = 0b0001100111010;
35260 let hasNewValue = 1;
35261 let opNewValue = 0;
35262 let isAccumulator = 1;
35263 let DecoderNamespace = "EXT_mmvec";
35264 let Constraints = "$Vyyyy32 = $Vyyyy32in";
35265 }
35266 def V6_vrmpyzbub_rx : HInst<
35267 (outs HvxVQR:$Vdddd32, IntRegsLow8:$Rx8),
35268 (ins HvxVR:$Vu32, IntRegs:$Rx8in),
35269 "$Vdddd32.w = vrmpyz($Vu32.b,$Rx8.ub++)",
35270 tc_26a377fe, TypeCVI_4SLOT_MPY>, Enc_3b7631, Requires<[UseHVXV66,UseZReg]> {
35271 let Inst{7-5} = 0b010;
35272 let Inst{13-13} = 0b0;
35273 let Inst{31-19} = 0b0001100111110;
35274 let hasNewValue = 1;
35275 let opNewValue = 0;
35276 let DecoderNamespace = "EXT_mmvec";
35277 let Constraints = "$Rx8 = $Rx8in";
35278 }
35279 def V6_vrmpyzbub_rx_acc : HInst<
35280 (outs HvxVQR:$Vyyyy32, IntRegsLow8:$Rx8),
35281 (ins HvxVQR:$Vyyyy32in, HvxVR:$Vu32, IntRegs:$Rx8in),
35282 "$Vyyyy32.w += vrmpyz($Vu32.b,$Rx8.ub++)",
35283 tc_2d4051cd, TypeCVI_4SLOT_MPY>, Enc_bddee3, Requires<[UseHVXV66,UseZReg]> {
35284 let Inst{7-5} = 0b001;
35285 let Inst{13-13} = 0b1;
35286 let Inst{31-19} = 0b0001100111011;
35287 let hasNewValue = 1;
35288 let opNewValue = 0;
35289 let isAccumulator = 1;
35290 let DecoderNamespace = "EXT_mmvec";
35291 let Constraints = "$Vyyyy32 = $Vyyyy32in, $Rx8 = $Rx8in";
35292 }
35293 def V6_vrmpyzcb_rt : HInst<
35294 (outs HvxVQR:$Vdddd32),
35295 (ins HvxVR:$Vu32, IntRegsLow8:$Rt8),
35296 "$Vdddd32.w = vr16mpyz($Vu32.c,$Rt8.b)",
35297 tc_61bf7c03, TypeCVI_4SLOT_MPY>, Enc_1bd127, Requires<[UseHVXV66,UseZReg]> {
35298 let Inst{7-5} = 0b001;
35299 let Inst{13-13} = 0b0;
35300 let Inst{31-19} = 0b0001100111101;
35301 let hasNewValue = 1;
35302 let opNewValue = 0;
35303 let DecoderNamespace = "EXT_mmvec";
35304 }
35305 def V6_vrmpyzcb_rt_acc : HInst<
35306 (outs HvxVQR:$Vyyyy32),
35307 (ins HvxVQR:$Vyyyy32in, HvxVR:$Vu32, IntRegsLow8:$Rt8),
35308 "$Vyyyy32.w += vr16mpyz($Vu32.c,$Rt8.b)",
35309 tc_933f2b39, TypeCVI_4SLOT_MPY>, Enc_d7bc34, Requires<[UseHVXV66,UseZReg]> {
35310 let Inst{7-5} = 0b011;
35311 let Inst{13-13} = 0b1;
35312 let Inst{31-19} = 0b0001100111000;
35313 let hasNewValue = 1;
35314 let opNewValue = 0;
35315 let isAccumulator = 1;
35316 let DecoderNamespace = "EXT_mmvec";
35317 let Constraints = "$Vyyyy32 = $Vyyyy32in";
35318 }
35319 def V6_vrmpyzcb_rx : HInst<
35320 (outs HvxVQR:$Vdddd32, IntRegsLow8:$Rx8),
35321 (ins HvxVR:$Vu32, IntRegs:$Rx8in),
35322 "$Vdddd32.w = vr16mpyz($Vu32.c,$Rx8.b++)",
35323 tc_26a377fe, TypeCVI_4SLOT_MPY>, Enc_3b7631, Requires<[UseHVXV66,UseZReg]> {
35324 let Inst{7-5} = 0b001;
35325 let Inst{13-13} = 0b0;
35326 let Inst{31-19} = 0b0001100111100;
35327 let hasNewValue = 1;
35328 let opNewValue = 0;
35329 let DecoderNamespace = "EXT_mmvec";
35330 let Constraints = "$Rx8 = $Rx8in";
35331 }
35332 def V6_vrmpyzcb_rx_acc : HInst<
35333 (outs HvxVQR:$Vyyyy32, IntRegsLow8:$Rx8),
35334 (ins HvxVQR:$Vyyyy32in, HvxVR:$Vu32, IntRegs:$Rx8in),
35335 "$Vyyyy32.w += vr16mpyz($Vu32.c,$Rx8.b++)",
35336 tc_2d4051cd, TypeCVI_4SLOT_MPY>, Enc_bddee3, Requires<[UseHVXV66,UseZReg]> {
35337 let Inst{7-5} = 0b011;
35338 let Inst{13-13} = 0b1;
35339 let Inst{31-19} = 0b0001100111001;
35340 let hasNewValue = 1;
35341 let opNewValue = 0;
35342 let isAccumulator = 1;
35343 let DecoderNamespace = "EXT_mmvec";
35344 let Constraints = "$Vyyyy32 = $Vyyyy32in, $Rx8 = $Rx8in";
35345 }
35346 def V6_vrmpyzcbs_rt : HInst<
35347 (outs HvxVQR:$Vdddd32),
35348 (ins HvxVR:$Vu32, IntRegsLow8:$Rt8),
35349 "$Vdddd32.w = vr16mpyzs($Vu32.c,$Rt8.b)",
35350 tc_61bf7c03, TypeCVI_4SLOT_MPY>, Enc_1bd127, Requires<[UseHVXV66,UseZReg]> {
35351 let Inst{7-5} = 0b010;
35352 let Inst{13-13} = 0b0;
35353 let Inst{31-19} = 0b0001100111101;
35354 let hasNewValue = 1;
35355 let opNewValue = 0;
35356 let DecoderNamespace = "EXT_mmvec";
35357 }
35358 def V6_vrmpyzcbs_rt_acc : HInst<
35359 (outs HvxVQR:$Vyyyy32),
35360 (ins HvxVQR:$Vyyyy32in, HvxVR:$Vu32, IntRegsLow8:$Rt8),
35361 "$Vyyyy32.w += vr16mpyzs($Vu32.c,$Rt8.b)",
35362 tc_933f2b39, TypeCVI_4SLOT_MPY>, Enc_d7bc34, Requires<[UseHVXV66,UseZReg]> {
35363 let Inst{7-5} = 0b001;
35364 let Inst{13-13} = 0b1;
35365 let Inst{31-19} = 0b0001100111000;
35366 let hasNewValue = 1;
35367 let opNewValue = 0;
35368 let isAccumulator = 1;
35369 let DecoderNamespace = "EXT_mmvec";
35370 let Constraints = "$Vyyyy32 = $Vyyyy32in";
35371 }
35372 def V6_vrmpyzcbs_rx : HInst<
35373 (outs HvxVQR:$Vdddd32, IntRegsLow8:$Rx8),
35374 (ins HvxVR:$Vu32, IntRegs:$Rx8in),
35375 "$Vdddd32.w = vr16mpyzs($Vu32.c,$Rx8.b++)",
35376 tc_26a377fe, TypeCVI_4SLOT_MPY>, Enc_3b7631, Requires<[UseHVXV66,UseZReg]> {
35377 let Inst{7-5} = 0b010;
35378 let Inst{13-13} = 0b0;
35379 let Inst{31-19} = 0b0001100111100;
35380 let hasNewValue = 1;
35381 let opNewValue = 0;
35382 let DecoderNamespace = "EXT_mmvec";
35383 let Constraints = "$Rx8 = $Rx8in";
35384 }
35385 def V6_vrmpyzcbs_rx_acc : HInst<
35386 (outs HvxVQR:$Vyyyy32, IntRegsLow8:$Rx8),
35387 (ins HvxVQR:$Vyyyy32in, HvxVR:$Vu32, IntRegs:$Rx8in),
35388 "$Vyyyy32.w += vr16mpyzs($Vu32.c,$Rx8.b++)",
35389 tc_2d4051cd, TypeCVI_4SLOT_MPY>, Enc_bddee3, Requires<[UseHVXV66,UseZReg]> {
35390 let Inst{7-5} = 0b001;
35391 let Inst{13-13} = 0b1;
35392 let Inst{31-19} = 0b0001100111001;
35393 let hasNewValue = 1;
35394 let opNewValue = 0;
35395 let isAccumulator = 1;
35396 let DecoderNamespace = "EXT_mmvec";
35397 let Constraints = "$Vyyyy32 = $Vyyyy32in, $Rx8 = $Rx8in";
35398 }
35399 def V6_vrmpyznb_rt : HInst<
35400 (outs HvxVQR:$Vdddd32),
35401 (ins HvxVR:$Vu32, IntRegsLow8:$Rt8),
35402 "$Vdddd32.w = vr8mpyz($Vu32.n,$Rt8.b)",
35403 tc_61bf7c03, TypeCVI_4SLOT_MPY>, Enc_1bd127, Requires<[UseHVXV66,UseZReg]> {
35404 let Inst{7-5} = 0b000;
35405 let Inst{13-13} = 0b0;
35406 let Inst{31-19} = 0b0001100111111;
35407 let hasNewValue = 1;
35408 let opNewValue = 0;
35409 let DecoderNamespace = "EXT_mmvec";
35410 }
35411 def V6_vrmpyznb_rt_acc : HInst<
35412 (outs HvxVQR:$Vyyyy32),
35413 (ins HvxVQR:$Vyyyy32in, HvxVR:$Vu32, IntRegsLow8:$Rt8),
35414 "$Vyyyy32.w += vr8mpyz($Vu32.n,$Rt8.b)",
35415 tc_933f2b39, TypeCVI_4SLOT_MPY>, Enc_d7bc34, Requires<[UseHVXV66,UseZReg]> {
35416 let Inst{7-5} = 0b010;
35417 let Inst{13-13} = 0b1;
35418 let Inst{31-19} = 0b0001100111010;
35419 let hasNewValue = 1;
35420 let opNewValue = 0;
35421 let isAccumulator = 1;
35422 let DecoderNamespace = "EXT_mmvec";
35423 let Constraints = "$Vyyyy32 = $Vyyyy32in";
35424 }
35425 def V6_vrmpyznb_rx : HInst<
35426 (outs HvxVQR:$Vdddd32, IntRegsLow8:$Rx8),
35427 (ins HvxVR:$Vu32, IntRegs:$Rx8in),
35428 "$Vdddd32.w = vr8mpyz($Vu32.n,$Rx8.b++)",
35429 tc_26a377fe, TypeCVI_4SLOT_MPY>, Enc_3b7631, Requires<[UseHVXV66,UseZReg]> {
35430 let Inst{7-5} = 0b000;
35431 let Inst{13-13} = 0b0;
35432 let Inst{31-19} = 0b0001100111110;
35433 let hasNewValue = 1;
35434 let opNewValue = 0;
35435 let DecoderNamespace = "EXT_mmvec";
35436 let Constraints = "$Rx8 = $Rx8in";
35437 }
35438 def V6_vrmpyznb_rx_acc : HInst<
35439 (outs HvxVQR:$Vyyyy32, IntRegsLow8:$Rx8),
35440 (ins HvxVQR:$Vyyyy32in, HvxVR:$Vu32, IntRegs:$Rx8in),
35441 "$Vyyyy32.w += vr8mpyz($Vu32.n,$Rx8.b++)",
35442 tc_2d4051cd, TypeCVI_4SLOT_MPY>, Enc_bddee3, Requires<[UseHVXV66,UseZReg]> {
35443 let Inst{7-5} = 0b010;
35444 let Inst{13-13} = 0b1;
35445 let Inst{31-19} = 0b0001100111011;
35446 let hasNewValue = 1;
35447 let opNewValue = 0;
35448 let isAccumulator = 1;
35449 let DecoderNamespace = "EXT_mmvec";
35450 let Constraints = "$Vyyyy32 = $Vyyyy32in, $Rx8 = $Rx8in";
35451 }
35452 def V6_vror : HInst<
35453 (outs HvxVR:$Vd32),
35454 (ins HvxVR:$Vu32, IntRegs:$Rt32),
35455 "$Vd32 = vror($Vu32,$Rt32)",
35456 tc_6e7fa133, TypeCVI_VP>, Enc_b087ac, Requires<[UseHVXV60]> {
35457 let Inst{7-5} = 0b001;
35458 let Inst{13-13} = 0b0;
35459 let Inst{31-21} = 0b00011001011;
35460 let hasNewValue = 1;
35461 let opNewValue = 0;
35462 let DecoderNamespace = "EXT_mmvec";
35463 }
35464 def V6_vrotr : HInst<
35465 (outs HvxVR:$Vd32),
35466 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35467 "$Vd32.uw = vrotr($Vu32.uw,$Vv32.uw)",
35468 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV66]> {
35469 let Inst{7-5} = 0b111;
35470 let Inst{13-13} = 0b1;
35471 let Inst{31-21} = 0b00011010100;
35472 let hasNewValue = 1;
35473 let opNewValue = 0;
35474 let DecoderNamespace = "EXT_mmvec";
35475 }
35476 def V6_vrotr_alt : HInst<
35477 (outs HvxVR:$Vd32),
35478 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35479 "$Vd32 = vrotr($Vu32,$Vv32)",
35480 PSEUDO, TypeMAPPING>, Requires<[UseHVXV66]> {
35481 let hasNewValue = 1;
35482 let opNewValue = 0;
35483 let isPseudo = 1;
35484 let isCodeGenOnly = 1;
35485 let DecoderNamespace = "EXT_mmvec";
35486 }
35487 def V6_vroundhb : HInst<
35488 (outs HvxVR:$Vd32),
35489 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35490 "$Vd32.b = vround($Vu32.h,$Vv32.h):sat",
35491 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
35492 let Inst{7-5} = 0b110;
35493 let Inst{13-13} = 0b0;
35494 let Inst{31-21} = 0b00011111011;
35495 let hasNewValue = 1;
35496 let opNewValue = 0;
35497 let DecoderNamespace = "EXT_mmvec";
35498 }
35499 def V6_vroundhb_alt : HInst<
35500 (outs HvxVR:$Vd32),
35501 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35502 "$Vd32 = vroundhb($Vu32,$Vv32):sat",
35503 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35504 let hasNewValue = 1;
35505 let opNewValue = 0;
35506 let isPseudo = 1;
35507 let isCodeGenOnly = 1;
35508 let DecoderNamespace = "EXT_mmvec";
35509 }
35510 def V6_vroundhub : HInst<
35511 (outs HvxVR:$Vd32),
35512 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35513 "$Vd32.ub = vround($Vu32.h,$Vv32.h):sat",
35514 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
35515 let Inst{7-5} = 0b111;
35516 let Inst{13-13} = 0b0;
35517 let Inst{31-21} = 0b00011111011;
35518 let hasNewValue = 1;
35519 let opNewValue = 0;
35520 let DecoderNamespace = "EXT_mmvec";
35521 }
35522 def V6_vroundhub_alt : HInst<
35523 (outs HvxVR:$Vd32),
35524 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35525 "$Vd32 = vroundhub($Vu32,$Vv32):sat",
35526 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35527 let hasNewValue = 1;
35528 let opNewValue = 0;
35529 let isPseudo = 1;
35530 let isCodeGenOnly = 1;
35531 let DecoderNamespace = "EXT_mmvec";
35532 }
35533 def V6_vrounduhub : HInst<
35534 (outs HvxVR:$Vd32),
35535 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35536 "$Vd32.ub = vround($Vu32.uh,$Vv32.uh):sat",
35537 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV62]> {
35538 let Inst{7-5} = 0b011;
35539 let Inst{13-13} = 0b0;
35540 let Inst{31-21} = 0b00011111111;
35541 let hasNewValue = 1;
35542 let opNewValue = 0;
35543 let DecoderNamespace = "EXT_mmvec";
35544 }
35545 def V6_vrounduhub_alt : HInst<
35546 (outs HvxVR:$Vd32),
35547 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35548 "$Vd32 = vrounduhub($Vu32,$Vv32):sat",
35549 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
35550 let hasNewValue = 1;
35551 let opNewValue = 0;
35552 let isPseudo = 1;
35553 let isCodeGenOnly = 1;
35554 let DecoderNamespace = "EXT_mmvec";
35555 }
35556 def V6_vrounduwuh : HInst<
35557 (outs HvxVR:$Vd32),
35558 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35559 "$Vd32.uh = vround($Vu32.uw,$Vv32.uw):sat",
35560 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV62]> {
35561 let Inst{7-5} = 0b100;
35562 let Inst{13-13} = 0b0;
35563 let Inst{31-21} = 0b00011111111;
35564 let hasNewValue = 1;
35565 let opNewValue = 0;
35566 let DecoderNamespace = "EXT_mmvec";
35567 }
35568 def V6_vrounduwuh_alt : HInst<
35569 (outs HvxVR:$Vd32),
35570 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35571 "$Vd32 = vrounduwuh($Vu32,$Vv32):sat",
35572 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
35573 let hasNewValue = 1;
35574 let opNewValue = 0;
35575 let isPseudo = 1;
35576 let isCodeGenOnly = 1;
35577 let DecoderNamespace = "EXT_mmvec";
35578 }
35579 def V6_vroundwh : HInst<
35580 (outs HvxVR:$Vd32),
35581 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35582 "$Vd32.h = vround($Vu32.w,$Vv32.w):sat",
35583 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
35584 let Inst{7-5} = 0b100;
35585 let Inst{13-13} = 0b0;
35586 let Inst{31-21} = 0b00011111011;
35587 let hasNewValue = 1;
35588 let opNewValue = 0;
35589 let DecoderNamespace = "EXT_mmvec";
35590 }
35591 def V6_vroundwh_alt : HInst<
35592 (outs HvxVR:$Vd32),
35593 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35594 "$Vd32 = vroundwh($Vu32,$Vv32):sat",
35595 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35596 let hasNewValue = 1;
35597 let opNewValue = 0;
35598 let isPseudo = 1;
35599 let isCodeGenOnly = 1;
35600 let DecoderNamespace = "EXT_mmvec";
35601 }
35602 def V6_vroundwuh : HInst<
35603 (outs HvxVR:$Vd32),
35604 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35605 "$Vd32.uh = vround($Vu32.w,$Vv32.w):sat",
35606 tc_05ca8cfd, TypeCVI_VS>, Enc_45364e, Requires<[UseHVXV60]> {
35607 let Inst{7-5} = 0b101;
35608 let Inst{13-13} = 0b0;
35609 let Inst{31-21} = 0b00011111011;
35610 let hasNewValue = 1;
35611 let opNewValue = 0;
35612 let DecoderNamespace = "EXT_mmvec";
35613 }
35614 def V6_vroundwuh_alt : HInst<
35615 (outs HvxVR:$Vd32),
35616 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35617 "$Vd32 = vroundwuh($Vu32,$Vv32):sat",
35618 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35619 let hasNewValue = 1;
35620 let opNewValue = 0;
35621 let isPseudo = 1;
35622 let isCodeGenOnly = 1;
35623 let DecoderNamespace = "EXT_mmvec";
35624 }
35625 def V6_vrsadubi : HInst<
35626 (outs HvxWR:$Vdd32),
35627 (ins HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
35628 "$Vdd32.uw = vrsad($Vuu32.ub,$Rt32.ub,#$Ii)",
35629 tc_1ad8a370, TypeCVI_VX_DV>, Enc_2f2f04, Requires<[UseHVXV60]> {
35630 let Inst{7-6} = 0b11;
35631 let Inst{13-13} = 0b0;
35632 let Inst{31-21} = 0b00011001010;
35633 let hasNewValue = 1;
35634 let opNewValue = 0;
35635 let DecoderNamespace = "EXT_mmvec";
35636 }
35637 def V6_vrsadubi_acc : HInst<
35638 (outs HvxWR:$Vxx32),
35639 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
35640 "$Vxx32.uw += vrsad($Vuu32.ub,$Rt32.ub,#$Ii)",
35641 tc_e675c45a, TypeCVI_VX_DV>, Enc_d483b9, Requires<[UseHVXV60]> {
35642 let Inst{7-6} = 0b11;
35643 let Inst{13-13} = 0b1;
35644 let Inst{31-21} = 0b00011001010;
35645 let hasNewValue = 1;
35646 let opNewValue = 0;
35647 let isAccumulator = 1;
35648 let DecoderNamespace = "EXT_mmvec";
35649 let Constraints = "$Vxx32 = $Vxx32in";
35650 }
35651 def V6_vrsadubi_acc_alt : HInst<
35652 (outs HvxWR:$Vxx32),
35653 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
35654 "$Vxx32 += vrsadub($Vuu32,$Rt32,#$Ii)",
35655 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35656 let hasNewValue = 1;
35657 let opNewValue = 0;
35658 let isAccumulator = 1;
35659 let isPseudo = 1;
35660 let isCodeGenOnly = 1;
35661 let DecoderNamespace = "EXT_mmvec";
35662 let Constraints = "$Vxx32 = $Vxx32in";
35663 }
35664 def V6_vrsadubi_alt : HInst<
35665 (outs HvxWR:$Vdd32),
35666 (ins HvxWR:$Vuu32, IntRegs:$Rt32, u1_0Imm:$Ii),
35667 "$Vdd32 = vrsadub($Vuu32,$Rt32,#$Ii)",
35668 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35669 let hasNewValue = 1;
35670 let opNewValue = 0;
35671 let isPseudo = 1;
35672 let isCodeGenOnly = 1;
35673 let DecoderNamespace = "EXT_mmvec";
35674 }
35675 def V6_vsatdw : HInst<
35676 (outs HvxVR:$Vd32),
35677 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35678 "$Vd32.w = vsatdw($Vu32.w,$Vv32.w)",
35679 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV66]> {
35680 let Inst{7-5} = 0b111;
35681 let Inst{13-13} = 0b1;
35682 let Inst{31-21} = 0b00011101100;
35683 let hasNewValue = 1;
35684 let opNewValue = 0;
35685 let DecoderNamespace = "EXT_mmvec";
35686 }
35687 def V6_vsathub : HInst<
35688 (outs HvxVR:$Vd32),
35689 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35690 "$Vd32.ub = vsat($Vu32.h,$Vv32.h)",
35691 tc_8772086c, TypeCVI_VINLANESAT>, Enc_45364e, Requires<[UseHVXV60]> {
35692 let Inst{7-5} = 0b010;
35693 let Inst{13-13} = 0b0;
35694 let Inst{31-21} = 0b00011111011;
35695 let hasNewValue = 1;
35696 let opNewValue = 0;
35697 let DecoderNamespace = "EXT_mmvec";
35698 }
35699 def V6_vsathub_alt : HInst<
35700 (outs HvxVR:$Vd32),
35701 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35702 "$Vd32 = vsathub($Vu32,$Vv32)",
35703 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35704 let hasNewValue = 1;
35705 let opNewValue = 0;
35706 let isPseudo = 1;
35707 let isCodeGenOnly = 1;
35708 let DecoderNamespace = "EXT_mmvec";
35709 }
35710 def V6_vsatuwuh : HInst<
35711 (outs HvxVR:$Vd32),
35712 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35713 "$Vd32.uh = vsat($Vu32.uw,$Vv32.uw)",
35714 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
35715 let Inst{7-5} = 0b110;
35716 let Inst{13-13} = 0b0;
35717 let Inst{31-21} = 0b00011111001;
35718 let hasNewValue = 1;
35719 let opNewValue = 0;
35720 let DecoderNamespace = "EXT_mmvec";
35721 }
35722 def V6_vsatuwuh_alt : HInst<
35723 (outs HvxVR:$Vd32),
35724 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35725 "$Vd32 = vsatuwuh($Vu32,$Vv32)",
35726 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
35727 let hasNewValue = 1;
35728 let opNewValue = 0;
35729 let isPseudo = 1;
35730 let isCodeGenOnly = 1;
35731 let DecoderNamespace = "EXT_mmvec";
35732 }
35733 def V6_vsatwh : HInst<
35734 (outs HvxVR:$Vd32),
35735 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35736 "$Vd32.h = vsat($Vu32.w,$Vv32.w)",
35737 tc_8772086c, TypeCVI_VINLANESAT>, Enc_45364e, Requires<[UseHVXV60]> {
35738 let Inst{7-5} = 0b011;
35739 let Inst{13-13} = 0b0;
35740 let Inst{31-21} = 0b00011111011;
35741 let hasNewValue = 1;
35742 let opNewValue = 0;
35743 let DecoderNamespace = "EXT_mmvec";
35744 }
35745 def V6_vsatwh_alt : HInst<
35746 (outs HvxVR:$Vd32),
35747 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35748 "$Vd32 = vsatwh($Vu32,$Vv32)",
35749 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35750 let hasNewValue = 1;
35751 let opNewValue = 0;
35752 let isPseudo = 1;
35753 let isCodeGenOnly = 1;
35754 let DecoderNamespace = "EXT_mmvec";
35755 }
35756 def V6_vsb : HInst<
35757 (outs HvxWR:$Vdd32),
35758 (ins HvxVR:$Vu32),
35759 "$Vdd32.h = vsxt($Vu32.b)",
35760 tc_b4416217, TypeCVI_VA_DV>, Enc_dd766a, Requires<[UseHVXV60]> {
35761 let Inst{7-5} = 0b011;
35762 let Inst{13-13} = 0b0;
35763 let Inst{31-16} = 0b0001111000000010;
35764 let hasNewValue = 1;
35765 let opNewValue = 0;
35766 let DecoderNamespace = "EXT_mmvec";
35767 }
35768 def V6_vsb_alt : HInst<
35769 (outs HvxWR:$Vdd32),
35770 (ins HvxVR:$Vu32),
35771 "$Vdd32 = vsxtb($Vu32)",
35772 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35773 let hasNewValue = 1;
35774 let opNewValue = 0;
35775 let isPseudo = 1;
35776 let isCodeGenOnly = 1;
35777 let DecoderNamespace = "EXT_mmvec";
35778 }
35779 def V6_vscattermh : HInst<
35780 (outs),
35781 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
35782 "vscatter($Rt32,$Mu2,$Vv32.h).h = $Vw32",
35783 tc_9f363d21, TypeCVI_SCATTER>, Enc_16c48b, Requires<[UseHVXV65]> {
35784 let Inst{7-5} = 0b001;
35785 let Inst{31-21} = 0b00101111001;
35786 let accessSize = HalfWordAccess;
35787 let mayStore = 1;
35788 let DecoderNamespace = "EXT_mmvec";
35789 }
35790 def V6_vscattermh_add : HInst<
35791 (outs),
35792 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
35793 "vscatter($Rt32,$Mu2,$Vv32.h).h += $Vw32",
35794 tc_9f363d21, TypeCVI_SCATTER>, Enc_16c48b, Requires<[UseHVXV65]> {
35795 let Inst{7-5} = 0b101;
35796 let Inst{31-21} = 0b00101111001;
35797 let accessSize = HalfWordAccess;
35798 let isAccumulator = 1;
35799 let mayStore = 1;
35800 let DecoderNamespace = "EXT_mmvec";
35801 }
35802 def V6_vscattermh_add_alt : HInst<
35803 (outs),
35804 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
35805 "vscatter($Rt32,$Mu2,$Vv32.h) += $Vw32.h",
35806 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
35807 let isAccumulator = 1;
35808 let isPseudo = 1;
35809 let isCodeGenOnly = 1;
35810 let DecoderNamespace = "EXT_mmvec";
35811 }
35812 def V6_vscattermh_alt : HInst<
35813 (outs),
35814 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
35815 "vscatter($Rt32,$Mu2,$Vv32.h) = $Vw32.h",
35816 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
35817 let isPseudo = 1;
35818 let isCodeGenOnly = 1;
35819 let DecoderNamespace = "EXT_mmvec";
35820 }
35821 def V6_vscattermhq : HInst<
35822 (outs),
35823 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
35824 "if ($Qs4) vscatter($Rt32,$Mu2,$Vv32.h).h = $Vw32",
35825 tc_8e420e4d, TypeCVI_SCATTER>, Enc_9be1de, Requires<[UseHVXV65]> {
35826 let Inst{7-7} = 0b1;
35827 let Inst{31-21} = 0b00101111100;
35828 let accessSize = HalfWordAccess;
35829 let mayStore = 1;
35830 let DecoderNamespace = "EXT_mmvec";
35831 }
35832 def V6_vscattermhq_alt : HInst<
35833 (outs),
35834 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
35835 "if ($Qs4) vscatter($Rt32,$Mu2,$Vv32.h) = $Vw32.h",
35836 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
35837 let isPseudo = 1;
35838 let isCodeGenOnly = 1;
35839 let DecoderNamespace = "EXT_mmvec";
35840 }
35841 def V6_vscattermhw : HInst<
35842 (outs),
35843 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxWR:$Vvv32, HvxVR:$Vw32),
35844 "vscatter($Rt32,$Mu2,$Vvv32.w).h = $Vw32",
35845 tc_7273323b, TypeCVI_SCATTER_DV>, Enc_a641d0, Requires<[UseHVXV65]> {
35846 let Inst{7-5} = 0b010;
35847 let Inst{31-21} = 0b00101111001;
35848 let accessSize = HalfWordAccess;
35849 let mayStore = 1;
35850 let DecoderNamespace = "EXT_mmvec";
35851 }
35852 def V6_vscattermhw_add : HInst<
35853 (outs),
35854 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxWR:$Vvv32, HvxVR:$Vw32),
35855 "vscatter($Rt32,$Mu2,$Vvv32.w).h += $Vw32",
35856 tc_7273323b, TypeCVI_SCATTER_DV>, Enc_a641d0, Requires<[UseHVXV65]> {
35857 let Inst{7-5} = 0b110;
35858 let Inst{31-21} = 0b00101111001;
35859 let accessSize = HalfWordAccess;
35860 let isAccumulator = 1;
35861 let mayStore = 1;
35862 let DecoderNamespace = "EXT_mmvec";
35863 }
35864 def V6_vscattermhwq : HInst<
35865 (outs),
35866 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxWR:$Vvv32, HvxVR:$Vw32),
35867 "if ($Qs4) vscatter($Rt32,$Mu2,$Vvv32.w).h = $Vw32",
35868 tc_58d21193, TypeCVI_SCATTER_DV>, Enc_3d6d37, Requires<[UseHVXV65]> {
35869 let Inst{7-7} = 0b0;
35870 let Inst{31-21} = 0b00101111101;
35871 let accessSize = HalfWordAccess;
35872 let mayStore = 1;
35873 let DecoderNamespace = "EXT_mmvec";
35874 }
35875 def V6_vscattermw : HInst<
35876 (outs),
35877 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
35878 "vscatter($Rt32,$Mu2,$Vv32.w).w = $Vw32",
35879 tc_9f363d21, TypeCVI_SCATTER>, Enc_16c48b, Requires<[UseHVXV65]> {
35880 let Inst{7-5} = 0b000;
35881 let Inst{31-21} = 0b00101111001;
35882 let accessSize = WordAccess;
35883 let mayStore = 1;
35884 let DecoderNamespace = "EXT_mmvec";
35885 }
35886 def V6_vscattermw_add : HInst<
35887 (outs),
35888 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
35889 "vscatter($Rt32,$Mu2,$Vv32.w).w += $Vw32",
35890 tc_9f363d21, TypeCVI_SCATTER>, Enc_16c48b, Requires<[UseHVXV65]> {
35891 let Inst{7-5} = 0b100;
35892 let Inst{31-21} = 0b00101111001;
35893 let accessSize = WordAccess;
35894 let isAccumulator = 1;
35895 let mayStore = 1;
35896 let DecoderNamespace = "EXT_mmvec";
35897 }
35898 def V6_vscattermw_add_alt : HInst<
35899 (outs),
35900 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
35901 "vscatter($Rt32,$Mu2,$Vv32.w) += $Vw32.w",
35902 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
35903 let isAccumulator = 1;
35904 let isPseudo = 1;
35905 let isCodeGenOnly = 1;
35906 let DecoderNamespace = "EXT_mmvec";
35907 }
35908 def V6_vscattermw_alt : HInst<
35909 (outs),
35910 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
35911 "vscatter($Rt32,$Mu2,$Vv32.w) = $Vw32.w",
35912 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
35913 let isPseudo = 1;
35914 let isCodeGenOnly = 1;
35915 let DecoderNamespace = "EXT_mmvec";
35916 }
35917 def V6_vscattermwh_add_alt : HInst<
35918 (outs),
35919 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxWR:$Vvv32, HvxVR:$Vw32),
35920 "vscatter($Rt32,$Mu2,$Vvv32.w) += $Vw32.h",
35921 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
35922 let isAccumulator = 1;
35923 let isPseudo = 1;
35924 let isCodeGenOnly = 1;
35925 let DecoderNamespace = "EXT_mmvec";
35926 }
35927 def V6_vscattermwh_alt : HInst<
35928 (outs),
35929 (ins IntRegs:$Rt32, ModRegs:$Mu2, HvxWR:$Vvv32, HvxVR:$Vw32),
35930 "vscatter($Rt32,$Mu2,$Vvv32.w) = $Vw32.h",
35931 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
35932 let isPseudo = 1;
35933 let isCodeGenOnly = 1;
35934 let DecoderNamespace = "EXT_mmvec";
35935 }
35936 def V6_vscattermwhq_alt : HInst<
35937 (outs),
35938 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxWR:$Vvv32, HvxVR:$Vw32),
35939 "if ($Qs4) vscatter($Rt32,$Mu2,$Vvv32.w) = $Vw32.h",
35940 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
35941 let isPseudo = 1;
35942 let isCodeGenOnly = 1;
35943 let DecoderNamespace = "EXT_mmvec";
35944 }
35945 def V6_vscattermwq : HInst<
35946 (outs),
35947 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
35948 "if ($Qs4) vscatter($Rt32,$Mu2,$Vv32.w).w = $Vw32",
35949 tc_8e420e4d, TypeCVI_SCATTER>, Enc_9be1de, Requires<[UseHVXV65]> {
35950 let Inst{7-7} = 0b0;
35951 let Inst{31-21} = 0b00101111100;
35952 let accessSize = WordAccess;
35953 let mayStore = 1;
35954 let DecoderNamespace = "EXT_mmvec";
35955 }
35956 def V6_vscattermwq_alt : HInst<
35957 (outs),
35958 (ins HvxQR:$Qs4, IntRegs:$Rt32, ModRegs:$Mu2, HvxVR:$Vv32, HvxVR:$Vw32),
35959 "if ($Qs4) vscatter($Rt32,$Mu2,$Vv32.w) = $Vw32.w",
35960 PSEUDO, TypeMAPPING>, Requires<[UseHVXV65]> {
35961 let isPseudo = 1;
35962 let isCodeGenOnly = 1;
35963 let DecoderNamespace = "EXT_mmvec";
35964 }
35965 def V6_vsh : HInst<
35966 (outs HvxWR:$Vdd32),
35967 (ins HvxVR:$Vu32),
35968 "$Vdd32.w = vsxt($Vu32.h)",
35969 tc_b4416217, TypeCVI_VA_DV>, Enc_dd766a, Requires<[UseHVXV60]> {
35970 let Inst{7-5} = 0b100;
35971 let Inst{13-13} = 0b0;
35972 let Inst{31-16} = 0b0001111000000010;
35973 let hasNewValue = 1;
35974 let opNewValue = 0;
35975 let DecoderNamespace = "EXT_mmvec";
35976 }
35977 def V6_vsh_alt : HInst<
35978 (outs HvxWR:$Vdd32),
35979 (ins HvxVR:$Vu32),
35980 "$Vdd32 = vsxth($Vu32)",
35981 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
35982 let hasNewValue = 1;
35983 let opNewValue = 0;
35984 let isPseudo = 1;
35985 let isCodeGenOnly = 1;
35986 let DecoderNamespace = "EXT_mmvec";
35987 }
35988 def V6_vshufeh : HInst<
35989 (outs HvxVR:$Vd32),
35990 (ins HvxVR:$Vu32, HvxVR:$Vv32),
35991 "$Vd32.h = vshuffe($Vu32.h,$Vv32.h)",
35992 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
35993 let Inst{7-5} = 0b011;
35994 let Inst{13-13} = 0b0;
35995 let Inst{31-21} = 0b00011111010;
35996 let hasNewValue = 1;
35997 let opNewValue = 0;
35998 let DecoderNamespace = "EXT_mmvec";
35999 }
36000 def V6_vshufeh_alt : HInst<
36001 (outs HvxVR:$Vd32),
36002 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36003 "$Vd32 = vshuffeh($Vu32,$Vv32)",
36004 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36005 let hasNewValue = 1;
36006 let opNewValue = 0;
36007 let isPseudo = 1;
36008 let isCodeGenOnly = 1;
36009 let DecoderNamespace = "EXT_mmvec";
36010 }
36011 def V6_vshuff : HInst<
36012 (outs HvxVR:$Vy32, HvxVR:$Vx32),
36013 (ins HvxVR:$Vy32in, HvxVR:$Vx32in, IntRegs:$Rt32),
36014 "vshuff($Vy32,$Vx32,$Rt32)",
36015 tc_561aaa58, TypeCVI_VP_VS>, Enc_989021, Requires<[UseHVXV60]> {
36016 let Inst{7-5} = 0b001;
36017 let Inst{13-13} = 0b1;
36018 let Inst{31-21} = 0b00011001111;
36019 let hasNewValue = 1;
36020 let opNewValue = 0;
36021 let hasNewValue2 = 1;
36022 let opNewValue2 = 1;
36023 let DecoderNamespace = "EXT_mmvec";
36024 let Constraints = "$Vy32 = $Vy32in, $Vx32 = $Vx32in";
36025 }
36026 def V6_vshuffb : HInst<
36027 (outs HvxVR:$Vd32),
36028 (ins HvxVR:$Vu32),
36029 "$Vd32.b = vshuff($Vu32.b)",
36030 tc_946013d8, TypeCVI_VP>, Enc_e7581c, Requires<[UseHVXV60]> {
36031 let Inst{7-5} = 0b000;
36032 let Inst{13-13} = 0b0;
36033 let Inst{31-16} = 0b0001111000000010;
36034 let hasNewValue = 1;
36035 let opNewValue = 0;
36036 let DecoderNamespace = "EXT_mmvec";
36037 }
36038 def V6_vshuffb_alt : HInst<
36039 (outs HvxVR:$Vd32),
36040 (ins HvxVR:$Vu32),
36041 "$Vd32 = vshuffb($Vu32)",
36042 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36043 let hasNewValue = 1;
36044 let opNewValue = 0;
36045 let isPseudo = 1;
36046 let isCodeGenOnly = 1;
36047 let DecoderNamespace = "EXT_mmvec";
36048 }
36049 def V6_vshuffeb : HInst<
36050 (outs HvxVR:$Vd32),
36051 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36052 "$Vd32.b = vshuffe($Vu32.b,$Vv32.b)",
36053 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
36054 let Inst{7-5} = 0b001;
36055 let Inst{13-13} = 0b0;
36056 let Inst{31-21} = 0b00011111010;
36057 let hasNewValue = 1;
36058 let opNewValue = 0;
36059 let DecoderNamespace = "EXT_mmvec";
36060 }
36061 def V6_vshuffeb_alt : HInst<
36062 (outs HvxVR:$Vd32),
36063 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36064 "$Vd32 = vshuffeb($Vu32,$Vv32)",
36065 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36066 let hasNewValue = 1;
36067 let opNewValue = 0;
36068 let isPseudo = 1;
36069 let isCodeGenOnly = 1;
36070 let DecoderNamespace = "EXT_mmvec";
36071 }
36072 def V6_vshuffh : HInst<
36073 (outs HvxVR:$Vd32),
36074 (ins HvxVR:$Vu32),
36075 "$Vd32.h = vshuff($Vu32.h)",
36076 tc_946013d8, TypeCVI_VP>, Enc_e7581c, Requires<[UseHVXV60]> {
36077 let Inst{7-5} = 0b111;
36078 let Inst{13-13} = 0b0;
36079 let Inst{31-16} = 0b0001111000000001;
36080 let hasNewValue = 1;
36081 let opNewValue = 0;
36082 let DecoderNamespace = "EXT_mmvec";
36083 }
36084 def V6_vshuffh_alt : HInst<
36085 (outs HvxVR:$Vd32),
36086 (ins HvxVR:$Vu32),
36087 "$Vd32 = vshuffh($Vu32)",
36088 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36089 let hasNewValue = 1;
36090 let opNewValue = 0;
36091 let isPseudo = 1;
36092 let isCodeGenOnly = 1;
36093 let DecoderNamespace = "EXT_mmvec";
36094 }
36095 def V6_vshuffob : HInst<
36096 (outs HvxVR:$Vd32),
36097 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36098 "$Vd32.b = vshuffo($Vu32.b,$Vv32.b)",
36099 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
36100 let Inst{7-5} = 0b010;
36101 let Inst{13-13} = 0b0;
36102 let Inst{31-21} = 0b00011111010;
36103 let hasNewValue = 1;
36104 let opNewValue = 0;
36105 let DecoderNamespace = "EXT_mmvec";
36106 }
36107 def V6_vshuffob_alt : HInst<
36108 (outs HvxVR:$Vd32),
36109 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36110 "$Vd32 = vshuffob($Vu32,$Vv32)",
36111 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36112 let hasNewValue = 1;
36113 let opNewValue = 0;
36114 let isPseudo = 1;
36115 let isCodeGenOnly = 1;
36116 let DecoderNamespace = "EXT_mmvec";
36117 }
36118 def V6_vshuffvdd : HInst<
36119 (outs HvxWR:$Vdd32),
36120 (ins HvxVR:$Vu32, HvxVR:$Vv32, IntRegsLow8:$Rt8),
36121 "$Vdd32 = vshuff($Vu32,$Vv32,$Rt8)",
36122 tc_87adc037, TypeCVI_VP_VS>, Enc_24a7dc, Requires<[UseHVXV60]> {
36123 let Inst{7-5} = 0b011;
36124 let Inst{13-13} = 0b1;
36125 let Inst{31-24} = 0b00011011;
36126 let hasNewValue = 1;
36127 let opNewValue = 0;
36128 let DecoderNamespace = "EXT_mmvec";
36129 }
36130 def V6_vshufoeb : HInst<
36131 (outs HvxWR:$Vdd32),
36132 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36133 "$Vdd32.b = vshuffoe($Vu32.b,$Vv32.b)",
36134 tc_db5555f3, TypeCVI_VA_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
36135 let Inst{7-5} = 0b110;
36136 let Inst{13-13} = 0b0;
36137 let Inst{31-21} = 0b00011111010;
36138 let hasNewValue = 1;
36139 let opNewValue = 0;
36140 let DecoderNamespace = "EXT_mmvec";
36141 }
36142 def V6_vshufoeb_alt : HInst<
36143 (outs HvxWR:$Vdd32),
36144 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36145 "$Vdd32 = vshuffoeb($Vu32,$Vv32)",
36146 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36147 let hasNewValue = 1;
36148 let opNewValue = 0;
36149 let isPseudo = 1;
36150 let isCodeGenOnly = 1;
36151 let DecoderNamespace = "EXT_mmvec";
36152 }
36153 def V6_vshufoeh : HInst<
36154 (outs HvxWR:$Vdd32),
36155 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36156 "$Vdd32.h = vshuffoe($Vu32.h,$Vv32.h)",
36157 tc_db5555f3, TypeCVI_VA_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
36158 let Inst{7-5} = 0b101;
36159 let Inst{13-13} = 0b0;
36160 let Inst{31-21} = 0b00011111010;
36161 let hasNewValue = 1;
36162 let opNewValue = 0;
36163 let DecoderNamespace = "EXT_mmvec";
36164 }
36165 def V6_vshufoeh_alt : HInst<
36166 (outs HvxWR:$Vdd32),
36167 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36168 "$Vdd32 = vshuffoeh($Vu32,$Vv32)",
36169 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36170 let hasNewValue = 1;
36171 let opNewValue = 0;
36172 let isPseudo = 1;
36173 let isCodeGenOnly = 1;
36174 let DecoderNamespace = "EXT_mmvec";
36175 }
36176 def V6_vshufoh : HInst<
36177 (outs HvxVR:$Vd32),
36178 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36179 "$Vd32.h = vshuffo($Vu32.h,$Vv32.h)",
36180 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
36181 let Inst{7-5} = 0b100;
36182 let Inst{13-13} = 0b0;
36183 let Inst{31-21} = 0b00011111010;
36184 let hasNewValue = 1;
36185 let opNewValue = 0;
36186 let DecoderNamespace = "EXT_mmvec";
36187 }
36188 def V6_vshufoh_alt : HInst<
36189 (outs HvxVR:$Vd32),
36190 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36191 "$Vd32 = vshuffoh($Vu32,$Vv32)",
36192 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36193 let hasNewValue = 1;
36194 let opNewValue = 0;
36195 let isPseudo = 1;
36196 let isCodeGenOnly = 1;
36197 let DecoderNamespace = "EXT_mmvec";
36198 }
36199 def V6_vsubb : HInst<
36200 (outs HvxVR:$Vd32),
36201 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36202 "$Vd32.b = vsub($Vu32.b,$Vv32.b)",
36203 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
36204 let Inst{7-5} = 0b101;
36205 let Inst{13-13} = 0b0;
36206 let Inst{31-21} = 0b00011100010;
36207 let hasNewValue = 1;
36208 let opNewValue = 0;
36209 let DecoderNamespace = "EXT_mmvec";
36210 }
36211 def V6_vsubb_alt : HInst<
36212 (outs HvxVR:$Vd32),
36213 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36214 "$Vd32 = vsubb($Vu32,$Vv32)",
36215 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36216 let hasNewValue = 1;
36217 let opNewValue = 0;
36218 let isPseudo = 1;
36219 let isCodeGenOnly = 1;
36220 let DecoderNamespace = "EXT_mmvec";
36221 }
36222 def V6_vsubb_dv : HInst<
36223 (outs HvxWR:$Vdd32),
36224 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36225 "$Vdd32.b = vsub($Vuu32.b,$Vvv32.b)",
36226 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
36227 let Inst{7-5} = 0b011;
36228 let Inst{13-13} = 0b0;
36229 let Inst{31-21} = 0b00011100100;
36230 let hasNewValue = 1;
36231 let opNewValue = 0;
36232 let DecoderNamespace = "EXT_mmvec";
36233 }
36234 def V6_vsubb_dv_alt : HInst<
36235 (outs HvxWR:$Vdd32),
36236 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36237 "$Vdd32 = vsubb($Vuu32,$Vvv32)",
36238 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36239 let hasNewValue = 1;
36240 let opNewValue = 0;
36241 let isPseudo = 1;
36242 let isCodeGenOnly = 1;
36243 let DecoderNamespace = "EXT_mmvec";
36244 }
36245 def V6_vsubbnq : HInst<
36246 (outs HvxVR:$Vx32),
36247 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
36248 "if (!$Qv4) $Vx32.b -= $Vu32.b",
36249 tc_257f6f7c, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
36250 let Inst{7-5} = 0b001;
36251 let Inst{13-13} = 0b1;
36252 let Inst{21-16} = 0b000010;
36253 let Inst{31-24} = 0b00011110;
36254 let hasNewValue = 1;
36255 let opNewValue = 0;
36256 let DecoderNamespace = "EXT_mmvec";
36257 let Constraints = "$Vx32 = $Vx32in";
36258 }
36259 def V6_vsubbnq_alt : HInst<
36260 (outs HvxVR:$Vx32),
36261 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
36262 "if (!$Qv4.b) $Vx32.b -= $Vu32.b",
36263 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36264 let hasNewValue = 1;
36265 let opNewValue = 0;
36266 let isPseudo = 1;
36267 let isCodeGenOnly = 1;
36268 let DecoderNamespace = "EXT_mmvec";
36269 let Constraints = "$Vx32 = $Vx32in";
36270 }
36271 def V6_vsubbq : HInst<
36272 (outs HvxVR:$Vx32),
36273 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
36274 "if ($Qv4) $Vx32.b -= $Vu32.b",
36275 tc_257f6f7c, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
36276 let Inst{7-5} = 0b110;
36277 let Inst{13-13} = 0b1;
36278 let Inst{21-16} = 0b000001;
36279 let Inst{31-24} = 0b00011110;
36280 let hasNewValue = 1;
36281 let opNewValue = 0;
36282 let DecoderNamespace = "EXT_mmvec";
36283 let Constraints = "$Vx32 = $Vx32in";
36284 }
36285 def V6_vsubbq_alt : HInst<
36286 (outs HvxVR:$Vx32),
36287 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
36288 "if ($Qv4.b) $Vx32.b -= $Vu32.b",
36289 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36290 let hasNewValue = 1;
36291 let opNewValue = 0;
36292 let isPseudo = 1;
36293 let isCodeGenOnly = 1;
36294 let DecoderNamespace = "EXT_mmvec";
36295 let Constraints = "$Vx32 = $Vx32in";
36296 }
36297 def V6_vsubbsat : HInst<
36298 (outs HvxVR:$Vd32),
36299 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36300 "$Vd32.b = vsub($Vu32.b,$Vv32.b):sat",
36301 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
36302 let Inst{7-5} = 0b010;
36303 let Inst{13-13} = 0b0;
36304 let Inst{31-21} = 0b00011111001;
36305 let hasNewValue = 1;
36306 let opNewValue = 0;
36307 let DecoderNamespace = "EXT_mmvec";
36308 }
36309 def V6_vsubbsat_alt : HInst<
36310 (outs HvxVR:$Vd32),
36311 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36312 "$Vd32 = vsubb($Vu32,$Vv32):sat",
36313 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
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_vsubbsat_dv : HInst<
36321 (outs HvxWR:$Vdd32),
36322 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36323 "$Vdd32.b = vsub($Vuu32.b,$Vvv32.b):sat",
36324 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV62]> {
36325 let Inst{7-5} = 0b001;
36326 let Inst{13-13} = 0b0;
36327 let Inst{31-21} = 0b00011110101;
36328 let hasNewValue = 1;
36329 let opNewValue = 0;
36330 let DecoderNamespace = "EXT_mmvec";
36331 }
36332 def V6_vsubbsat_dv_alt : HInst<
36333 (outs HvxWR:$Vdd32),
36334 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36335 "$Vdd32 = vsubb($Vuu32,$Vvv32):sat",
36336 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
36337 let hasNewValue = 1;
36338 let opNewValue = 0;
36339 let isPseudo = 1;
36340 let isCodeGenOnly = 1;
36341 let DecoderNamespace = "EXT_mmvec";
36342 }
36343 def V6_vsubcarry : HInst<
36344 (outs HvxVR:$Vd32, HvxQR:$Qx4),
36345 (ins HvxVR:$Vu32, HvxVR:$Vv32, HvxQR:$Qx4in),
36346 "$Vd32.w = vsub($Vu32.w,$Vv32.w,$Qx4):carry",
36347 tc_7e6a3e89, TypeCVI_VA>, Enc_b43b67, Requires<[UseHVXV62]> {
36348 let Inst{7-7} = 0b1;
36349 let Inst{13-13} = 0b1;
36350 let Inst{31-21} = 0b00011100101;
36351 let hasNewValue = 1;
36352 let opNewValue = 0;
36353 let DecoderNamespace = "EXT_mmvec";
36354 let Constraints = "$Qx4 = $Qx4in";
36355 }
36356 def V6_vsubcarryo : HInst<
36357 (outs HvxVR:$Vd32, HvxQR:$Qe4),
36358 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36359 "$Vd32.w,$Qe4 = vsub($Vu32.w,$Vv32.w):carry",
36360 tc_e35c1e93, TypeCOPROC_VX>, Enc_c1d806, Requires<[UseHVXV66]> {
36361 let Inst{7-7} = 0b1;
36362 let Inst{13-13} = 0b1;
36363 let Inst{31-21} = 0b00011101101;
36364 let hasNewValue = 1;
36365 let opNewValue = 0;
36366 let hasNewValue2 = 1;
36367 let opNewValue2 = 1;
36368 let DecoderNamespace = "EXT_mmvec";
36369 }
36370 def V6_vsubh : HInst<
36371 (outs HvxVR:$Vd32),
36372 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36373 "$Vd32.h = vsub($Vu32.h,$Vv32.h)",
36374 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
36375 let Inst{7-5} = 0b110;
36376 let Inst{13-13} = 0b0;
36377 let Inst{31-21} = 0b00011100010;
36378 let hasNewValue = 1;
36379 let opNewValue = 0;
36380 let DecoderNamespace = "EXT_mmvec";
36381 }
36382 def V6_vsubh_alt : HInst<
36383 (outs HvxVR:$Vd32),
36384 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36385 "$Vd32 = vsubh($Vu32,$Vv32)",
36386 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36387 let hasNewValue = 1;
36388 let opNewValue = 0;
36389 let isPseudo = 1;
36390 let isCodeGenOnly = 1;
36391 let DecoderNamespace = "EXT_mmvec";
36392 }
36393 def V6_vsubh_dv : HInst<
36394 (outs HvxWR:$Vdd32),
36395 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36396 "$Vdd32.h = vsub($Vuu32.h,$Vvv32.h)",
36397 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
36398 let Inst{7-5} = 0b100;
36399 let Inst{13-13} = 0b0;
36400 let Inst{31-21} = 0b00011100100;
36401 let hasNewValue = 1;
36402 let opNewValue = 0;
36403 let DecoderNamespace = "EXT_mmvec";
36404 }
36405 def V6_vsubh_dv_alt : HInst<
36406 (outs HvxWR:$Vdd32),
36407 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36408 "$Vdd32 = vsubh($Vuu32,$Vvv32)",
36409 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36410 let hasNewValue = 1;
36411 let opNewValue = 0;
36412 let isPseudo = 1;
36413 let isCodeGenOnly = 1;
36414 let DecoderNamespace = "EXT_mmvec";
36415 }
36416 def V6_vsubhnq : HInst<
36417 (outs HvxVR:$Vx32),
36418 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
36419 "if (!$Qv4) $Vx32.h -= $Vu32.h",
36420 tc_257f6f7c, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
36421 let Inst{7-5} = 0b010;
36422 let Inst{13-13} = 0b1;
36423 let Inst{21-16} = 0b000010;
36424 let Inst{31-24} = 0b00011110;
36425 let hasNewValue = 1;
36426 let opNewValue = 0;
36427 let DecoderNamespace = "EXT_mmvec";
36428 let Constraints = "$Vx32 = $Vx32in";
36429 }
36430 def V6_vsubhnq_alt : HInst<
36431 (outs HvxVR:$Vx32),
36432 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
36433 "if (!$Qv4.h) $Vx32.h -= $Vu32.h",
36434 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36435 let hasNewValue = 1;
36436 let opNewValue = 0;
36437 let isPseudo = 1;
36438 let isCodeGenOnly = 1;
36439 let DecoderNamespace = "EXT_mmvec";
36440 let Constraints = "$Vx32 = $Vx32in";
36441 }
36442 def V6_vsubhq : HInst<
36443 (outs HvxVR:$Vx32),
36444 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
36445 "if ($Qv4) $Vx32.h -= $Vu32.h",
36446 tc_257f6f7c, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
36447 let Inst{7-5} = 0b111;
36448 let Inst{13-13} = 0b1;
36449 let Inst{21-16} = 0b000001;
36450 let Inst{31-24} = 0b00011110;
36451 let hasNewValue = 1;
36452 let opNewValue = 0;
36453 let DecoderNamespace = "EXT_mmvec";
36454 let Constraints = "$Vx32 = $Vx32in";
36455 }
36456 def V6_vsubhq_alt : HInst<
36457 (outs HvxVR:$Vx32),
36458 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
36459 "if ($Qv4.h) $Vx32.h -= $Vu32.h",
36460 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36461 let hasNewValue = 1;
36462 let opNewValue = 0;
36463 let isPseudo = 1;
36464 let isCodeGenOnly = 1;
36465 let DecoderNamespace = "EXT_mmvec";
36466 let Constraints = "$Vx32 = $Vx32in";
36467 }
36468 def V6_vsubhsat : HInst<
36469 (outs HvxVR:$Vd32),
36470 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36471 "$Vd32.h = vsub($Vu32.h,$Vv32.h):sat",
36472 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
36473 let Inst{7-5} = 0b010;
36474 let Inst{13-13} = 0b0;
36475 let Inst{31-21} = 0b00011100011;
36476 let hasNewValue = 1;
36477 let opNewValue = 0;
36478 let DecoderNamespace = "EXT_mmvec";
36479 }
36480 def V6_vsubhsat_alt : HInst<
36481 (outs HvxVR:$Vd32),
36482 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36483 "$Vd32 = vsubh($Vu32,$Vv32):sat",
36484 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36485 let hasNewValue = 1;
36486 let opNewValue = 0;
36487 let isPseudo = 1;
36488 let isCodeGenOnly = 1;
36489 let DecoderNamespace = "EXT_mmvec";
36490 }
36491 def V6_vsubhsat_dv : HInst<
36492 (outs HvxWR:$Vdd32),
36493 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36494 "$Vdd32.h = vsub($Vuu32.h,$Vvv32.h):sat",
36495 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
36496 let Inst{7-5} = 0b000;
36497 let Inst{13-13} = 0b0;
36498 let Inst{31-21} = 0b00011100101;
36499 let hasNewValue = 1;
36500 let opNewValue = 0;
36501 let DecoderNamespace = "EXT_mmvec";
36502 }
36503 def V6_vsubhsat_dv_alt : HInst<
36504 (outs HvxWR:$Vdd32),
36505 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36506 "$Vdd32 = vsubh($Vuu32,$Vvv32):sat",
36507 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36508 let hasNewValue = 1;
36509 let opNewValue = 0;
36510 let isPseudo = 1;
36511 let isCodeGenOnly = 1;
36512 let DecoderNamespace = "EXT_mmvec";
36513 }
36514 def V6_vsubhw : HInst<
36515 (outs HvxWR:$Vdd32),
36516 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36517 "$Vdd32.w = vsub($Vu32.h,$Vv32.h)",
36518 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
36519 let Inst{7-5} = 0b111;
36520 let Inst{13-13} = 0b0;
36521 let Inst{31-21} = 0b00011100101;
36522 let hasNewValue = 1;
36523 let opNewValue = 0;
36524 let DecoderNamespace = "EXT_mmvec";
36525 }
36526 def V6_vsubhw_alt : HInst<
36527 (outs HvxWR:$Vdd32),
36528 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36529 "$Vdd32 = vsubh($Vu32,$Vv32)",
36530 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36531 let hasNewValue = 1;
36532 let opNewValue = 0;
36533 let isPseudo = 1;
36534 let isCodeGenOnly = 1;
36535 let DecoderNamespace = "EXT_mmvec";
36536 }
36537 def V6_vsububh : HInst<
36538 (outs HvxWR:$Vdd32),
36539 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36540 "$Vdd32.h = vsub($Vu32.ub,$Vv32.ub)",
36541 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
36542 let Inst{7-5} = 0b101;
36543 let Inst{13-13} = 0b0;
36544 let Inst{31-21} = 0b00011100101;
36545 let hasNewValue = 1;
36546 let opNewValue = 0;
36547 let DecoderNamespace = "EXT_mmvec";
36548 }
36549 def V6_vsububh_alt : HInst<
36550 (outs HvxWR:$Vdd32),
36551 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36552 "$Vdd32 = vsubub($Vu32,$Vv32)",
36553 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36554 let hasNewValue = 1;
36555 let opNewValue = 0;
36556 let isPseudo = 1;
36557 let isCodeGenOnly = 1;
36558 let DecoderNamespace = "EXT_mmvec";
36559 }
36560 def V6_vsububsat : HInst<
36561 (outs HvxVR:$Vd32),
36562 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36563 "$Vd32.ub = vsub($Vu32.ub,$Vv32.ub):sat",
36564 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
36565 let Inst{7-5} = 0b000;
36566 let Inst{13-13} = 0b0;
36567 let Inst{31-21} = 0b00011100011;
36568 let hasNewValue = 1;
36569 let opNewValue = 0;
36570 let DecoderNamespace = "EXT_mmvec";
36571 }
36572 def V6_vsububsat_alt : HInst<
36573 (outs HvxVR:$Vd32),
36574 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36575 "$Vd32 = vsubub($Vu32,$Vv32):sat",
36576 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36577 let hasNewValue = 1;
36578 let opNewValue = 0;
36579 let isPseudo = 1;
36580 let isCodeGenOnly = 1;
36581 let DecoderNamespace = "EXT_mmvec";
36582 }
36583 def V6_vsububsat_dv : HInst<
36584 (outs HvxWR:$Vdd32),
36585 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36586 "$Vdd32.ub = vsub($Vuu32.ub,$Vvv32.ub):sat",
36587 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
36588 let Inst{7-5} = 0b110;
36589 let Inst{13-13} = 0b0;
36590 let Inst{31-21} = 0b00011100100;
36591 let hasNewValue = 1;
36592 let opNewValue = 0;
36593 let DecoderNamespace = "EXT_mmvec";
36594 }
36595 def V6_vsububsat_dv_alt : HInst<
36596 (outs HvxWR:$Vdd32),
36597 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36598 "$Vdd32 = vsubub($Vuu32,$Vvv32):sat",
36599 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36600 let hasNewValue = 1;
36601 let opNewValue = 0;
36602 let isPseudo = 1;
36603 let isCodeGenOnly = 1;
36604 let DecoderNamespace = "EXT_mmvec";
36605 }
36606 def V6_vsubububb_sat : HInst<
36607 (outs HvxVR:$Vd32),
36608 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36609 "$Vd32.ub = vsub($Vu32.ub,$Vv32.b):sat",
36610 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
36611 let Inst{7-5} = 0b101;
36612 let Inst{13-13} = 0b0;
36613 let Inst{31-21} = 0b00011110101;
36614 let hasNewValue = 1;
36615 let opNewValue = 0;
36616 let DecoderNamespace = "EXT_mmvec";
36617 }
36618 def V6_vsubuhsat : HInst<
36619 (outs HvxVR:$Vd32),
36620 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36621 "$Vd32.uh = vsub($Vu32.uh,$Vv32.uh):sat",
36622 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
36623 let Inst{7-5} = 0b001;
36624 let Inst{13-13} = 0b0;
36625 let Inst{31-21} = 0b00011100011;
36626 let hasNewValue = 1;
36627 let opNewValue = 0;
36628 let DecoderNamespace = "EXT_mmvec";
36629 }
36630 def V6_vsubuhsat_alt : HInst<
36631 (outs HvxVR:$Vd32),
36632 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36633 "$Vd32 = vsubuh($Vu32,$Vv32):sat",
36634 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36635 let hasNewValue = 1;
36636 let opNewValue = 0;
36637 let isPseudo = 1;
36638 let isCodeGenOnly = 1;
36639 let DecoderNamespace = "EXT_mmvec";
36640 }
36641 def V6_vsubuhsat_dv : HInst<
36642 (outs HvxWR:$Vdd32),
36643 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36644 "$Vdd32.uh = vsub($Vuu32.uh,$Vvv32.uh):sat",
36645 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
36646 let Inst{7-5} = 0b111;
36647 let Inst{13-13} = 0b0;
36648 let Inst{31-21} = 0b00011100100;
36649 let hasNewValue = 1;
36650 let opNewValue = 0;
36651 let DecoderNamespace = "EXT_mmvec";
36652 }
36653 def V6_vsubuhsat_dv_alt : HInst<
36654 (outs HvxWR:$Vdd32),
36655 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36656 "$Vdd32 = vsubuh($Vuu32,$Vvv32):sat",
36657 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36658 let hasNewValue = 1;
36659 let opNewValue = 0;
36660 let isPseudo = 1;
36661 let isCodeGenOnly = 1;
36662 let DecoderNamespace = "EXT_mmvec";
36663 }
36664 def V6_vsubuhw : HInst<
36665 (outs HvxWR:$Vdd32),
36666 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36667 "$Vdd32.w = vsub($Vu32.uh,$Vv32.uh)",
36668 tc_d8287c14, TypeCVI_VX_DV>, Enc_71bb9b, Requires<[UseHVXV60]> {
36669 let Inst{7-5} = 0b110;
36670 let Inst{13-13} = 0b0;
36671 let Inst{31-21} = 0b00011100101;
36672 let hasNewValue = 1;
36673 let opNewValue = 0;
36674 let DecoderNamespace = "EXT_mmvec";
36675 }
36676 def V6_vsubuhw_alt : HInst<
36677 (outs HvxWR:$Vdd32),
36678 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36679 "$Vdd32 = vsubuh($Vu32,$Vv32)",
36680 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36681 let hasNewValue = 1;
36682 let opNewValue = 0;
36683 let isPseudo = 1;
36684 let isCodeGenOnly = 1;
36685 let DecoderNamespace = "EXT_mmvec";
36686 }
36687 def V6_vsubuwsat : HInst<
36688 (outs HvxVR:$Vd32),
36689 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36690 "$Vd32.uw = vsub($Vu32.uw,$Vv32.uw):sat",
36691 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV62]> {
36692 let Inst{7-5} = 0b100;
36693 let Inst{13-13} = 0b0;
36694 let Inst{31-21} = 0b00011111110;
36695 let hasNewValue = 1;
36696 let opNewValue = 0;
36697 let DecoderNamespace = "EXT_mmvec";
36698 }
36699 def V6_vsubuwsat_alt : HInst<
36700 (outs HvxVR:$Vd32),
36701 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36702 "$Vd32 = vsubuw($Vu32,$Vv32):sat",
36703 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
36704 let hasNewValue = 1;
36705 let opNewValue = 0;
36706 let isPseudo = 1;
36707 let isCodeGenOnly = 1;
36708 let DecoderNamespace = "EXT_mmvec";
36709 }
36710 def V6_vsubuwsat_dv : HInst<
36711 (outs HvxWR:$Vdd32),
36712 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36713 "$Vdd32.uw = vsub($Vuu32.uw,$Vvv32.uw):sat",
36714 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV62]> {
36715 let Inst{7-5} = 0b011;
36716 let Inst{13-13} = 0b0;
36717 let Inst{31-21} = 0b00011110101;
36718 let hasNewValue = 1;
36719 let opNewValue = 0;
36720 let DecoderNamespace = "EXT_mmvec";
36721 }
36722 def V6_vsubuwsat_dv_alt : HInst<
36723 (outs HvxWR:$Vdd32),
36724 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36725 "$Vdd32 = vsubuw($Vuu32,$Vvv32):sat",
36726 PSEUDO, TypeMAPPING>, Requires<[UseHVXV62]> {
36727 let hasNewValue = 1;
36728 let opNewValue = 0;
36729 let isPseudo = 1;
36730 let isCodeGenOnly = 1;
36731 let DecoderNamespace = "EXT_mmvec";
36732 }
36733 def V6_vsubw : HInst<
36734 (outs HvxVR:$Vd32),
36735 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36736 "$Vd32.w = vsub($Vu32.w,$Vv32.w)",
36737 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
36738 let Inst{7-5} = 0b111;
36739 let Inst{13-13} = 0b0;
36740 let Inst{31-21} = 0b00011100010;
36741 let hasNewValue = 1;
36742 let opNewValue = 0;
36743 let DecoderNamespace = "EXT_mmvec";
36744 }
36745 def V6_vsubw_alt : HInst<
36746 (outs HvxVR:$Vd32),
36747 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36748 "$Vd32 = vsubw($Vu32,$Vv32)",
36749 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36750 let hasNewValue = 1;
36751 let opNewValue = 0;
36752 let isPseudo = 1;
36753 let isCodeGenOnly = 1;
36754 let DecoderNamespace = "EXT_mmvec";
36755 }
36756 def V6_vsubw_dv : HInst<
36757 (outs HvxWR:$Vdd32),
36758 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36759 "$Vdd32.w = vsub($Vuu32.w,$Vvv32.w)",
36760 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
36761 let Inst{7-5} = 0b101;
36762 let Inst{13-13} = 0b0;
36763 let Inst{31-21} = 0b00011100100;
36764 let hasNewValue = 1;
36765 let opNewValue = 0;
36766 let DecoderNamespace = "EXT_mmvec";
36767 }
36768 def V6_vsubw_dv_alt : HInst<
36769 (outs HvxWR:$Vdd32),
36770 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36771 "$Vdd32 = vsubw($Vuu32,$Vvv32)",
36772 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36773 let hasNewValue = 1;
36774 let opNewValue = 0;
36775 let isPseudo = 1;
36776 let isCodeGenOnly = 1;
36777 let DecoderNamespace = "EXT_mmvec";
36778 }
36779 def V6_vsubwnq : HInst<
36780 (outs HvxVR:$Vx32),
36781 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
36782 "if (!$Qv4) $Vx32.w -= $Vu32.w",
36783 tc_257f6f7c, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
36784 let Inst{7-5} = 0b011;
36785 let Inst{13-13} = 0b1;
36786 let Inst{21-16} = 0b000010;
36787 let Inst{31-24} = 0b00011110;
36788 let hasNewValue = 1;
36789 let opNewValue = 0;
36790 let DecoderNamespace = "EXT_mmvec";
36791 let Constraints = "$Vx32 = $Vx32in";
36792 }
36793 def V6_vsubwnq_alt : HInst<
36794 (outs HvxVR:$Vx32),
36795 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
36796 "if (!$Qv4.w) $Vx32.w -= $Vu32.w",
36797 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36798 let hasNewValue = 1;
36799 let opNewValue = 0;
36800 let isPseudo = 1;
36801 let isCodeGenOnly = 1;
36802 let DecoderNamespace = "EXT_mmvec";
36803 let Constraints = "$Vx32 = $Vx32in";
36804 }
36805 def V6_vsubwq : HInst<
36806 (outs HvxVR:$Vx32),
36807 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
36808 "if ($Qv4) $Vx32.w -= $Vu32.w",
36809 tc_257f6f7c, TypeCVI_VA>, Enc_a90628, Requires<[UseHVXV60]> {
36810 let Inst{7-5} = 0b000;
36811 let Inst{13-13} = 0b1;
36812 let Inst{21-16} = 0b000010;
36813 let Inst{31-24} = 0b00011110;
36814 let hasNewValue = 1;
36815 let opNewValue = 0;
36816 let DecoderNamespace = "EXT_mmvec";
36817 let Constraints = "$Vx32 = $Vx32in";
36818 }
36819 def V6_vsubwq_alt : HInst<
36820 (outs HvxVR:$Vx32),
36821 (ins HvxQR:$Qv4, HvxVR:$Vx32in, HvxVR:$Vu32),
36822 "if ($Qv4.w) $Vx32.w -= $Vu32.w",
36823 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36824 let hasNewValue = 1;
36825 let opNewValue = 0;
36826 let isPseudo = 1;
36827 let isCodeGenOnly = 1;
36828 let DecoderNamespace = "EXT_mmvec";
36829 let Constraints = "$Vx32 = $Vx32in";
36830 }
36831 def V6_vsubwsat : HInst<
36832 (outs HvxVR:$Vd32),
36833 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36834 "$Vd32.w = vsub($Vu32.w,$Vv32.w):sat",
36835 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
36836 let Inst{7-5} = 0b011;
36837 let Inst{13-13} = 0b0;
36838 let Inst{31-21} = 0b00011100011;
36839 let hasNewValue = 1;
36840 let opNewValue = 0;
36841 let DecoderNamespace = "EXT_mmvec";
36842 }
36843 def V6_vsubwsat_alt : HInst<
36844 (outs HvxVR:$Vd32),
36845 (ins HvxVR:$Vu32, HvxVR:$Vv32),
36846 "$Vd32 = vsubw($Vu32,$Vv32):sat",
36847 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36848 let hasNewValue = 1;
36849 let opNewValue = 0;
36850 let isPseudo = 1;
36851 let isCodeGenOnly = 1;
36852 let DecoderNamespace = "EXT_mmvec";
36853 }
36854 def V6_vsubwsat_dv : HInst<
36855 (outs HvxWR:$Vdd32),
36856 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36857 "$Vdd32.w = vsub($Vuu32.w,$Vvv32.w):sat",
36858 tc_db5555f3, TypeCVI_VA_DV>, Enc_f8ecf9, Requires<[UseHVXV60]> {
36859 let Inst{7-5} = 0b001;
36860 let Inst{13-13} = 0b0;
36861 let Inst{31-21} = 0b00011100101;
36862 let hasNewValue = 1;
36863 let opNewValue = 0;
36864 let DecoderNamespace = "EXT_mmvec";
36865 }
36866 def V6_vsubwsat_dv_alt : HInst<
36867 (outs HvxWR:$Vdd32),
36868 (ins HvxWR:$Vuu32, HvxWR:$Vvv32),
36869 "$Vdd32 = vsubw($Vuu32,$Vvv32):sat",
36870 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36871 let hasNewValue = 1;
36872 let opNewValue = 0;
36873 let isPseudo = 1;
36874 let isCodeGenOnly = 1;
36875 let DecoderNamespace = "EXT_mmvec";
36876 }
36877 def V6_vswap : HInst<
36878 (outs HvxWR:$Vdd32),
36879 (ins HvxQR:$Qt4, HvxVR:$Vu32, HvxVR:$Vv32),
36880 "$Vdd32 = vswap($Qt4,$Vu32,$Vv32)",
36881 tc_71646d06, TypeCVI_VA_DV>, Enc_3dac0b, Requires<[UseHVXV60]> {
36882 let Inst{7-7} = 0b0;
36883 let Inst{13-13} = 0b1;
36884 let Inst{31-21} = 0b00011110101;
36885 let hasNewValue = 1;
36886 let opNewValue = 0;
36887 let DecoderNamespace = "EXT_mmvec";
36888 }
36889 def V6_vtmpyb : HInst<
36890 (outs HvxWR:$Vdd32),
36891 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
36892 "$Vdd32.h = vtmpy($Vuu32.b,$Rt32.b)",
36893 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV60]> {
36894 let Inst{7-5} = 0b000;
36895 let Inst{13-13} = 0b0;
36896 let Inst{31-21} = 0b00011001000;
36897 let hasNewValue = 1;
36898 let opNewValue = 0;
36899 let DecoderNamespace = "EXT_mmvec";
36900 }
36901 def V6_vtmpyb_acc : HInst<
36902 (outs HvxWR:$Vxx32),
36903 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
36904 "$Vxx32.h += vtmpy($Vuu32.b,$Rt32.b)",
36905 tc_660769f1, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV60]> {
36906 let Inst{7-5} = 0b000;
36907 let Inst{13-13} = 0b1;
36908 let Inst{31-21} = 0b00011001000;
36909 let hasNewValue = 1;
36910 let opNewValue = 0;
36911 let isAccumulator = 1;
36912 let DecoderNamespace = "EXT_mmvec";
36913 let Constraints = "$Vxx32 = $Vxx32in";
36914 }
36915 def V6_vtmpyb_acc_alt : HInst<
36916 (outs HvxWR:$Vxx32),
36917 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
36918 "$Vxx32 += vtmpyb($Vuu32,$Rt32)",
36919 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36920 let hasNewValue = 1;
36921 let opNewValue = 0;
36922 let isAccumulator = 1;
36923 let isPseudo = 1;
36924 let isCodeGenOnly = 1;
36925 let DecoderNamespace = "EXT_mmvec";
36926 let Constraints = "$Vxx32 = $Vxx32in";
36927 }
36928 def V6_vtmpyb_alt : HInst<
36929 (outs HvxWR:$Vdd32),
36930 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
36931 "$Vdd32 = vtmpyb($Vuu32,$Rt32)",
36932 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36933 let hasNewValue = 1;
36934 let opNewValue = 0;
36935 let isPseudo = 1;
36936 let isCodeGenOnly = 1;
36937 let DecoderNamespace = "EXT_mmvec";
36938 }
36939 def V6_vtmpybus : HInst<
36940 (outs HvxWR:$Vdd32),
36941 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
36942 "$Vdd32.h = vtmpy($Vuu32.ub,$Rt32.b)",
36943 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV60]> {
36944 let Inst{7-5} = 0b001;
36945 let Inst{13-13} = 0b0;
36946 let Inst{31-21} = 0b00011001000;
36947 let hasNewValue = 1;
36948 let opNewValue = 0;
36949 let DecoderNamespace = "EXT_mmvec";
36950 }
36951 def V6_vtmpybus_acc : HInst<
36952 (outs HvxWR:$Vxx32),
36953 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
36954 "$Vxx32.h += vtmpy($Vuu32.ub,$Rt32.b)",
36955 tc_660769f1, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV60]> {
36956 let Inst{7-5} = 0b001;
36957 let Inst{13-13} = 0b1;
36958 let Inst{31-21} = 0b00011001000;
36959 let hasNewValue = 1;
36960 let opNewValue = 0;
36961 let isAccumulator = 1;
36962 let DecoderNamespace = "EXT_mmvec";
36963 let Constraints = "$Vxx32 = $Vxx32in";
36964 }
36965 def V6_vtmpybus_acc_alt : HInst<
36966 (outs HvxWR:$Vxx32),
36967 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
36968 "$Vxx32 += vtmpybus($Vuu32,$Rt32)",
36969 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36970 let hasNewValue = 1;
36971 let opNewValue = 0;
36972 let isAccumulator = 1;
36973 let isPseudo = 1;
36974 let isCodeGenOnly = 1;
36975 let DecoderNamespace = "EXT_mmvec";
36976 let Constraints = "$Vxx32 = $Vxx32in";
36977 }
36978 def V6_vtmpybus_alt : HInst<
36979 (outs HvxWR:$Vdd32),
36980 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
36981 "$Vdd32 = vtmpybus($Vuu32,$Rt32)",
36982 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
36983 let hasNewValue = 1;
36984 let opNewValue = 0;
36985 let isPseudo = 1;
36986 let isCodeGenOnly = 1;
36987 let DecoderNamespace = "EXT_mmvec";
36988 }
36989 def V6_vtmpyhb : HInst<
36990 (outs HvxWR:$Vdd32),
36991 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
36992 "$Vdd32.w = vtmpy($Vuu32.h,$Rt32.b)",
36993 tc_0b04c6c7, TypeCVI_VX_DV>, Enc_aad80c, Requires<[UseHVXV60]> {
36994 let Inst{7-5} = 0b100;
36995 let Inst{13-13} = 0b0;
36996 let Inst{31-21} = 0b00011001101;
36997 let hasNewValue = 1;
36998 let opNewValue = 0;
36999 let DecoderNamespace = "EXT_mmvec";
37000 }
37001 def V6_vtmpyhb_acc : HInst<
37002 (outs HvxWR:$Vxx32),
37003 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
37004 "$Vxx32.w += vtmpy($Vuu32.h,$Rt32.b)",
37005 tc_660769f1, TypeCVI_VX_DV>, Enc_d6990d, Requires<[UseHVXV60]> {
37006 let Inst{7-5} = 0b010;
37007 let Inst{13-13} = 0b1;
37008 let Inst{31-21} = 0b00011001000;
37009 let hasNewValue = 1;
37010 let opNewValue = 0;
37011 let isAccumulator = 1;
37012 let DecoderNamespace = "EXT_mmvec";
37013 let Constraints = "$Vxx32 = $Vxx32in";
37014 }
37015 def V6_vtmpyhb_acc_alt : HInst<
37016 (outs HvxWR:$Vxx32),
37017 (ins HvxWR:$Vxx32in, HvxWR:$Vuu32, IntRegs:$Rt32),
37018 "$Vxx32 += vtmpyhb($Vuu32,$Rt32)",
37019 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37020 let hasNewValue = 1;
37021 let opNewValue = 0;
37022 let isAccumulator = 1;
37023 let isPseudo = 1;
37024 let isCodeGenOnly = 1;
37025 let DecoderNamespace = "EXT_mmvec";
37026 let Constraints = "$Vxx32 = $Vxx32in";
37027 }
37028 def V6_vtmpyhb_alt : HInst<
37029 (outs HvxWR:$Vdd32),
37030 (ins HvxWR:$Vuu32, IntRegs:$Rt32),
37031 "$Vdd32 = vtmpyhb($Vuu32,$Rt32)",
37032 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37033 let hasNewValue = 1;
37034 let opNewValue = 0;
37035 let isPseudo = 1;
37036 let isCodeGenOnly = 1;
37037 let DecoderNamespace = "EXT_mmvec";
37038 }
37039 def V6_vtran2x2_map : HInst<
37040 (outs HvxVR:$Vy32, HvxVR:$Vx32),
37041 (ins HvxVR:$Vy32in, HvxVR:$Vx32in, IntRegs:$Rt32),
37042 "vtrans2x2($Vy32,$Vx32,$Rt32)",
37043 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37044 let hasNewValue = 1;
37045 let opNewValue = 0;
37046 let hasNewValue2 = 1;
37047 let opNewValue2 = 1;
37048 let isPseudo = 1;
37049 let isCodeGenOnly = 1;
37050 let DecoderNamespace = "EXT_mmvec";
37051 let Constraints = "$Vy32 = $Vy32in, $Vx32 = $Vx32in";
37052 }
37053 def V6_vunpackb : HInst<
37054 (outs HvxWR:$Vdd32),
37055 (ins HvxVR:$Vu32),
37056 "$Vdd32.h = vunpack($Vu32.b)",
37057 tc_04da405a, TypeCVI_VP_VS>, Enc_dd766a, Requires<[UseHVXV60]> {
37058 let Inst{7-5} = 0b010;
37059 let Inst{13-13} = 0b0;
37060 let Inst{31-16} = 0b0001111000000001;
37061 let hasNewValue = 1;
37062 let opNewValue = 0;
37063 let DecoderNamespace = "EXT_mmvec";
37064 }
37065 def V6_vunpackb_alt : HInst<
37066 (outs HvxWR:$Vdd32),
37067 (ins HvxVR:$Vu32),
37068 "$Vdd32 = vunpackb($Vu32)",
37069 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37070 let hasNewValue = 1;
37071 let opNewValue = 0;
37072 let isPseudo = 1;
37073 let isCodeGenOnly = 1;
37074 let DecoderNamespace = "EXT_mmvec";
37075 }
37076 def V6_vunpackh : HInst<
37077 (outs HvxWR:$Vdd32),
37078 (ins HvxVR:$Vu32),
37079 "$Vdd32.w = vunpack($Vu32.h)",
37080 tc_04da405a, TypeCVI_VP_VS>, Enc_dd766a, Requires<[UseHVXV60]> {
37081 let Inst{7-5} = 0b011;
37082 let Inst{13-13} = 0b0;
37083 let Inst{31-16} = 0b0001111000000001;
37084 let hasNewValue = 1;
37085 let opNewValue = 0;
37086 let DecoderNamespace = "EXT_mmvec";
37087 }
37088 def V6_vunpackh_alt : HInst<
37089 (outs HvxWR:$Vdd32),
37090 (ins HvxVR:$Vu32),
37091 "$Vdd32 = vunpackh($Vu32)",
37092 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37093 let hasNewValue = 1;
37094 let opNewValue = 0;
37095 let isPseudo = 1;
37096 let isCodeGenOnly = 1;
37097 let DecoderNamespace = "EXT_mmvec";
37098 }
37099 def V6_vunpackob : HInst<
37100 (outs HvxWR:$Vxx32),
37101 (ins HvxWR:$Vxx32in, HvxVR:$Vu32),
37102 "$Vxx32.h |= vunpacko($Vu32.b)",
37103 tc_2c745bb8, TypeCVI_VP_VS>, Enc_500cb0, Requires<[UseHVXV60]> {
37104 let Inst{7-5} = 0b000;
37105 let Inst{13-13} = 0b1;
37106 let Inst{31-16} = 0b0001111000000000;
37107 let hasNewValue = 1;
37108 let opNewValue = 0;
37109 let isAccumulator = 1;
37110 let DecoderNamespace = "EXT_mmvec";
37111 let Constraints = "$Vxx32 = $Vxx32in";
37112 }
37113 def V6_vunpackob_alt : HInst<
37114 (outs HvxWR:$Vxx32),
37115 (ins HvxWR:$Vxx32in, HvxVR:$Vu32),
37116 "$Vxx32 |= vunpackob($Vu32)",
37117 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37118 let hasNewValue = 1;
37119 let opNewValue = 0;
37120 let isAccumulator = 1;
37121 let isPseudo = 1;
37122 let DecoderNamespace = "EXT_mmvec";
37123 let Constraints = "$Vxx32 = $Vxx32in";
37124 }
37125 def V6_vunpackoh : HInst<
37126 (outs HvxWR:$Vxx32),
37127 (ins HvxWR:$Vxx32in, HvxVR:$Vu32),
37128 "$Vxx32.w |= vunpacko($Vu32.h)",
37129 tc_2c745bb8, TypeCVI_VP_VS>, Enc_500cb0, Requires<[UseHVXV60]> {
37130 let Inst{7-5} = 0b001;
37131 let Inst{13-13} = 0b1;
37132 let Inst{31-16} = 0b0001111000000000;
37133 let hasNewValue = 1;
37134 let opNewValue = 0;
37135 let isAccumulator = 1;
37136 let DecoderNamespace = "EXT_mmvec";
37137 let Constraints = "$Vxx32 = $Vxx32in";
37138 }
37139 def V6_vunpackoh_alt : HInst<
37140 (outs HvxWR:$Vxx32),
37141 (ins HvxWR:$Vxx32in, HvxVR:$Vu32),
37142 "$Vxx32 |= vunpackoh($Vu32)",
37143 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37144 let hasNewValue = 1;
37145 let opNewValue = 0;
37146 let isAccumulator = 1;
37147 let isPseudo = 1;
37148 let isCodeGenOnly = 1;
37149 let DecoderNamespace = "EXT_mmvec";
37150 let Constraints = "$Vxx32 = $Vxx32in";
37151 }
37152 def V6_vunpackub : HInst<
37153 (outs HvxWR:$Vdd32),
37154 (ins HvxVR:$Vu32),
37155 "$Vdd32.uh = vunpack($Vu32.ub)",
37156 tc_04da405a, TypeCVI_VP_VS>, Enc_dd766a, Requires<[UseHVXV60]> {
37157 let Inst{7-5} = 0b000;
37158 let Inst{13-13} = 0b0;
37159 let Inst{31-16} = 0b0001111000000001;
37160 let hasNewValue = 1;
37161 let opNewValue = 0;
37162 let DecoderNamespace = "EXT_mmvec";
37163 }
37164 def V6_vunpackub_alt : HInst<
37165 (outs HvxWR:$Vdd32),
37166 (ins HvxVR:$Vu32),
37167 "$Vdd32 = vunpackub($Vu32)",
37168 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37169 let hasNewValue = 1;
37170 let opNewValue = 0;
37171 let isPseudo = 1;
37172 let isCodeGenOnly = 1;
37173 let DecoderNamespace = "EXT_mmvec";
37174 }
37175 def V6_vunpackuh : HInst<
37176 (outs HvxWR:$Vdd32),
37177 (ins HvxVR:$Vu32),
37178 "$Vdd32.uw = vunpack($Vu32.uh)",
37179 tc_04da405a, TypeCVI_VP_VS>, Enc_dd766a, Requires<[UseHVXV60]> {
37180 let Inst{7-5} = 0b001;
37181 let Inst{13-13} = 0b0;
37182 let Inst{31-16} = 0b0001111000000001;
37183 let hasNewValue = 1;
37184 let opNewValue = 0;
37185 let DecoderNamespace = "EXT_mmvec";
37186 }
37187 def V6_vunpackuh_alt : HInst<
37188 (outs HvxWR:$Vdd32),
37189 (ins HvxVR:$Vu32),
37190 "$Vdd32 = vunpackuh($Vu32)",
37191 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37192 let hasNewValue = 1;
37193 let opNewValue = 0;
37194 let isPseudo = 1;
37195 let isCodeGenOnly = 1;
37196 let DecoderNamespace = "EXT_mmvec";
37197 }
37198 def V6_vwhist128 : HInst<
37199 (outs),
37200 (ins),
37201 "vwhist128",
37202 tc_1381a97c, TypeCVI_HIST>, Enc_e3b0c4, Requires<[UseHVXV62]> {
37203 let Inst{13-0} = 0b10010010000000;
37204 let Inst{31-16} = 0b0001111000000000;
37205 let DecoderNamespace = "EXT_mmvec";
37206 }
37207 def V6_vwhist128m : HInst<
37208 (outs),
37209 (ins u1_0Imm:$Ii),
37210 "vwhist128(#$Ii)",
37211 tc_b28e51aa, TypeCVI_HIST>, Enc_efaed8, Requires<[UseHVXV62]> {
37212 let Inst{7-0} = 0b10000000;
37213 let Inst{13-9} = 0b10011;
37214 let Inst{31-16} = 0b0001111000000000;
37215 let DecoderNamespace = "EXT_mmvec";
37216 }
37217 def V6_vwhist128q : HInst<
37218 (outs),
37219 (ins HvxQR:$Qv4),
37220 "vwhist128($Qv4)",
37221 tc_e3f68a46, TypeCVI_HIST>, Enc_217147, Requires<[UseHVXV62]> {
37222 let Inst{13-0} = 0b10010010000000;
37223 let Inst{21-16} = 0b000010;
37224 let Inst{31-24} = 0b00011110;
37225 let DecoderNamespace = "EXT_mmvec";
37226 }
37227 def V6_vwhist128qm : HInst<
37228 (outs),
37229 (ins HvxQR:$Qv4, u1_0Imm:$Ii),
37230 "vwhist128($Qv4,#$Ii)",
37231 tc_767c4e9d, TypeCVI_HIST>, Enc_802dc0, Requires<[UseHVXV62]> {
37232 let Inst{7-0} = 0b10000000;
37233 let Inst{13-9} = 0b10011;
37234 let Inst{21-16} = 0b000010;
37235 let Inst{31-24} = 0b00011110;
37236 let DecoderNamespace = "EXT_mmvec";
37237 }
37238 def V6_vwhist256 : HInst<
37239 (outs),
37240 (ins),
37241 "vwhist256",
37242 tc_1381a97c, TypeCVI_HIST>, Enc_e3b0c4, Requires<[UseHVXV62]> {
37243 let Inst{13-0} = 0b10001010000000;
37244 let Inst{31-16} = 0b0001111000000000;
37245 let DecoderNamespace = "EXT_mmvec";
37246 }
37247 def V6_vwhist256_sat : HInst<
37248 (outs),
37249 (ins),
37250 "vwhist256:sat",
37251 tc_1381a97c, TypeCVI_HIST>, Enc_e3b0c4, Requires<[UseHVXV62]> {
37252 let Inst{13-0} = 0b10001110000000;
37253 let Inst{31-16} = 0b0001111000000000;
37254 let DecoderNamespace = "EXT_mmvec";
37255 }
37256 def V6_vwhist256q : HInst<
37257 (outs),
37258 (ins HvxQR:$Qv4),
37259 "vwhist256($Qv4)",
37260 tc_e3f68a46, TypeCVI_HIST>, Enc_217147, Requires<[UseHVXV62]> {
37261 let Inst{13-0} = 0b10001010000000;
37262 let Inst{21-16} = 0b000010;
37263 let Inst{31-24} = 0b00011110;
37264 let DecoderNamespace = "EXT_mmvec";
37265 }
37266 def V6_vwhist256q_sat : HInst<
37267 (outs),
37268 (ins HvxQR:$Qv4),
37269 "vwhist256($Qv4):sat",
37270 tc_e3f68a46, TypeCVI_HIST>, Enc_217147, Requires<[UseHVXV62]> {
37271 let Inst{13-0} = 0b10001110000000;
37272 let Inst{21-16} = 0b000010;
37273 let Inst{31-24} = 0b00011110;
37274 let DecoderNamespace = "EXT_mmvec";
37275 }
37276 def V6_vxor : HInst<
37277 (outs HvxVR:$Vd32),
37278 (ins HvxVR:$Vu32, HvxVR:$Vv32),
37279 "$Vd32 = vxor($Vu32,$Vv32)",
37280 tc_56c4f9fe, TypeCVI_VA>, Enc_45364e, Requires<[UseHVXV60]> {
37281 let Inst{7-5} = 0b111;
37282 let Inst{13-13} = 0b0;
37283 let Inst{31-21} = 0b00011100001;
37284 let hasNewValue = 1;
37285 let opNewValue = 0;
37286 let DecoderNamespace = "EXT_mmvec";
37287 }
37288 def V6_vzb : HInst<
37289 (outs HvxWR:$Vdd32),
37290 (ins HvxVR:$Vu32),
37291 "$Vdd32.uh = vzxt($Vu32.ub)",
37292 tc_b4416217, TypeCVI_VA_DV>, Enc_dd766a, Requires<[UseHVXV60]> {
37293 let Inst{7-5} = 0b001;
37294 let Inst{13-13} = 0b0;
37295 let Inst{31-16} = 0b0001111000000010;
37296 let hasNewValue = 1;
37297 let opNewValue = 0;
37298 let DecoderNamespace = "EXT_mmvec";
37299 }
37300 def V6_vzb_alt : HInst<
37301 (outs HvxWR:$Vdd32),
37302 (ins HvxVR:$Vu32),
37303 "$Vdd32 = vzxtb($Vu32)",
37304 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37305 let hasNewValue = 1;
37306 let opNewValue = 0;
37307 let isPseudo = 1;
37308 let isCodeGenOnly = 1;
37309 let DecoderNamespace = "EXT_mmvec";
37310 }
37311 def V6_vzh : HInst<
37312 (outs HvxWR:$Vdd32),
37313 (ins HvxVR:$Vu32),
37314 "$Vdd32.uw = vzxt($Vu32.uh)",
37315 tc_b4416217, TypeCVI_VA_DV>, Enc_dd766a, Requires<[UseHVXV60]> {
37316 let Inst{7-5} = 0b010;
37317 let Inst{13-13} = 0b0;
37318 let Inst{31-16} = 0b0001111000000010;
37319 let hasNewValue = 1;
37320 let opNewValue = 0;
37321 let DecoderNamespace = "EXT_mmvec";
37322 }
37323 def V6_vzh_alt : HInst<
37324 (outs HvxWR:$Vdd32),
37325 (ins HvxVR:$Vu32),
37326 "$Vdd32 = vzxth($Vu32)",
37327 PSEUDO, TypeMAPPING>, Requires<[UseHVXV60]> {
37328 let hasNewValue = 1;
37329 let opNewValue = 0;
37330 let isPseudo = 1;
37331 let isCodeGenOnly = 1;
37332 let DecoderNamespace = "EXT_mmvec";
37333 }
37334 def V6_zLd_ai : HInst<
37335 (outs),
37336 (ins IntRegs:$Rt32, s4_0Imm:$Ii),
37337 "z = vmem($Rt32+#$Ii)",
37338 tc_e699ae41, TypeCVI_ZW>, Enc_ff3442, Requires<[UseHVXV66,UseZReg]> {
37339 let Inst{7-0} = 0b00000000;
37340 let Inst{12-11} = 0b00;
37341 let Inst{31-21} = 0b00101100000;
37342 let addrMode = BaseImmOffset;
37343 let mayLoad = 1;
37344 let isRestrictNoSlot1Store = 1;
37345 let DecoderNamespace = "EXT_mmvec";
37346 }
37347 def V6_zLd_pi : HInst<
37348 (outs IntRegs:$Rx32),
37349 (ins IntRegs:$Rx32in, s3_0Imm:$Ii),
37350 "z = vmem($Rx32++#$Ii)",
37351 tc_a0dbea28, TypeCVI_ZW>, Enc_6c9ee0, Requires<[UseHVXV66,UseZReg]> {
37352 let Inst{7-0} = 0b00000000;
37353 let Inst{13-11} = 0b000;
37354 let Inst{31-21} = 0b00101101000;
37355 let addrMode = PostInc;
37356 let mayLoad = 1;
37357 let isRestrictNoSlot1Store = 1;
37358 let DecoderNamespace = "EXT_mmvec";
37359 let Constraints = "$Rx32 = $Rx32in";
37360 }
37361 def V6_zLd_ppu : HInst<
37362 (outs IntRegs:$Rx32),
37363 (ins IntRegs:$Rx32in, ModRegs:$Mu2),
37364 "z = vmem($Rx32++$Mu2)",
37365 tc_a0dbea28, TypeCVI_ZW>, Enc_44661f, Requires<[UseHVXV66,UseZReg]> {
37366 let Inst{12-0} = 0b0000000000001;
37367 let Inst{31-21} = 0b00101101000;
37368 let addrMode = PostInc;
37369 let mayLoad = 1;
37370 let isRestrictNoSlot1Store = 1;
37371 let DecoderNamespace = "EXT_mmvec";
37372 let Constraints = "$Rx32 = $Rx32in";
37373 }
37374 def V6_zLd_pred_ai : HInst<
37375 (outs),
37376 (ins PredRegs:$Pv4, IntRegs:$Rt32, s4_0Imm:$Ii),
37377 "if ($Pv4) z = vmem($Rt32+#$Ii)",
37378 tc_dd5b0695, TypeCVI_ZW>, Enc_ef601b, Requires<[UseHVXV66,UseZReg]> {
37379 let Inst{7-0} = 0b00000000;
37380 let Inst{31-21} = 0b00101100100;
37381 let isPredicated = 1;
37382 let addrMode = BaseImmOffset;
37383 let mayLoad = 1;
37384 let isRestrictNoSlot1Store = 1;
37385 let DecoderNamespace = "EXT_mmvec";
37386 }
37387 def V6_zLd_pred_pi : HInst<
37388 (outs IntRegs:$Rx32),
37389 (ins PredRegs:$Pv4, IntRegs:$Rx32in, s3_0Imm:$Ii),
37390 "if ($Pv4) z = vmem($Rx32++#$Ii)",
37391 tc_3ad719fb, TypeCVI_ZW>, Enc_6baed4, Requires<[UseHVXV66,UseZReg]> {
37392 let Inst{7-0} = 0b00000000;
37393 let Inst{13-13} = 0b0;
37394 let Inst{31-21} = 0b00101101100;
37395 let isPredicated = 1;
37396 let addrMode = PostInc;
37397 let mayLoad = 1;
37398 let isRestrictNoSlot1Store = 1;
37399 let DecoderNamespace = "EXT_mmvec";
37400 let Constraints = "$Rx32 = $Rx32in";
37401 }
37402 def V6_zLd_pred_ppu : HInst<
37403 (outs IntRegs:$Rx32),
37404 (ins PredRegs:$Pv4, IntRegs:$Rx32in, ModRegs:$Mu2),
37405 "if ($Pv4) z = vmem($Rx32++$Mu2)",
37406 tc_3ad719fb, TypeCVI_ZW>, Enc_691712, Requires<[UseHVXV66,UseZReg]> {
37407 let Inst{10-0} = 0b00000000001;
37408 let Inst{31-21} = 0b00101101100;
37409 let isPredicated = 1;
37410 let addrMode = PostInc;
37411 let mayLoad = 1;
37412 let isRestrictNoSlot1Store = 1;
37413 let DecoderNamespace = "EXT_mmvec";
37414 let Constraints = "$Rx32 = $Rx32in";
37415 }
37416 def V6_zextract : HInst<
37417 (outs HvxVR:$Vd32),
37418 (ins IntRegs:$Rt32),
37419 "$Vd32 = zextract($Rt32)",
37420 tc_5bf8afbb, TypeCVI_VP>, Enc_a5ed8a, Requires<[UseHVXV66,UseZReg]> {
37421 let Inst{13-5} = 0b000001001;
37422 let Inst{31-21} = 0b00011001101;
37423 let hasNewValue = 1;
37424 let opNewValue = 0;
37425 let DecoderNamespace = "EXT_mmvec";
37426 }
37427 def V6_zld0 : HInst<
37428 (outs),
37429 (ins IntRegs:$Rt32),
37430 "z = vmem($Rt32)",
37431 PSEUDO, TypeMAPPING>, Requires<[UseHVXV66]> {
37432 let isPseudo = 1;
37433 let isCodeGenOnly = 1;
37434 let DecoderNamespace = "EXT_mmvec";
37435 }
37436 def V6_zldp0 : HInst<
37437 (outs),
37438 (ins PredRegs:$Pv4, IntRegs:$Rt32),
37439 "if ($Pv4) z = vmem($Rt32)",
37440 PSEUDO, TypeMAPPING>, Requires<[UseHVXV66]> {
37441 let isPseudo = 1;
37442 let isCodeGenOnly = 1;
37443 let DecoderNamespace = "EXT_mmvec";
37444 }
37445 def Y2_barrier : HInst<
37446 (outs),
37447 (ins),
37448 "barrier",
37449 tc_8c99de45, TypeST>, Enc_e3b0c4 {
37450 let Inst{13-0} = 0b00000000000000;
37451 let Inst{31-16} = 0b1010100000000000;
37452 let isSoloAX = 1;
37453 let hasSideEffects = 1;
37454 }
37455 def Y2_break : HInst<
37456 (outs),
37457 (ins),
37458 "brkpt",
37459 tc_9ad9998f, TypeCR>, Enc_e3b0c4 {
37460 let Inst{13-0} = 0b00000000000000;
37461 let Inst{31-16} = 0b0110110000100000;
37462 let isSolo = 1;
37463 }
37464 def Y2_dccleana : HInst<
37465 (outs),
37466 (ins IntRegs:$Rs32),
37467 "dccleana($Rs32)",
37468 tc_b857bf4e, TypeST>, Enc_ecbcc8 {
37469 let Inst{13-0} = 0b00000000000000;
37470 let Inst{31-21} = 0b10100000000;
37471 let isRestrictSlot1AOK = 1;
37472 let hasSideEffects = 1;
37473 }
37474 def Y2_dccleaninva : HInst<
37475 (outs),
37476 (ins IntRegs:$Rs32),
37477 "dccleaninva($Rs32)",
37478 tc_b857bf4e, TypeST>, Enc_ecbcc8 {
37479 let Inst{13-0} = 0b00000000000000;
37480 let Inst{31-21} = 0b10100000010;
37481 let isRestrictSlot1AOK = 1;
37482 let hasSideEffects = 1;
37483 }
37484 def Y2_dcfetch : HInst<
37485 (outs),
37486 (ins IntRegs:$Rs32),
37487 "dcfetch($Rs32)",
37488 tc_d63f638c, TypeMAPPING> {
37489 let hasSideEffects = 1;
37490 let isPseudo = 1;
37491 let isCodeGenOnly = 1;
37492 }
37493 def Y2_dcfetchbo : HInst<
37494 (outs),
37495 (ins IntRegs:$Rs32, u11_3Imm:$Ii),
37496 "dcfetch($Rs32+#$Ii)",
37497 tc_9ca930f7, TypeLD>, Enc_2d829e {
37498 let Inst{13-11} = 0b000;
37499 let Inst{31-21} = 0b10010100000;
37500 let addrMode = BaseImmOffset;
37501 let isRestrictNoSlot1Store = 1;
37502 let hasSideEffects = 1;
37503 }
37504 def Y2_dcinva : HInst<
37505 (outs),
37506 (ins IntRegs:$Rs32),
37507 "dcinva($Rs32)",
37508 tc_b857bf4e, TypeST>, Enc_ecbcc8 {
37509 let Inst{13-0} = 0b00000000000000;
37510 let Inst{31-21} = 0b10100000001;
37511 let isRestrictSlot1AOK = 1;
37512 let hasSideEffects = 1;
37513 }
37514 def Y2_dczeroa : HInst<
37515 (outs),
37516 (ins IntRegs:$Rs32),
37517 "dczeroa($Rs32)",
37518 tc_b857bf4e, TypeST>, Enc_ecbcc8 {
37519 let Inst{13-0} = 0b00000000000000;
37520 let Inst{31-21} = 0b10100000110;
37521 let isRestrictSlot1AOK = 1;
37522 let mayStore = 1;
37523 let hasSideEffects = 1;
37524 }
37525 def Y2_icinva : HInst<
37526 (outs),
37527 (ins IntRegs:$Rs32),
37528 "icinva($Rs32)",
37529 tc_5d7f5414, TypeJ>, Enc_ecbcc8 {
37530 let Inst{13-0} = 0b00000000000000;
37531 let Inst{31-21} = 0b01010110110;
37532 let isSolo = 1;
37533 }
37534 def Y2_isync : HInst<
37535 (outs),
37536 (ins),
37537 "isync",
37538 tc_8b121f4a, TypeJ>, Enc_e3b0c4 {
37539 let Inst{13-0} = 0b00000000000010;
37540 let Inst{31-16} = 0b0101011111000000;
37541 let isSolo = 1;
37542 }
37543 def Y2_syncht : HInst<
37544 (outs),
37545 (ins),
37546 "syncht",
37547 tc_8c99de45, TypeST>, Enc_e3b0c4 {
37548 let Inst{13-0} = 0b00000000000000;
37549 let Inst{31-16} = 0b1010100001000000;
37550 let isSolo = 1;
37551 }
37552 def Y2_wait : HInst<
37553 (outs),
37554 (ins IntRegs:$Rs32),
37555 "wait($Rs32)",
37556 tc_174516e8, TypeCR>, Enc_ecbcc8, Requires<[HasV65]> {
37557 let Inst{13-0} = 0b00000000000000;
37558 let Inst{31-21} = 0b01100100010;
37559 let isSolo = 1;
37560 }
37561 def Y4_l2fetch : HInst<
37562 (outs),
37563 (ins IntRegs:$Rs32, IntRegs:$Rt32),
37564 "l2fetch($Rs32,$Rt32)",
37565 tc_fe211424, TypeST>, Enc_ca3887 {
37566 let Inst{7-0} = 0b00000000;
37567 let Inst{13-13} = 0b0;
37568 let Inst{31-21} = 0b10100110000;
37569 let isSoloAX = 1;
37570 let mayStore = 1;
37571 let hasSideEffects = 1;
37572 }
37573 def Y4_trace : HInst<
37574 (outs),
37575 (ins IntRegs:$Rs32),
37576 "trace($Rs32)",
37577 tc_6b25e783, TypeCR>, Enc_ecbcc8 {
37578 let Inst{13-0} = 0b00000000000000;
37579 let Inst{31-21} = 0b01100010010;
37580 let isSoloAX = 1;
37581 }
37582 def Y5_l2fetch : HInst<
37583 (outs),
37584 (ins IntRegs:$Rs32, DoubleRegs:$Rtt32),
37585 "l2fetch($Rs32,$Rtt32)",
37586 tc_fe211424, TypeST>, Enc_e6abcf {
37587 let Inst{7-0} = 0b00000000;
37588 let Inst{13-13} = 0b0;
37589 let Inst{31-21} = 0b10100110100;
37590 let isSoloAX = 1;
37591 let mayStore = 1;
37592 let hasSideEffects = 1;
37593 }
37594 def dep_A2_addsat : HInst<
37595 (outs IntRegs:$Rd32),
37596 (ins IntRegs:$Rs32, IntRegs:$Rt32),
37597 "$Rd32 = add($Rs32,$Rt32):sat:deprecated",
37598 tc_779080bf, TypeALU64>, Enc_5ab2be {
37599 let Inst{7-5} = 0b000;
37600 let Inst{13-13} = 0b0;
37601 let Inst{31-21} = 0b11010101100;
37602 let hasNewValue = 1;
37603 let opNewValue = 0;
37604 let prefersSlot3 = 1;
37605 let Defs = [USR_OVF];
37606 }
37607 def dep_A2_subsat : HInst<
37608 (outs IntRegs:$Rd32),
37609 (ins IntRegs:$Rt32, IntRegs:$Rs32),
37610 "$Rd32 = sub($Rt32,$Rs32):sat:deprecated",
37611 tc_779080bf, TypeALU64>, Enc_bd6011 {
37612 let Inst{7-5} = 0b100;
37613 let Inst{13-13} = 0b0;
37614 let Inst{31-21} = 0b11010101100;
37615 let hasNewValue = 1;
37616 let opNewValue = 0;
37617 let prefersSlot3 = 1;
37618 let Defs = [USR_OVF];
37619 }
37620 def dep_S2_packhl : HInst<
37621 (outs DoubleRegs:$Rdd32),
37622 (ins IntRegs:$Rs32, IntRegs:$Rt32),
37623 "$Rdd32 = packhl($Rs32,$Rt32):deprecated",
37624 tc_946df596, TypeALU64>, Enc_be32a5 {
37625 let Inst{7-5} = 0b000;
37626 let Inst{13-13} = 0b0;
37627 let Inst{31-21} = 0b11010100000;
37628 }