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