1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* Assembly Writer Source Fragment *|
4|* *|
5|* Automatically generated file, do not edit! *|
6|* From: AVR.td *|
7|* *|
8\*===----------------------------------------------------------------------===*/
9
10/// getMnemonic - This method is automatically generated by tablegen
11/// from the instruction set description.
12std::pair<const char *, uint64_t>
13AVRInstPrinter::getMnemonic(const MCInst &MI) const {
14
15#ifdef __GNUC__
16#pragma GCC diagnostic push
17#pragma GCC diagnostic ignored "-Woverlength-strings"
18#endif
19 static const char AsmStrs[] = {
20 /* 0 */ "rolb\t\000"
21 /* 6 */ "elpmb\t\000"
22 /* 13 */ "rorb\t\000"
23 /* 19 */ "sub\t\000"
24 /* 24 */ "lac\t\000"
25 /* 29 */ "brbc\t\000"
26 /* 35 */ "sbc\t\000"
27 /* 40 */ "adc\t\000"
28 /* 45 */ "dec\t\000"
29 /* 50 */ "sbic\t\000"
30 /* 56 */ "inc\t\000"
31 /* 61 */ "cpc\t\000"
32 /* 66 */ "sbrc\t\000"
33 /* 72 */ "spread\t\000"
34 /* 80 */ "add\t\000"
35 /* 85 */ "ldd\t\000"
36 /* 90 */ "bld\t\000"
37 /* 95 */ "and\t\000"
38 /* 100 */ "std\t\000"
39 /* 105 */ "brge\t\000"
40 /* 111 */ "brne\t\000"
41 /* 117 */ "cpse\t\000"
42 /* 123 */ "spwrite\t\000"
43 /* 132 */ "neg\t\000"
44 /* 137 */ "xch\t\000"
45 /* 142 */ "brsh\t\000"
46 /* 148 */ "push\t\000"
47 /* 154 */ "cbi\t\000"
48 /* 159 */ "sbi\t\000"
49 /* 164 */ "subi\t\000"
50 /* 170 */ "sbci\t\000"
51 /* 176 */ "ldi\t\000"
52 /* 181 */ "andi\t\000"
53 /* 187 */ "lslwhi\t\000"
54 /* 195 */ "brmi\t\000"
55 /* 201 */ "cpi\t\000"
56 /* 206 */ "ori\t\000"
57 /* 211 */ "stdstk\t\000"
58 /* 219 */ "stdwstk\t\000"
59 /* 228 */ "rcall\t\000"
60 /* 235 */ "brpl\t\000"
61 /* 241 */ "fmul\t\000"
62 /* 247 */ "com\t\000"
63 /* 252 */ "elpm\t\000"
64 /* 258 */ "lslbn\t\000"
65 /* 265 */ "asrbn\t\000"
66 /* 272 */ "lsrbn\t\000"
67 /* 279 */ "in\t\000"
68 /* 283 */ "lslwn\t\000"
69 /* 290 */ "asrwn\t\000"
70 /* 297 */ "lsrwn\t\000"
71 /* 304 */ "brlo\t\000"
72 /* 310 */ "asrwlo\t\000"
73 /* 318 */ "lsrwlo\t\000"
74 /* 326 */ "swap\t\000"
75 /* 332 */ "cp\t\000"
76 /* 336 */ "rjmp\t\000"
77 /* 342 */ "pop\t\000"
78 /* 347 */ "breq\t\000"
79 /* 353 */ "bclr\t\000"
80 /* 359 */ "eor\t\000"
81 /* 364 */ "ror\t\000"
82 /* 369 */ "asr\t\000"
83 /* 374 */ "lsr\t\000"
84 /* 379 */ "las\t\000"
85 /* 384 */ "brbs\t\000"
86 /* 390 */ "lds\t\000"
87 /* 395 */ "des\t\000"
88 /* 400 */ "sbis\t\000"
89 /* 406 */ "fmuls\t\000"
90 /* 413 */ "sbrs\t\000"
91 /* 419 */ "sts\t\000"
92 /* 424 */ "lat\t\000"
93 /* 429 */ "bset\t\000"
94 /* 435 */ "brlt\t\000"
95 /* 441 */ "bst\t\000"
96 /* 446 */ "out\t\000"
97 /* 451 */ "sext\t\000"
98 /* 457 */ "zext\t\000"
99 /* 463 */ "fmulsu\t\000"
100 /* 471 */ "mov\t\000"
101 /* 476 */ "subw\t\000"
102 /* 482 */ "sbcw\t\000"
103 /* 488 */ "adcw\t\000"
104 /* 494 */ "cpcw\t\000"
105 /* 500 */ "addw\t\000"
106 /* 506 */ "lddw\t\000"
107 /* 512 */ "ldw\t\000"
108 /* 517 */ "andw\t\000"
109 /* 523 */ "stdw\t\000"
110 /* 529 */ "negw\t\000"
111 /* 535 */ "pushw\t\000"
112 /* 542 */ "sbiw\t\000"
113 /* 548 */ "subiw\t\000"
114 /* 555 */ "sbciw\t\000"
115 /* 562 */ "adiw\t\000"
116 /* 568 */ "ldiw\t\000"
117 /* 574 */ "andiw\t\000"
118 /* 581 */ "oriw\t\000"
119 /* 587 */ "rolw\t\000"
120 /* 593 */ "lslw\t\000"
121 /* 599 */ "comw\t\000"
122 /* 605 */ "elpmw\t\000"
123 /* 612 */ "inw\t\000"
124 /* 617 */ "cpw\t\000"
125 /* 622 */ "popw\t\000"
126 /* 628 */ "eorw\t\000"
127 /* 634 */ "rorw\t\000"
128 /* 640 */ "asrw\t\000"
129 /* 646 */ "lsrw\t\000"
130 /* 652 */ "ldsw\t\000"
131 /* 658 */ "stsw\t\000"
132 /* 664 */ "stw\t\000"
133 /* 669 */ "outw\t\000"
134 /* 675 */ "movw\t\000"
135 /* 681 */ "frmidx\t\000"
136 /* 689 */ "clrz\t\000"
137 /* 695 */ "spm \000"
138 /* 700 */ "st\t-\000"
139 /* 705 */ "stw\t-\000"
140 /* 711 */ "# XRay Function Patchable RET.\000"
141 /* 742 */ "# XRay Typed Event Log.\000"
142 /* 766 */ "# XRay Custom Event Log.\000"
143 /* 791 */ "# XRay Function Enter.\000"
144 /* 814 */ "# XRay Tail Call Exit.\000"
145 /* 837 */ "# XRay Function Exit.\000"
146 /* 859 */ "LIFETIME_END\000"
147 /* 872 */ "PSEUDO_PROBE\000"
148 /* 885 */ "BUNDLE\000"
149 /* 892 */ "FAKE_USE\000"
150 /* 901 */ "DBG_VALUE\000"
151 /* 911 */ "DBG_INSTR_REF\000"
152 /* 925 */ "DBG_PHI\000"
153 /* 933 */ "DBG_LABEL\000"
154 /* 943 */ "#ADJCALLSTACKDOWN\000"
155 /* 961 */ "# Lsl32 PSEUDO\000"
156 /* 976 */ "# Asr32 PSEUDO\000"
157 /* 991 */ "# Lsr32 PSEUDO\000"
158 /* 1006 */ "# Rol16 PSEUDO\000"
159 /* 1021 */ "# Lsl16 PSEUDO\000"
160 /* 1036 */ "# Ror16 PSEUDO\000"
161 /* 1051 */ "# Asr16 PSEUDO\000"
162 /* 1066 */ "# Lsr16 PSEUDO\000"
163 /* 1081 */ "# Select16 PSEUDO\000"
164 /* 1099 */ "# Rol8 PSEUDO\000"
165 /* 1113 */ "# Lsl8 PSEUDO\000"
166 /* 1127 */ "# Ror8 PSEUDO\000"
167 /* 1141 */ "# Asr8 PSEUDO\000"
168 /* 1155 */ "# Lsr8 PSEUDO\000"
169 /* 1169 */ "# Select8 PSEUDO\000"
170 /* 1186 */ "#ADJCALLSTACKUP\000"
171 /* 1202 */ "LIFETIME_START\000"
172 /* 1217 */ "DBG_VALUE_LIST\000"
173 /* 1232 */ "atomic_fence\000"
174 /* 1245 */ "reti\000"
175 /* 1250 */ "break\000"
176 /* 1256 */ "# FEntry call\000"
177 /* 1270 */ "eicall\000"
178 /* 1277 */ "elpm\000"
179 /* 1282 */ "spm\000"
180 /* 1286 */ "sleep\000"
181 /* 1292 */ "eijmp\000"
182 /* 1298 */ "atomic_op\000"
183 /* 1308 */ "nop\000"
184 /* 1312 */ "wdr\000"
185 /* 1316 */ "ret\000"
186};
187#ifdef __GNUC__
188#pragma GCC diagnostic pop
189#endif
190
191 static const uint16_t OpInfo0[] = {
192 0U, // PHI
193 0U, // INLINEASM
194 0U, // INLINEASM_BR
195 0U, // CFI_INSTRUCTION
196 0U, // EH_LABEL
197 0U, // GC_LABEL
198 0U, // ANNOTATION_LABEL
199 0U, // KILL
200 0U, // EXTRACT_SUBREG
201 0U, // INSERT_SUBREG
202 0U, // IMPLICIT_DEF
203 0U, // INIT_UNDEF
204 0U, // SUBREG_TO_REG
205 0U, // COPY_TO_REGCLASS
206 902U, // DBG_VALUE
207 1218U, // DBG_VALUE_LIST
208 912U, // DBG_INSTR_REF
209 926U, // DBG_PHI
210 934U, // DBG_LABEL
211 0U, // REG_SEQUENCE
212 0U, // COPY
213 0U, // COPY_LANEMASK
214 886U, // BUNDLE
215 1203U, // LIFETIME_START
216 860U, // LIFETIME_END
217 873U, // PSEUDO_PROBE
218 0U, // ARITH_FENCE
219 0U, // STACKMAP
220 1257U, // FENTRY_CALL
221 0U, // PATCHPOINT
222 0U, // LOAD_STACK_GUARD
223 0U, // PREALLOCATED_SETUP
224 0U, // PREALLOCATED_ARG
225 0U, // STATEPOINT
226 0U, // LOCAL_ESCAPE
227 0U, // FAULTING_OP
228 0U, // PATCHABLE_OP
229 792U, // PATCHABLE_FUNCTION_ENTER
230 712U, // PATCHABLE_RET
231 838U, // PATCHABLE_FUNCTION_EXIT
232 815U, // PATCHABLE_TAIL_CALL
233 767U, // PATCHABLE_EVENT_CALL
234 743U, // PATCHABLE_TYPED_EVENT_CALL
235 0U, // ICALL_BRANCH_FUNNEL
236 893U, // FAKE_USE
237 0U, // MEMBARRIER
238 0U, // JUMP_TABLE_DEBUG_INFO
239 0U, // RELOC_NONE
240 0U, // CONVERGENCECTRL_ENTRY
241 0U, // CONVERGENCECTRL_ANCHOR
242 0U, // CONVERGENCECTRL_LOOP
243 0U, // CONVERGENCECTRL_GLUE
244 0U, // G_ASSERT_SEXT
245 0U, // G_ASSERT_ZEXT
246 0U, // G_ASSERT_ALIGN
247 0U, // G_ADD
248 0U, // G_SUB
249 0U, // G_MUL
250 0U, // G_SDIV
251 0U, // G_UDIV
252 0U, // G_SREM
253 0U, // G_UREM
254 0U, // G_SDIVREM
255 0U, // G_UDIVREM
256 0U, // G_AND
257 0U, // G_OR
258 0U, // G_XOR
259 0U, // G_ABDS
260 0U, // G_ABDU
261 0U, // G_UAVGFLOOR
262 0U, // G_UAVGCEIL
263 0U, // G_SAVGFLOOR
264 0U, // G_SAVGCEIL
265 0U, // G_IMPLICIT_DEF
266 0U, // G_PHI
267 0U, // G_FRAME_INDEX
268 0U, // G_GLOBAL_VALUE
269 0U, // G_PTRAUTH_GLOBAL_VALUE
270 0U, // G_CONSTANT_POOL
271 0U, // G_EXTRACT
272 0U, // G_UNMERGE_VALUES
273 0U, // G_INSERT
274 0U, // G_MERGE_VALUES
275 0U, // G_BUILD_VECTOR
276 0U, // G_BUILD_VECTOR_TRUNC
277 0U, // G_CONCAT_VECTORS
278 0U, // G_PTRTOINT
279 0U, // G_INTTOPTR
280 0U, // G_BITCAST
281 0U, // G_FREEZE
282 0U, // G_CONSTANT_FOLD_BARRIER
283 0U, // G_INTRINSIC_FPTRUNC_ROUND
284 0U, // G_INTRINSIC_TRUNC
285 0U, // G_INTRINSIC_ROUND
286 0U, // G_INTRINSIC_LRINT
287 0U, // G_INTRINSIC_LLRINT
288 0U, // G_INTRINSIC_ROUNDEVEN
289 0U, // G_READCYCLECOUNTER
290 0U, // G_READSTEADYCOUNTER
291 0U, // G_LOAD
292 0U, // G_SEXTLOAD
293 0U, // G_ZEXTLOAD
294 0U, // G_FPEXTLOAD
295 0U, // G_INDEXED_LOAD
296 0U, // G_INDEXED_SEXTLOAD
297 0U, // G_INDEXED_ZEXTLOAD
298 0U, // G_STORE
299 0U, // G_FPTRUNCSTORE
300 0U, // G_INDEXED_STORE
301 0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS
302 0U, // G_ATOMIC_CMPXCHG
303 0U, // G_ATOMICRMW_XCHG
304 0U, // G_ATOMICRMW_ADD
305 0U, // G_ATOMICRMW_SUB
306 0U, // G_ATOMICRMW_AND
307 0U, // G_ATOMICRMW_NAND
308 0U, // G_ATOMICRMW_OR
309 0U, // G_ATOMICRMW_XOR
310 0U, // G_ATOMICRMW_MAX
311 0U, // G_ATOMICRMW_MIN
312 0U, // G_ATOMICRMW_UMAX
313 0U, // G_ATOMICRMW_UMIN
314 0U, // G_ATOMICRMW_FADD
315 0U, // G_ATOMICRMW_FSUB
316 0U, // G_ATOMICRMW_FMAX
317 0U, // G_ATOMICRMW_FMIN
318 0U, // G_ATOMICRMW_FMAXIMUM
319 0U, // G_ATOMICRMW_FMINIMUM
320 0U, // G_ATOMICRMW_FMAXIMUMNUM
321 0U, // G_ATOMICRMW_FMINIMUMNUM
322 0U, // G_ATOMICRMW_UINC_WRAP
323 0U, // G_ATOMICRMW_UDEC_WRAP
324 0U, // G_ATOMICRMW_USUB_COND
325 0U, // G_ATOMICRMW_USUB_SAT
326 0U, // G_FENCE
327 0U, // G_PREFETCH
328 0U, // G_BRCOND
329 0U, // G_BRINDIRECT
330 0U, // G_INVOKE_REGION_START
331 0U, // G_INTRINSIC
332 0U, // G_INTRINSIC_W_SIDE_EFFECTS
333 0U, // G_INTRINSIC_CONVERGENT
334 0U, // G_INTRINSIC_CONVERGENT_W_SIDE_EFFECTS
335 0U, // G_ANYEXT
336 0U, // G_TRUNC
337 0U, // G_TRUNC_SSAT_S
338 0U, // G_TRUNC_SSAT_U
339 0U, // G_TRUNC_USAT_U
340 0U, // G_CONSTANT
341 0U, // G_FCONSTANT
342 0U, // G_VASTART
343 0U, // G_VAARG
344 0U, // G_SEXT
345 0U, // G_SEXT_INREG
346 0U, // G_ZEXT
347 0U, // G_SHL
348 0U, // G_LSHR
349 0U, // G_ASHR
350 0U, // G_FSHL
351 0U, // G_FSHR
352 0U, // G_ROTR
353 0U, // G_ROTL
354 0U, // G_ICMP
355 0U, // G_FCMP
356 0U, // G_SCMP
357 0U, // G_UCMP
358 0U, // G_SELECT
359 0U, // G_UADDO
360 0U, // G_UADDE
361 0U, // G_USUBO
362 0U, // G_USUBE
363 0U, // G_SADDO
364 0U, // G_SADDE
365 0U, // G_SSUBO
366 0U, // G_SSUBE
367 0U, // G_UMULO
368 0U, // G_SMULO
369 0U, // G_UMULH
370 0U, // G_SMULH
371 0U, // G_UADDSAT
372 0U, // G_SADDSAT
373 0U, // G_USUBSAT
374 0U, // G_SSUBSAT
375 0U, // G_USHLSAT
376 0U, // G_SSHLSAT
377 0U, // G_SMULFIX
378 0U, // G_UMULFIX
379 0U, // G_SMULFIXSAT
380 0U, // G_UMULFIXSAT
381 0U, // G_SDIVFIX
382 0U, // G_UDIVFIX
383 0U, // G_SDIVFIXSAT
384 0U, // G_UDIVFIXSAT
385 0U, // G_FADD
386 0U, // G_FSUB
387 0U, // G_FMUL
388 0U, // G_FMA
389 0U, // G_FMAD
390 0U, // G_FDIV
391 0U, // G_FREM
392 0U, // G_FMODF
393 0U, // G_FPOW
394 0U, // G_FPOWI
395 0U, // G_FEXP
396 0U, // G_FEXP2
397 0U, // G_FEXP10
398 0U, // G_FLOG
399 0U, // G_FLOG2
400 0U, // G_FLOG10
401 0U, // G_FLDEXP
402 0U, // G_FFREXP
403 0U, // G_FNEG
404 0U, // G_FPEXT
405 0U, // G_FPTRUNC
406 0U, // G_FPTOSI
407 0U, // G_FPTOUI
408 0U, // G_SITOFP
409 0U, // G_UITOFP
410 0U, // G_FPTOSI_SAT
411 0U, // G_FPTOUI_SAT
412 0U, // G_FABS
413 0U, // G_FCOPYSIGN
414 0U, // G_IS_FPCLASS
415 0U, // G_FCANONICALIZE
416 0U, // G_FMINNUM
417 0U, // G_FMAXNUM
418 0U, // G_FMINNUM_IEEE
419 0U, // G_FMAXNUM_IEEE
420 0U, // G_FMINIMUM
421 0U, // G_FMAXIMUM
422 0U, // G_FMINIMUMNUM
423 0U, // G_FMAXIMUMNUM
424 0U, // G_GET_FPENV
425 0U, // G_SET_FPENV
426 0U, // G_RESET_FPENV
427 0U, // G_GET_FPMODE
428 0U, // G_SET_FPMODE
429 0U, // G_RESET_FPMODE
430 0U, // G_GET_ROUNDING
431 0U, // G_SET_ROUNDING
432 0U, // G_PTR_ADD
433 0U, // G_PTRMASK
434 0U, // G_SMIN
435 0U, // G_SMAX
436 0U, // G_UMIN
437 0U, // G_UMAX
438 0U, // G_ABS
439 0U, // G_LROUND
440 0U, // G_LLROUND
441 0U, // G_BR
442 0U, // G_BRJT
443 0U, // G_VSCALE
444 0U, // G_INSERT_SUBVECTOR
445 0U, // G_EXTRACT_SUBVECTOR
446 0U, // G_INSERT_VECTOR_ELT
447 0U, // G_EXTRACT_VECTOR_ELT
448 0U, // G_SHUFFLE_VECTOR
449 0U, // G_SPLAT_VECTOR
450 0U, // G_STEP_VECTOR
451 0U, // G_VECTOR_COMPRESS
452 0U, // G_CTTZ
453 0U, // G_CTTZ_ZERO_POISON
454 0U, // G_CTLZ
455 0U, // G_CTLZ_ZERO_POISON
456 0U, // G_CTLS
457 0U, // G_CTPOP
458 0U, // G_BSWAP
459 0U, // G_BITREVERSE
460 0U, // G_CLMUL
461 0U, // G_FCEIL
462 0U, // G_FCOS
463 0U, // G_FSIN
464 0U, // G_FSINCOS
465 0U, // G_FTAN
466 0U, // G_FACOS
467 0U, // G_FASIN
468 0U, // G_FATAN
469 0U, // G_FATAN2
470 0U, // G_FCOSH
471 0U, // G_FSINH
472 0U, // G_FTANH
473 0U, // G_FSQRT
474 0U, // G_FFLOOR
475 0U, // G_FRINT
476 0U, // G_FNEARBYINT
477 0U, // G_ADDRSPACE_CAST
478 0U, // G_BLOCK_ADDR
479 0U, // G_JUMP_TABLE
480 0U, // G_DYN_STACKALLOC
481 0U, // G_STACKSAVE
482 0U, // G_STACKRESTORE
483 0U, // G_STRICT_FADD
484 0U, // G_STRICT_FSUB
485 0U, // G_STRICT_FMUL
486 0U, // G_STRICT_FDIV
487 0U, // G_STRICT_FREM
488 0U, // G_STRICT_FMA
489 0U, // G_STRICT_FSQRT
490 0U, // G_STRICT_FLDEXP
491 0U, // G_STRICT_FCMP
492 0U, // G_STRICT_FCMPS
493 0U, // G_READ_REGISTER
494 0U, // G_WRITE_REGISTER
495 0U, // G_MEMCPY
496 0U, // G_MEMCPY_INLINE
497 0U, // G_MEMMOVE
498 0U, // G_MEMSET
499 0U, // G_BZERO
500 0U, // G_MEMSET_INLINE
501 0U, // G_TRAP
502 0U, // G_DEBUGTRAP
503 0U, // G_UBSANTRAP
504 0U, // G_VECREDUCE_SEQ_FADD
505 0U, // G_VECREDUCE_SEQ_FMUL
506 0U, // G_VECREDUCE_FADD
507 0U, // G_VECREDUCE_FMUL
508 0U, // G_VECREDUCE_FMAX
509 0U, // G_VECREDUCE_FMIN
510 0U, // G_VECREDUCE_FMAXIMUM
511 0U, // G_VECREDUCE_FMINIMUM
512 0U, // G_VECREDUCE_ADD
513 0U, // G_VECREDUCE_MUL
514 0U, // G_VECREDUCE_AND
515 0U, // G_VECREDUCE_OR
516 0U, // G_VECREDUCE_XOR
517 0U, // G_VECREDUCE_SMAX
518 0U, // G_VECREDUCE_SMIN
519 0U, // G_VECREDUCE_UMAX
520 0U, // G_VECREDUCE_UMIN
521 0U, // G_SBFX
522 0U, // G_UBFX
523 2537U, // ADCWRdRr
524 2549U, // ADDWRdRr
525 944U, // ADJCALLSTACKDOWN
526 1187U, // ADJCALLSTACKUP
527 2623U, // ANDIWRdK
528 2566U, // ANDWRdRr
529 2314U, // ASRBNRd
530 18743U, // ASRWLoRd
531 2339U, // ASRWNRd
532 19073U, // ASRWRd
533 1052U, // Asr16
534 977U, // Asr32
535 1142U, // Asr8
536 1233U, // AtomicFence
537 1299U, // AtomicLoad16
538 1299U, // AtomicLoad8
539 1299U, // AtomicLoadAdd16
540 1299U, // AtomicLoadAdd8
541 1299U, // AtomicLoadAnd16
542 1299U, // AtomicLoadAnd8
543 1299U, // AtomicLoadOr16
544 1299U, // AtomicLoadOr8
545 1299U, // AtomicLoadSub16
546 1299U, // AtomicLoadSub8
547 1299U, // AtomicLoadXor16
548 1299U, // AtomicLoadXor8
549 1299U, // AtomicStore16
550 1299U, // AtomicStore8
551 19032U, // COMWRd
552 2543U, // CPCWRdRr
553 2666U, // CPWRdRr
554 19122U, // CopyZero
555 2055U, // ELPMBRdZ
556 2055U, // ELPMBRdZPi
557 2654U, // ELPMWRdZ
558 2654U, // ELPMWRdZPi
559 2677U, // EORWRdRr
560 2730U, // FRMIDX
561 2661U, // INWRdA
562 2555U, // LDDWRdPtrQ
563 2555U, // LDDWRdYQ
564 2617U, // LDIWRdK
565 2701U, // LDSWRdK
566 2561U, // LDWRdPtr
567 35329U, // LDWRdPtrPd
568 2561U, // LDWRdPtrPi
569 2056U, // LPMBRdZ
570 2655U, // LPMWRdZ
571 2655U, // LPMWRdZPi
572 2307U, // LSLBNRd
573 18620U, // LSLWHiRd
574 2332U, // LSLWNRd
575 19026U, // LSLWRd
576 2321U, // LSRBNRd
577 18751U, // LSRWLoRd
578 2346U, // LSRWNRd
579 19079U, // LSRWRd
580 1022U, // Lsl16
581 962U, // Lsl32
582 1114U, // Lsl8
583 1067U, // Lsr16
584 992U, // Lsr32
585 1156U, // Lsr8
586 18962U, // NEGWRd
587 2630U, // ORIWRdK
588 2678U, // ORWRdRr
589 2718U, // OUTWARr
590 19055U, // POPWRd
591 18968U, // PUSHWRr
592 18433U, // ROLBRdR1
593 18433U, // ROLBRdR17
594 19020U, // ROLWRd
595 18446U, // RORBRd
596 19067U, // RORWRd
597 1007U, // Rol16
598 1100U, // Rol8
599 1037U, // Ror16
600 1128U, // Ror8
601 2604U, // SBCIWRdK
602 2531U, // SBCWRdRr
603 2500U, // SEXT
604 2121U, // SPREAD
605 2172U, // SPWRITE
606 4308U, // STDSPQRr
607 6668U, // STDWPtrQRr
608 4316U, // STDWSPQRr
609 2707U, // STSWKRr
610 8898U, // STWPtrPdRr
611 58009U, // STWPtrPiRr
612 2713U, // STWPtrRr
613 2597U, // SUBIWRdK
614 2525U, // SUBWRdRr
615 1082U, // Select16
616 1170U, // Select8
617 2506U, // ZEXT
618 2089U, // ADCRdRr
619 2129U, // ADDRdRr
620 2611U, // ADIWRdK
621 2230U, // ANDIRdK
622 2144U, // ANDRdRr
623 18802U, // ASRRd
624 18786U, // BCLRs
625 2139U, // BLD
626 2078U, // BRBCsk
627 2433U, // BRBSsk
628 1251U, // BREAK
629 10588U, // BREQk
630 10346U, // BRGEk
631 10545U, // BRLOk
632 10676U, // BRLTk
633 10436U, // BRMIk
634 10352U, // BRNEk
635 10476U, // BRPLk
636 10383U, // BRSHk
637 18862U, // BSETs
638 2490U, // BST
639 18662U, // CALLk
640 2203U, // CBIAb
641 18680U, // COMRd
642 2110U, // CPCRdRr
643 2250U, // CPIRdK
644 2381U, // CPRdRr
645 2166U, // CPSE
646 18478U, // DECRd
647 18828U, // DESK
648 1271U, // EICALL
649 1293U, // EIJMP
650 1278U, // ELPM
651 2301U, // ELPMRdZ
652 2301U, // ELPMRdZPi
653 2408U, // EORRdRr
654 2290U, // FMUL
655 2455U, // FMULS
656 2512U, // FMULSU
657 1272U, // ICALL
658 1294U, // IJMP
659 18489U, // INCRd
660 2328U, // INRdA
661 18770U, // JMPk
662 8217U, // LACZRd
663 8572U, // LASZRd
664 8617U, // LATZRd
665 2134U, // LDDRdPtrQ
666 2225U, // LDIRdK
667 2140U, // LDRdPtr
668 34908U, // LDRdPtrPd
669 2140U, // LDRdPtrPi
670 2439U, // LDSRdK
671 2439U, // LDSRdKTiny
672 1279U, // LPM
673 2302U, // LPMRdZ
674 2302U, // LPMRdZPi
675 18807U, // LSRRd
676 2520U, // MOVRdRr
677 2724U, // MOVWRdRr
678 2291U, // MULRdRr
679 2456U, // MULSRdRr
680 2513U, // MULSURdRr
681 18565U, // NEGRd
682 1309U, // NOP
683 2255U, // ORIRdK
684 2409U, // ORRdRr
685 2495U, // OUTARr
686 18775U, // POPRd
687 18581U, // PUSHRr
688 10469U, // RCALLk
689 1317U, // RET
690 1246U, // RETI
691 10577U, // RJMPk
692 18797U, // RORRd
693 2219U, // SBCIRdK
694 2084U, // SBCRdRr
695 2208U, // SBIAb
696 2099U, // SBICAb
697 2449U, // SBISAb
698 2591U, // SBIWRdK
699 2115U, // SBRCRrB
700 2462U, // SBRSRrB
701 1287U, // SLEEP
702 1283U, // SPM
703 2744U, // SPMZPi
704 6245U, // STDPtrQRr
705 8893U, // STPtrPdRr
706 57787U, // STPtrPiRr
707 2491U, // STPtrRr
708 2468U, // STSKRr
709 2468U, // STSKRrTiny
710 2213U, // SUBIRdK
711 2068U, // SUBRdRr
712 18759U, // SWAPRd
713 1313U, // WDR
714 8330U, // XCHZRd
715 };
716
717 static const uint8_t OpInfo1[] = {
718 0U, // PHI
719 0U, // INLINEASM
720 0U, // INLINEASM_BR
721 0U, // CFI_INSTRUCTION
722 0U, // EH_LABEL
723 0U, // GC_LABEL
724 0U, // ANNOTATION_LABEL
725 0U, // KILL
726 0U, // EXTRACT_SUBREG
727 0U, // INSERT_SUBREG
728 0U, // IMPLICIT_DEF
729 0U, // INIT_UNDEF
730 0U, // SUBREG_TO_REG
731 0U, // COPY_TO_REGCLASS
732 0U, // DBG_VALUE
733 0U, // DBG_VALUE_LIST
734 0U, // DBG_INSTR_REF
735 0U, // DBG_PHI
736 0U, // DBG_LABEL
737 0U, // REG_SEQUENCE
738 0U, // COPY
739 0U, // COPY_LANEMASK
740 0U, // BUNDLE
741 0U, // LIFETIME_START
742 0U, // LIFETIME_END
743 0U, // PSEUDO_PROBE
744 0U, // ARITH_FENCE
745 0U, // STACKMAP
746 0U, // FENTRY_CALL
747 0U, // PATCHPOINT
748 0U, // LOAD_STACK_GUARD
749 0U, // PREALLOCATED_SETUP
750 0U, // PREALLOCATED_ARG
751 0U, // STATEPOINT
752 0U, // LOCAL_ESCAPE
753 0U, // FAULTING_OP
754 0U, // PATCHABLE_OP
755 0U, // PATCHABLE_FUNCTION_ENTER
756 0U, // PATCHABLE_RET
757 0U, // PATCHABLE_FUNCTION_EXIT
758 0U, // PATCHABLE_TAIL_CALL
759 0U, // PATCHABLE_EVENT_CALL
760 0U, // PATCHABLE_TYPED_EVENT_CALL
761 0U, // ICALL_BRANCH_FUNNEL
762 0U, // FAKE_USE
763 0U, // MEMBARRIER
764 0U, // JUMP_TABLE_DEBUG_INFO
765 0U, // RELOC_NONE
766 0U, // CONVERGENCECTRL_ENTRY
767 0U, // CONVERGENCECTRL_ANCHOR
768 0U, // CONVERGENCECTRL_LOOP
769 0U, // CONVERGENCECTRL_GLUE
770 0U, // G_ASSERT_SEXT
771 0U, // G_ASSERT_ZEXT
772 0U, // G_ASSERT_ALIGN
773 0U, // G_ADD
774 0U, // G_SUB
775 0U, // G_MUL
776 0U, // G_SDIV
777 0U, // G_UDIV
778 0U, // G_SREM
779 0U, // G_UREM
780 0U, // G_SDIVREM
781 0U, // G_UDIVREM
782 0U, // G_AND
783 0U, // G_OR
784 0U, // G_XOR
785 0U, // G_ABDS
786 0U, // G_ABDU
787 0U, // G_UAVGFLOOR
788 0U, // G_UAVGCEIL
789 0U, // G_SAVGFLOOR
790 0U, // G_SAVGCEIL
791 0U, // G_IMPLICIT_DEF
792 0U, // G_PHI
793 0U, // G_FRAME_INDEX
794 0U, // G_GLOBAL_VALUE
795 0U, // G_PTRAUTH_GLOBAL_VALUE
796 0U, // G_CONSTANT_POOL
797 0U, // G_EXTRACT
798 0U, // G_UNMERGE_VALUES
799 0U, // G_INSERT
800 0U, // G_MERGE_VALUES
801 0U, // G_BUILD_VECTOR
802 0U, // G_BUILD_VECTOR_TRUNC
803 0U, // G_CONCAT_VECTORS
804 0U, // G_PTRTOINT
805 0U, // G_INTTOPTR
806 0U, // G_BITCAST
807 0U, // G_FREEZE
808 0U, // G_CONSTANT_FOLD_BARRIER
809 0U, // G_INTRINSIC_FPTRUNC_ROUND
810 0U, // G_INTRINSIC_TRUNC
811 0U, // G_INTRINSIC_ROUND
812 0U, // G_INTRINSIC_LRINT
813 0U, // G_INTRINSIC_LLRINT
814 0U, // G_INTRINSIC_ROUNDEVEN
815 0U, // G_READCYCLECOUNTER
816 0U, // G_READSTEADYCOUNTER
817 0U, // G_LOAD
818 0U, // G_SEXTLOAD
819 0U, // G_ZEXTLOAD
820 0U, // G_FPEXTLOAD
821 0U, // G_INDEXED_LOAD
822 0U, // G_INDEXED_SEXTLOAD
823 0U, // G_INDEXED_ZEXTLOAD
824 0U, // G_STORE
825 0U, // G_FPTRUNCSTORE
826 0U, // G_INDEXED_STORE
827 0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS
828 0U, // G_ATOMIC_CMPXCHG
829 0U, // G_ATOMICRMW_XCHG
830 0U, // G_ATOMICRMW_ADD
831 0U, // G_ATOMICRMW_SUB
832 0U, // G_ATOMICRMW_AND
833 0U, // G_ATOMICRMW_NAND
834 0U, // G_ATOMICRMW_OR
835 0U, // G_ATOMICRMW_XOR
836 0U, // G_ATOMICRMW_MAX
837 0U, // G_ATOMICRMW_MIN
838 0U, // G_ATOMICRMW_UMAX
839 0U, // G_ATOMICRMW_UMIN
840 0U, // G_ATOMICRMW_FADD
841 0U, // G_ATOMICRMW_FSUB
842 0U, // G_ATOMICRMW_FMAX
843 0U, // G_ATOMICRMW_FMIN
844 0U, // G_ATOMICRMW_FMAXIMUM
845 0U, // G_ATOMICRMW_FMINIMUM
846 0U, // G_ATOMICRMW_FMAXIMUMNUM
847 0U, // G_ATOMICRMW_FMINIMUMNUM
848 0U, // G_ATOMICRMW_UINC_WRAP
849 0U, // G_ATOMICRMW_UDEC_WRAP
850 0U, // G_ATOMICRMW_USUB_COND
851 0U, // G_ATOMICRMW_USUB_SAT
852 0U, // G_FENCE
853 0U, // G_PREFETCH
854 0U, // G_BRCOND
855 0U, // G_BRINDIRECT
856 0U, // G_INVOKE_REGION_START
857 0U, // G_INTRINSIC
858 0U, // G_INTRINSIC_W_SIDE_EFFECTS
859 0U, // G_INTRINSIC_CONVERGENT
860 0U, // G_INTRINSIC_CONVERGENT_W_SIDE_EFFECTS
861 0U, // G_ANYEXT
862 0U, // G_TRUNC
863 0U, // G_TRUNC_SSAT_S
864 0U, // G_TRUNC_SSAT_U
865 0U, // G_TRUNC_USAT_U
866 0U, // G_CONSTANT
867 0U, // G_FCONSTANT
868 0U, // G_VASTART
869 0U, // G_VAARG
870 0U, // G_SEXT
871 0U, // G_SEXT_INREG
872 0U, // G_ZEXT
873 0U, // G_SHL
874 0U, // G_LSHR
875 0U, // G_ASHR
876 0U, // G_FSHL
877 0U, // G_FSHR
878 0U, // G_ROTR
879 0U, // G_ROTL
880 0U, // G_ICMP
881 0U, // G_FCMP
882 0U, // G_SCMP
883 0U, // G_UCMP
884 0U, // G_SELECT
885 0U, // G_UADDO
886 0U, // G_UADDE
887 0U, // G_USUBO
888 0U, // G_USUBE
889 0U, // G_SADDO
890 0U, // G_SADDE
891 0U, // G_SSUBO
892 0U, // G_SSUBE
893 0U, // G_UMULO
894 0U, // G_SMULO
895 0U, // G_UMULH
896 0U, // G_SMULH
897 0U, // G_UADDSAT
898 0U, // G_SADDSAT
899 0U, // G_USUBSAT
900 0U, // G_SSUBSAT
901 0U, // G_USHLSAT
902 0U, // G_SSHLSAT
903 0U, // G_SMULFIX
904 0U, // G_UMULFIX
905 0U, // G_SMULFIXSAT
906 0U, // G_UMULFIXSAT
907 0U, // G_SDIVFIX
908 0U, // G_UDIVFIX
909 0U, // G_SDIVFIXSAT
910 0U, // G_UDIVFIXSAT
911 0U, // G_FADD
912 0U, // G_FSUB
913 0U, // G_FMUL
914 0U, // G_FMA
915 0U, // G_FMAD
916 0U, // G_FDIV
917 0U, // G_FREM
918 0U, // G_FMODF
919 0U, // G_FPOW
920 0U, // G_FPOWI
921 0U, // G_FEXP
922 0U, // G_FEXP2
923 0U, // G_FEXP10
924 0U, // G_FLOG
925 0U, // G_FLOG2
926 0U, // G_FLOG10
927 0U, // G_FLDEXP
928 0U, // G_FFREXP
929 0U, // G_FNEG
930 0U, // G_FPEXT
931 0U, // G_FPTRUNC
932 0U, // G_FPTOSI
933 0U, // G_FPTOUI
934 0U, // G_SITOFP
935 0U, // G_UITOFP
936 0U, // G_FPTOSI_SAT
937 0U, // G_FPTOUI_SAT
938 0U, // G_FABS
939 0U, // G_FCOPYSIGN
940 0U, // G_IS_FPCLASS
941 0U, // G_FCANONICALIZE
942 0U, // G_FMINNUM
943 0U, // G_FMAXNUM
944 0U, // G_FMINNUM_IEEE
945 0U, // G_FMAXNUM_IEEE
946 0U, // G_FMINIMUM
947 0U, // G_FMAXIMUM
948 0U, // G_FMINIMUMNUM
949 0U, // G_FMAXIMUMNUM
950 0U, // G_GET_FPENV
951 0U, // G_SET_FPENV
952 0U, // G_RESET_FPENV
953 0U, // G_GET_FPMODE
954 0U, // G_SET_FPMODE
955 0U, // G_RESET_FPMODE
956 0U, // G_GET_ROUNDING
957 0U, // G_SET_ROUNDING
958 0U, // G_PTR_ADD
959 0U, // G_PTRMASK
960 0U, // G_SMIN
961 0U, // G_SMAX
962 0U, // G_UMIN
963 0U, // G_UMAX
964 0U, // G_ABS
965 0U, // G_LROUND
966 0U, // G_LLROUND
967 0U, // G_BR
968 0U, // G_BRJT
969 0U, // G_VSCALE
970 0U, // G_INSERT_SUBVECTOR
971 0U, // G_EXTRACT_SUBVECTOR
972 0U, // G_INSERT_VECTOR_ELT
973 0U, // G_EXTRACT_VECTOR_ELT
974 0U, // G_SHUFFLE_VECTOR
975 0U, // G_SPLAT_VECTOR
976 0U, // G_STEP_VECTOR
977 0U, // G_VECTOR_COMPRESS
978 0U, // G_CTTZ
979 0U, // G_CTTZ_ZERO_POISON
980 0U, // G_CTLZ
981 0U, // G_CTLZ_ZERO_POISON
982 0U, // G_CTLS
983 0U, // G_CTPOP
984 0U, // G_BSWAP
985 0U, // G_BITREVERSE
986 0U, // G_CLMUL
987 0U, // G_FCEIL
988 0U, // G_FCOS
989 0U, // G_FSIN
990 0U, // G_FSINCOS
991 0U, // G_FTAN
992 0U, // G_FACOS
993 0U, // G_FASIN
994 0U, // G_FATAN
995 0U, // G_FATAN2
996 0U, // G_FCOSH
997 0U, // G_FSINH
998 0U, // G_FTANH
999 0U, // G_FSQRT
1000 0U, // G_FFLOOR
1001 0U, // G_FRINT
1002 0U, // G_FNEARBYINT
1003 0U, // G_ADDRSPACE_CAST
1004 0U, // G_BLOCK_ADDR
1005 0U, // G_JUMP_TABLE
1006 0U, // G_DYN_STACKALLOC
1007 0U, // G_STACKSAVE
1008 0U, // G_STACKRESTORE
1009 0U, // G_STRICT_FADD
1010 0U, // G_STRICT_FSUB
1011 0U, // G_STRICT_FMUL
1012 0U, // G_STRICT_FDIV
1013 0U, // G_STRICT_FREM
1014 0U, // G_STRICT_FMA
1015 0U, // G_STRICT_FSQRT
1016 0U, // G_STRICT_FLDEXP
1017 0U, // G_STRICT_FCMP
1018 0U, // G_STRICT_FCMPS
1019 0U, // G_READ_REGISTER
1020 0U, // G_WRITE_REGISTER
1021 0U, // G_MEMCPY
1022 0U, // G_MEMCPY_INLINE
1023 0U, // G_MEMMOVE
1024 0U, // G_MEMSET
1025 0U, // G_BZERO
1026 0U, // G_MEMSET_INLINE
1027 0U, // G_TRAP
1028 0U, // G_DEBUGTRAP
1029 0U, // G_UBSANTRAP
1030 0U, // G_VECREDUCE_SEQ_FADD
1031 0U, // G_VECREDUCE_SEQ_FMUL
1032 0U, // G_VECREDUCE_FADD
1033 0U, // G_VECREDUCE_FMUL
1034 0U, // G_VECREDUCE_FMAX
1035 0U, // G_VECREDUCE_FMIN
1036 0U, // G_VECREDUCE_FMAXIMUM
1037 0U, // G_VECREDUCE_FMINIMUM
1038 0U, // G_VECREDUCE_ADD
1039 0U, // G_VECREDUCE_MUL
1040 0U, // G_VECREDUCE_AND
1041 0U, // G_VECREDUCE_OR
1042 0U, // G_VECREDUCE_XOR
1043 0U, // G_VECREDUCE_SMAX
1044 0U, // G_VECREDUCE_SMIN
1045 0U, // G_VECREDUCE_UMAX
1046 0U, // G_VECREDUCE_UMIN
1047 0U, // G_SBFX
1048 0U, // G_UBFX
1049 0U, // ADCWRdRr
1050 0U, // ADDWRdRr
1051 0U, // ADJCALLSTACKDOWN
1052 0U, // ADJCALLSTACKUP
1053 0U, // ANDIWRdK
1054 0U, // ANDWRdRr
1055 0U, // ASRBNRd
1056 0U, // ASRWLoRd
1057 0U, // ASRWNRd
1058 0U, // ASRWRd
1059 0U, // Asr16
1060 0U, // Asr32
1061 0U, // Asr8
1062 0U, // AtomicFence
1063 0U, // AtomicLoad16
1064 0U, // AtomicLoad8
1065 0U, // AtomicLoadAdd16
1066 0U, // AtomicLoadAdd8
1067 0U, // AtomicLoadAnd16
1068 0U, // AtomicLoadAnd8
1069 0U, // AtomicLoadOr16
1070 0U, // AtomicLoadOr8
1071 0U, // AtomicLoadSub16
1072 0U, // AtomicLoadSub8
1073 0U, // AtomicLoadXor16
1074 0U, // AtomicLoadXor8
1075 0U, // AtomicStore16
1076 0U, // AtomicStore8
1077 0U, // COMWRd
1078 2U, // CPCWRdRr
1079 2U, // CPWRdRr
1080 0U, // CopyZero
1081 18U, // ELPMBRdZ
1082 34U, // ELPMBRdZPi
1083 18U, // ELPMWRdZ
1084 34U, // ELPMWRdZPi
1085 0U, // EORWRdRr
1086 18U, // FRMIDX
1087 2U, // INWRdA
1088 4U, // LDDWRdPtrQ
1089 4U, // LDDWRdYQ
1090 2U, // LDIWRdK
1091 2U, // LDSWRdK
1092 2U, // LDWRdPtr
1093 0U, // LDWRdPtrPd
1094 48U, // LDWRdPtrPi
1095 2U, // LPMBRdZ
1096 2U, // LPMWRdZ
1097 50U, // LPMWRdZPi
1098 0U, // LSLBNRd
1099 0U, // LSLWHiRd
1100 0U, // LSLWNRd
1101 0U, // LSLWRd
1102 0U, // LSRBNRd
1103 0U, // LSRWLoRd
1104 0U, // LSRWNRd
1105 0U, // LSRWRd
1106 0U, // Lsl16
1107 0U, // Lsl32
1108 0U, // Lsl8
1109 0U, // Lsr16
1110 0U, // Lsr32
1111 0U, // Lsr8
1112 0U, // NEGWRd
1113 0U, // ORIWRdK
1114 0U, // ORWRdRr
1115 2U, // OUTWARr
1116 0U, // POPWRd
1117 0U, // PUSHWRr
1118 0U, // ROLBRdR1
1119 0U, // ROLBRdR17
1120 0U, // ROLWRd
1121 0U, // RORBRd
1122 0U, // RORWRd
1123 0U, // Rol16
1124 0U, // Rol8
1125 0U, // Ror16
1126 0U, // Ror8
1127 0U, // SBCIWRdK
1128 0U, // SBCWRdRr
1129 2U, // SEXT
1130 2U, // SPREAD
1131 2U, // SPWRITE
1132 0U, // STDSPQRr
1133 0U, // STDWPtrQRr
1134 0U, // STDWSPQRr
1135 2U, // STSWKRr
1136 0U, // STWPtrPdRr
1137 0U, // STWPtrPiRr
1138 2U, // STWPtrRr
1139 0U, // SUBIWRdK
1140 0U, // SUBWRdRr
1141 0U, // Select16
1142 0U, // Select8
1143 2U, // ZEXT
1144 0U, // ADCRdRr
1145 0U, // ADDRdRr
1146 0U, // ADIWRdK
1147 0U, // ANDIRdK
1148 0U, // ANDRdRr
1149 0U, // ASRRd
1150 0U, // BCLRs
1151 0U, // BLD
1152 6U, // BRBCsk
1153 6U, // BRBSsk
1154 0U, // BREAK
1155 0U, // BREQk
1156 0U, // BRGEk
1157 0U, // BRLOk
1158 0U, // BRLTk
1159 0U, // BRMIk
1160 0U, // BRNEk
1161 0U, // BRPLk
1162 0U, // BRSHk
1163 0U, // BSETs
1164 2U, // BST
1165 0U, // CALLk
1166 2U, // CBIAb
1167 0U, // COMRd
1168 2U, // CPCRdRr
1169 2U, // CPIRdK
1170 2U, // CPRdRr
1171 2U, // CPSE
1172 0U, // DECRd
1173 0U, // DESK
1174 0U, // EICALL
1175 0U, // EIJMP
1176 0U, // ELPM
1177 2U, // ELPMRdZ
1178 50U, // ELPMRdZPi
1179 0U, // EORRdRr
1180 2U, // FMUL
1181 2U, // FMULS
1182 2U, // FMULSU
1183 0U, // ICALL
1184 0U, // IJMP
1185 0U, // INCRd
1186 2U, // INRdA
1187 0U, // JMPk
1188 8U, // LACZRd
1189 8U, // LASZRd
1190 8U, // LATZRd
1191 4U, // LDDRdPtrQ
1192 2U, // LDIRdK
1193 2U, // LDRdPtr
1194 0U, // LDRdPtrPd
1195 48U, // LDRdPtrPi
1196 2U, // LDSRdK
1197 2U, // LDSRdKTiny
1198 0U, // LPM
1199 2U, // LPMRdZ
1200 50U, // LPMRdZPi
1201 0U, // LSRRd
1202 2U, // MOVRdRr
1203 2U, // MOVWRdRr
1204 2U, // MULRdRr
1205 2U, // MULSRdRr
1206 2U, // MULSURdRr
1207 0U, // NEGRd
1208 0U, // NOP
1209 0U, // ORIRdK
1210 0U, // ORRdRr
1211 2U, // OUTARr
1212 0U, // POPRd
1213 0U, // PUSHRr
1214 0U, // RCALLk
1215 0U, // RET
1216 0U, // RETI
1217 0U, // RJMPk
1218 0U, // RORRd
1219 0U, // SBCIRdK
1220 0U, // SBCRdRr
1221 2U, // SBIAb
1222 2U, // SBICAb
1223 2U, // SBISAb
1224 0U, // SBIWRdK
1225 2U, // SBRCRrB
1226 2U, // SBRSRrB
1227 0U, // SLEEP
1228 0U, // SPM
1229 1U, // SPMZPi
1230 0U, // STDPtrQRr
1231 0U, // STPtrPdRr
1232 0U, // STPtrPiRr
1233 2U, // STPtrRr
1234 2U, // STSKRr
1235 2U, // STSKRrTiny
1236 0U, // SUBIRdK
1237 0U, // SUBRdRr
1238 0U, // SWAPRd
1239 0U, // WDR
1240 8U, // XCHZRd
1241 };
1242
1243 // Emit the opcode for the instruction.
1244 uint32_t Bits = 0;
1245 Bits |= OpInfo0[MI.getOpcode()] << 0;
1246 Bits |= OpInfo1[MI.getOpcode()] << 16;
1247 if (Bits == 0)
1248 return {nullptr, Bits};
1249 return {AsmStrs+(Bits & 2047)-1, Bits};
1250
1251}
1252/// printInstruction - This method is automatically generated by tablegen
1253/// from the instruction set description.
1254LLVM_NO_PROFILE_INSTRUMENT_FUNCTION
1255void AVRInstPrinter::printInstruction(const MCInst *MI, uint64_t Address, raw_ostream &O) {
1256 O << "\t";
1257
1258 auto MnemonicInfo = getMnemonic(MI: *MI);
1259
1260 O << MnemonicInfo.first;
1261
1262 uint32_t Bits = MnemonicInfo.second;
1263 assert(Bits != 0 && "Cannot print this instruction.");
1264
1265 // Fragment 0 encoded into 3 bits for 6 unique commands.
1266 switch ((Bits >> 11) & 7) {
1267 default: llvm_unreachable("Invalid command number.");
1268 case 0:
1269 // DBG_VALUE, DBG_VALUE_LIST, DBG_INSTR_REF, DBG_PHI, DBG_LABEL, BUNDLE, ...
1270 return;
1271 break;
1272 case 1:
1273 // ADCWRdRr, ADDWRdRr, ANDIWRdK, ANDWRdRr, ASRBNRd, ASRWLoRd, ASRWNRd, AS...
1274 printOperand(MI, OpNo: 0, O);
1275 break;
1276 case 2:
1277 // STDSPQRr, STDWSPQRr
1278 printMemspi(MI, OpNo: 0, O);
1279 O << ", ";
1280 printOperand(MI, OpNo: 2, O);
1281 return;
1282 break;
1283 case 3:
1284 // STDWPtrQRr, STDPtrQRr
1285 printMemri(MI, OpNo: 0, O);
1286 O << ", ";
1287 printOperand(MI, OpNo: 2, O);
1288 return;
1289 break;
1290 case 4:
1291 // STWPtrPdRr, STWPtrPiRr, LACZRd, LASZRd, LATZRd, STPtrPdRr, STPtrPiRr, ...
1292 printOperand(MI, OpNo: 1, O);
1293 break;
1294 case 5:
1295 // BREQk, BRGEk, BRLOk, BRLTk, BRMIk, BRNEk, BRPLk, BRSHk, RCALLk, RJMPk
1296 printPCRelImm(MI, OpNo: 0, O);
1297 return;
1298 break;
1299 }
1300
1301
1302 // Fragment 1 encoded into 3 bits for 5 unique commands.
1303 switch ((Bits >> 14) & 7) {
1304 default: llvm_unreachable("Invalid command number.");
1305 case 0:
1306 // ADCWRdRr, ADDWRdRr, ANDIWRdK, ANDWRdRr, ASRBNRd, ASRWNRd, CPCWRdRr, CP...
1307 O << ", ";
1308 break;
1309 case 1:
1310 // ASRWLoRd, ASRWRd, COMWRd, CopyZero, LSLWHiRd, LSLWRd, LSRWLoRd, LSRWRd...
1311 return;
1312 break;
1313 case 2:
1314 // LDWRdPtrPd, LDRdPtrPd
1315 O << ", -";
1316 printOperand(MI, OpNo: 2, O);
1317 return;
1318 break;
1319 case 3:
1320 // STWPtrPiRr, STPtrPiRr
1321 O << "+, ";
1322 printOperand(MI, OpNo: 2, O);
1323 return;
1324 break;
1325 case 4:
1326 // SPMZPi
1327 O << '+';
1328 return;
1329 break;
1330 }
1331
1332
1333 // Fragment 2 encoded into 3 bits for 5 unique commands.
1334 switch ((Bits >> 17) & 7) {
1335 default: llvm_unreachable("Invalid command number.");
1336 case 0:
1337 // ADCWRdRr, ADDWRdRr, ANDIWRdK, ANDWRdRr, ASRBNRd, ASRWNRd, EORWRdRr, LD...
1338 printOperand(MI, OpNo: 2, O);
1339 break;
1340 case 1:
1341 // CPCWRdRr, CPWRdRr, ELPMBRdZ, ELPMBRdZPi, ELPMWRdZ, ELPMWRdZPi, FRMIDX,...
1342 printOperand(MI, OpNo: 1, O);
1343 break;
1344 case 2:
1345 // LDDWRdPtrQ, LDDWRdYQ, LDDRdPtrQ
1346 printMemri(MI, OpNo: 1, O);
1347 return;
1348 break;
1349 case 3:
1350 // BRBCsk, BRBSsk
1351 printPCRelImm(MI, OpNo: 1, O);
1352 return;
1353 break;
1354 case 4:
1355 // LACZRd, LASZRd, LATZRd, XCHZRd
1356 printOperand(MI, OpNo: 0, O);
1357 return;
1358 break;
1359 }
1360
1361
1362 // Fragment 3 encoded into 2 bits for 4 unique commands.
1363 switch ((Bits >> 20) & 3) {
1364 default: llvm_unreachable("Invalid command number.");
1365 case 0:
1366 // ADCWRdRr, ADDWRdRr, ANDIWRdK, ANDWRdRr, ASRBNRd, ASRWNRd, CPCWRdRr, CP...
1367 return;
1368 break;
1369 case 1:
1370 // ELPMBRdZ, ELPMWRdZ, FRMIDX
1371 O << ", ";
1372 printOperand(MI, OpNo: 2, O);
1373 return;
1374 break;
1375 case 2:
1376 // ELPMBRdZPi, ELPMWRdZPi
1377 O << "+, ";
1378 printOperand(MI, OpNo: 2, O);
1379 return;
1380 break;
1381 case 3:
1382 // LDWRdPtrPi, LPMWRdZPi, ELPMRdZPi, LDRdPtrPi, LPMRdZPi
1383 O << '+';
1384 return;
1385 break;
1386 }
1387
1388}
1389
1390
1391/// getRegisterName - This method is automatically generated by tblgen
1392/// from the register set description. This returns the assembler name
1393/// for the specified register.
1394const char *AVRInstPrinter::
1395getRegisterName(MCRegister Reg, unsigned AltIdx) {
1396 unsigned RegNo = Reg.id();
1397 assert(RegNo && RegNo < 62 && "Invalid register number!");
1398
1399
1400#ifdef __GNUC__
1401#pragma GCC diagnostic push
1402#pragma GCC diagnostic ignored "-Woverlength-strings"
1403#endif
1404 static const char AsmStrsNoRegAltName[] = {
1405 /* 0 */ "r11:r10\000"
1406 /* 8 */ "r21:r20\000"
1407 /* 16 */ "r31:r30\000"
1408 /* 24 */ "r1:r0\000"
1409 /* 30 */ "r12:r11\000"
1410 /* 38 */ "r22:r21\000"
1411 /* 46 */ "r31\000"
1412 /* 50 */ "r1\000"
1413 /* 53 */ "r13:r12\000"
1414 /* 61 */ "r23:r22\000"
1415 /* 69 */ "r3:r2\000"
1416 /* 75 */ "r14:r13\000"
1417 /* 83 */ "r24:r23\000"
1418 /* 91 */ "r3\000"
1419 /* 94 */ "r15:r14\000"
1420 /* 102 */ "r25:r24\000"
1421 /* 110 */ "r5:r4\000"
1422 /* 116 */ "r16:r15\000"
1423 /* 124 */ "r26:r25\000"
1424 /* 132 */ "r5\000"
1425 /* 135 */ "r17:r16\000"
1426 /* 143 */ "r27:r26\000"
1427 /* 151 */ "r7:r6\000"
1428 /* 157 */ "r18:r17\000"
1429 /* 165 */ "r27\000"
1430 /* 169 */ "r7\000"
1431 /* 172 */ "r19:r18\000"
1432 /* 180 */ "r29:r28\000"
1433 /* 188 */ "r9:r8\000"
1434 /* 194 */ "r20:r19\000"
1435 /* 202 */ "r29\000"
1436 /* 206 */ "r10:r9\000"
1437 /* 213 */ "SPH\000"
1438 /* 217 */ "SPL\000"
1439 /* 221 */ "SP\000"
1440 /* 224 */ "FLAGS\000"
1441};
1442#ifdef __GNUC__
1443#pragma GCC diagnostic pop
1444#endif
1445
1446 static const uint8_t RegAsmOffsetNoRegAltName[] = {
1447 221, 213, 217, 224, 27, 50, 72, 91, 113, 132, 154, 169, 191, 210,
1448 4, 34, 57, 79, 98, 120, 139, 161, 176, 198, 12, 42, 65, 87,
1449 106, 128, 147, 165, 184, 202, 20, 46, 24, 69, 110, 151, 188, 206,
1450 0, 30, 53, 75, 94, 116, 135, 157, 172, 194, 8, 38, 61, 83,
1451 102, 124, 143, 180, 16,
1452 };
1453
1454
1455#ifdef __GNUC__
1456#pragma GCC diagnostic push
1457#pragma GCC diagnostic ignored "-Woverlength-strings"
1458#endif
1459 static const char AsmStrsptr[] = {
1460 /* 0 */ "X\000"
1461 /* 2 */ "Y\000"
1462 /* 4 */ "Z\000"
1463};
1464#ifdef __GNUC__
1465#pragma GCC diagnostic pop
1466#endif
1467
1468 static const uint8_t RegAsmOffsetptr[] = {
1469 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1470 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1471 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1472 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1473 1, 1, 0, 2, 4,
1474 };
1475
1476 switch(AltIdx) {
1477 default: llvm_unreachable("Invalid register alt name index!");
1478 case AVR::NoRegAltName:
1479 assert(*(AsmStrsNoRegAltName+RegAsmOffsetNoRegAltName[RegNo-1]) &&
1480 "Invalid alt name index for register!");
1481 return AsmStrsNoRegAltName+RegAsmOffsetNoRegAltName[RegNo-1];
1482 case AVR::ptr:
1483 assert(*(AsmStrsptr+RegAsmOffsetptr[RegNo-1]) &&
1484 "Invalid alt name index for register!");
1485 return AsmStrsptr+RegAsmOffsetptr[RegNo-1];
1486 }
1487}
1488
1489#ifdef PRINT_ALIAS_INSTR
1490#undef PRINT_ALIAS_INSTR
1491
1492bool AVRInstPrinter::printAliasInstr(const MCInst *MI, uint64_t Address, raw_ostream &OS) {
1493 static const PatternsForOpcode OpToPatterns[] = {
1494 {.Opcode: AVR::ADCRdRr, .PatternStart: 0, .NumPatterns: 1 },
1495 {.Opcode: AVR::ADDRdRr, .PatternStart: 1, .NumPatterns: 1 },
1496 {.Opcode: AVR::ANDRdRr, .PatternStart: 2, .NumPatterns: 1 },
1497 {.Opcode: AVR::BCLRs, .PatternStart: 3, .NumPatterns: 8 },
1498 {.Opcode: AVR::BRBCsk, .PatternStart: 11, .NumPatterns: 5 },
1499 {.Opcode: AVR::BRBSsk, .PatternStart: 16, .NumPatterns: 5 },
1500 {.Opcode: AVR::BSETs, .PatternStart: 21, .NumPatterns: 8 },
1501 {.Opcode: AVR::EORRdRr, .PatternStart: 29, .NumPatterns: 1 },
1502 };
1503
1504 static const AliasPattern Patterns[] = {
1505 // AVR::ADCRdRr - 0
1506 {.AsmStrOffset: 0, .AliasCondStart: 0, .NumOperands: 3, .NumConds: 3 },
1507 // AVR::ADDRdRr - 1
1508 {.AsmStrOffset: 7, .AliasCondStart: 3, .NumOperands: 3, .NumConds: 3 },
1509 // AVR::ANDRdRr - 2
1510 {.AsmStrOffset: 14, .AliasCondStart: 6, .NumOperands: 3, .NumConds: 3 },
1511 // AVR::BCLRs - 3
1512 {.AsmStrOffset: 21, .AliasCondStart: 9, .NumOperands: 1, .NumConds: 1 },
1513 {.AsmStrOffset: 25, .AliasCondStart: 10, .NumOperands: 1, .NumConds: 1 },
1514 {.AsmStrOffset: 29, .AliasCondStart: 11, .NumOperands: 1, .NumConds: 1 },
1515 {.AsmStrOffset: 33, .AliasCondStart: 12, .NumOperands: 1, .NumConds: 1 },
1516 {.AsmStrOffset: 37, .AliasCondStart: 13, .NumOperands: 1, .NumConds: 1 },
1517 {.AsmStrOffset: 41, .AliasCondStart: 14, .NumOperands: 1, .NumConds: 1 },
1518 {.AsmStrOffset: 45, .AliasCondStart: 15, .NumOperands: 1, .NumConds: 1 },
1519 {.AsmStrOffset: 49, .AliasCondStart: 16, .NumOperands: 1, .NumConds: 1 },
1520 // AVR::BRBCsk - 11
1521 {.AsmStrOffset: 53, .AliasCondStart: 17, .NumOperands: 2, .NumConds: 1 },
1522 {.AsmStrOffset: 63, .AliasCondStart: 18, .NumOperands: 2, .NumConds: 1 },
1523 {.AsmStrOffset: 73, .AliasCondStart: 19, .NumOperands: 2, .NumConds: 1 },
1524 {.AsmStrOffset: 83, .AliasCondStart: 20, .NumOperands: 2, .NumConds: 1 },
1525 {.AsmStrOffset: 93, .AliasCondStart: 21, .NumOperands: 2, .NumConds: 1 },
1526 // AVR::BRBSsk - 16
1527 {.AsmStrOffset: 103, .AliasCondStart: 22, .NumOperands: 2, .NumConds: 1 },
1528 {.AsmStrOffset: 113, .AliasCondStart: 23, .NumOperands: 2, .NumConds: 1 },
1529 {.AsmStrOffset: 123, .AliasCondStart: 24, .NumOperands: 2, .NumConds: 1 },
1530 {.AsmStrOffset: 133, .AliasCondStart: 25, .NumOperands: 2, .NumConds: 1 },
1531 {.AsmStrOffset: 143, .AliasCondStart: 26, .NumOperands: 2, .NumConds: 1 },
1532 // AVR::BSETs - 21
1533 {.AsmStrOffset: 153, .AliasCondStart: 27, .NumOperands: 1, .NumConds: 1 },
1534 {.AsmStrOffset: 157, .AliasCondStart: 28, .NumOperands: 1, .NumConds: 1 },
1535 {.AsmStrOffset: 161, .AliasCondStart: 29, .NumOperands: 1, .NumConds: 1 },
1536 {.AsmStrOffset: 165, .AliasCondStart: 30, .NumOperands: 1, .NumConds: 1 },
1537 {.AsmStrOffset: 169, .AliasCondStart: 31, .NumOperands: 1, .NumConds: 1 },
1538 {.AsmStrOffset: 173, .AliasCondStart: 32, .NumOperands: 1, .NumConds: 1 },
1539 {.AsmStrOffset: 177, .AliasCondStart: 33, .NumOperands: 1, .NumConds: 1 },
1540 {.AsmStrOffset: 181, .AliasCondStart: 34, .NumOperands: 1, .NumConds: 1 },
1541 // AVR::EORRdRr - 29
1542 {.AsmStrOffset: 185, .AliasCondStart: 35, .NumOperands: 3, .NumConds: 3 },
1543 };
1544
1545 static const AliasPatternCond Conds[] = {
1546 // (ADCRdRr GPR8:$rd, GPR8:$rd) - 0
1547 {.Kind: AliasPatternCond::K_RegClass, .Value: AVR::GPR8RegClassID},
1548 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1549 {.Kind: AliasPatternCond::K_TiedReg, .Value: 0},
1550 // (ADDRdRr GPR8:$rd, GPR8:$rd) - 3
1551 {.Kind: AliasPatternCond::K_RegClass, .Value: AVR::GPR8RegClassID},
1552 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1553 {.Kind: AliasPatternCond::K_TiedReg, .Value: 0},
1554 // (ANDRdRr GPR8:$rd, GPR8:$rd) - 6
1555 {.Kind: AliasPatternCond::K_RegClass, .Value: AVR::GPR8RegClassID},
1556 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1557 {.Kind: AliasPatternCond::K_TiedReg, .Value: 0},
1558 // (BCLRs 0) - 9
1559 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1560 // (BCLRs 1) - 10
1561 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(1)},
1562 // (BCLRs 2) - 11
1563 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(2)},
1564 // (BCLRs 3) - 12
1565 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(3)},
1566 // (BCLRs 4) - 13
1567 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(4)},
1568 // (BCLRs 5) - 14
1569 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(5)},
1570 // (BCLRs 6) - 15
1571 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(6)},
1572 // (BCLRs 7) - 16
1573 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(7)},
1574 // (BRBCsk 0, relbrtarget_7:$k) - 17
1575 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1576 // (BRBCsk 5, relbrtarget_7:$k) - 18
1577 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(5)},
1578 // (BRBCsk 6, relbrtarget_7:$k) - 19
1579 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(6)},
1580 // (BRBCsk 3, relbrtarget_7:$k) - 20
1581 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(3)},
1582 // (BRBCsk 7, relbrtarget_7:$k) - 21
1583 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(7)},
1584 // (BRBSsk 0, relbrtarget_7:$k) - 22
1585 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1586 // (BRBSsk 5, relbrtarget_7:$k) - 23
1587 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(5)},
1588 // (BRBSsk 6, relbrtarget_7:$k) - 24
1589 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(6)},
1590 // (BRBSsk 3, relbrtarget_7:$k) - 25
1591 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(3)},
1592 // (BRBSsk 7, relbrtarget_7:$k) - 26
1593 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(7)},
1594 // (BSETs 0) - 27
1595 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1596 // (BSETs 1) - 28
1597 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(1)},
1598 // (BSETs 2) - 29
1599 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(2)},
1600 // (BSETs 3) - 30
1601 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(3)},
1602 // (BSETs 4) - 31
1603 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(4)},
1604 // (BSETs 5) - 32
1605 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(5)},
1606 // (BSETs 6) - 33
1607 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(6)},
1608 // (BSETs 7) - 34
1609 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(7)},
1610 // (EORRdRr GPR8:$rd, GPR8:$rd) - 35
1611 {.Kind: AliasPatternCond::K_RegClass, .Value: AVR::GPR8RegClassID},
1612 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1613 {.Kind: AliasPatternCond::K_TiedReg, .Value: 0},
1614 };
1615
1616 static const char AsmStrings[] =
1617 /* 0 */ "rol $\x01\0"
1618 /* 7 */ "lsl $\x01\0"
1619 /* 14 */ "tst $\x01\0"
1620 /* 21 */ "clc\0"
1621 /* 25 */ "clz\0"
1622 /* 29 */ "cln\0"
1623 /* 33 */ "clv\0"
1624 /* 37 */ "cls\0"
1625 /* 41 */ "clh\0"
1626 /* 45 */ "clt\0"
1627 /* 49 */ "cli\0"
1628 /* 53 */ "brcc $\xFF\x02\x01\0"
1629 /* 63 */ "brhc $\xFF\x02\x01\0"
1630 /* 73 */ "brtc $\xFF\x02\x01\0"
1631 /* 83 */ "brvc $\xFF\x02\x01\0"
1632 /* 93 */ "brid $\xFF\x02\x01\0"
1633 /* 103 */ "brcs $\xFF\x02\x01\0"
1634 /* 113 */ "brhs $\xFF\x02\x01\0"
1635 /* 123 */ "brts $\xFF\x02\x01\0"
1636 /* 133 */ "brvs $\xFF\x02\x01\0"
1637 /* 143 */ "brie $\xFF\x02\x01\0"
1638 /* 153 */ "sec\0"
1639 /* 157 */ "sez\0"
1640 /* 161 */ "sen\0"
1641 /* 165 */ "sev\0"
1642 /* 169 */ "ses\0"
1643 /* 173 */ "seh\0"
1644 /* 177 */ "set\0"
1645 /* 181 */ "sei\0"
1646 /* 185 */ "clr $\x01\0"
1647 ;
1648
1649#ifndef NDEBUG
1650 static struct SortCheck {
1651 SortCheck(ArrayRef<PatternsForOpcode> OpToPatterns) {
1652 assert(std::is_sorted(
1653 OpToPatterns.begin(), OpToPatterns.end(),
1654 [](const PatternsForOpcode &L, const PatternsForOpcode &R) {
1655 return L.Opcode < R.Opcode;
1656 }) &&
1657 "tablegen failed to sort opcode patterns");
1658 }
1659 } sortCheckVar(OpToPatterns);
1660#endif
1661
1662 AliasMatchingData M {
1663 .OpToPatterns: ArrayRef(OpToPatterns),
1664 .Patterns: ArrayRef(Patterns),
1665 .PatternConds: ArrayRef(Conds),
1666 .AsmStrings: StringRef(AsmStrings, std::size(AsmStrings)),
1667 .ValidateMCOperand: nullptr,
1668 };
1669 const char *AsmString = matchAliasPatterns(MI, STI: nullptr, M);
1670 if (!AsmString) return false;
1671
1672 unsigned I = 0;
1673 while (AsmString[I] != ' ' && AsmString[I] != '\t' &&
1674 AsmString[I] != '$' && AsmString[I] != '\0')
1675 ++I;
1676 OS << '\t' << StringRef(AsmString, I);
1677 if (AsmString[I] != '\0') {
1678 if (AsmString[I] == ' ' || AsmString[I] == '\t') {
1679 OS << '\t';
1680 ++I;
1681 }
1682 do {
1683 if (AsmString[I] == '$') {
1684 ++I;
1685 if (AsmString[I] == (char)0xff) {
1686 ++I;
1687 int OpIdx = AsmString[I++] - 1;
1688 int PrintMethodIdx = AsmString[I++] - 1;
1689 printCustomAliasOperand(MI, Address, OpIdx, PrintMethodIdx, O&: OS);
1690 } else
1691 printOperand(MI, OpNo: unsigned(AsmString[I++]) - 1, O&: OS);
1692 } else {
1693 OS << AsmString[I++];
1694 }
1695 } while (AsmString[I] != '\0');
1696 }
1697
1698 return true;
1699}
1700
1701void AVRInstPrinter::printCustomAliasOperand(
1702 const MCInst *MI, uint64_t Address, unsigned OpIdx,
1703 unsigned PrintMethodIdx,
1704 raw_ostream &OS) {
1705 switch (PrintMethodIdx) {
1706 default:
1707 llvm_unreachable("Unknown PrintMethod kind");
1708 break;
1709 case 0:
1710 printPCRelImm(MI, OpNo: OpIdx, O&: OS);
1711 break;
1712 }
1713}
1714
1715#endif // PRINT_ALIAS_INSTR
1716