1/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2|* *|
3|* Assembly Writer Source Fragment *|
4|* *|
5|* Automatically generated file, do not edit! *|
6|* From: MSP430.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>
13MSP430InstPrinter::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 */ "rra\t\000"
21 /* 5 */ "rra.b\t\000"
22 /* 12 */ "sub.b\t\000"
23 /* 19 */ "subc.b\t\000"
24 /* 27 */ "addc.b\t\000"
25 /* 35 */ "bic.b\t\000"
26 /* 42 */ "rrc.b\t\000"
27 /* 49 */ "dadd.b\t\000"
28 /* 57 */ "and.b\t\000"
29 /* 64 */ "push.b\t\000"
30 /* 72 */ "cmp.b\t\000"
31 /* 79 */ "xor.b\t\000"
32 /* 86 */ "bis.b\t\000"
33 /* 93 */ "bit.b\t\000"
34 /* 100 */ "mov.b\t\000"
35 /* 107 */ "swpb\t\000"
36 /* 113 */ "sub\t\000"
37 /* 118 */ "subc\t\000"
38 /* 124 */ "addc\t\000"
39 /* 130 */ "bic\t\000"
40 /* 135 */ "rrc\t\000"
41 /* 140 */ "dadd\t\000"
42 /* 146 */ "and\t\000"
43 /* 151 */ "push\t\000"
44 /* 157 */ "call\t\000"
45 /* 163 */ "cmp\t\000"
46 /* 168 */ "jmp\t\000"
47 /* 173 */ "pop\t\000"
48 /* 178 */ "br\t\000"
49 /* 182 */ "xor\t\000"
50 /* 187 */ "bis\t\000"
51 /* 192 */ "bit\t\000"
52 /* 197 */ "sxt\t\000"
53 /* 202 */ "mov\t\000"
54 /* 207 */ "#ADJCALLSTACKDOWN \000"
55 /* 226 */ "#ADJCALLSTACKUP \000"
56 /* 243 */ "# XRay Function Patchable RET.\000"
57 /* 274 */ "# XRay Typed Event Log.\000"
58 /* 298 */ "# XRay Custom Event Log.\000"
59 /* 323 */ "# XRay Function Enter.\000"
60 /* 346 */ "# XRay Tail Call Exit.\000"
61 /* 369 */ "# XRay Function Exit.\000"
62 /* 391 */ "LIFETIME_END\000"
63 /* 404 */ "PSEUDO_PROBE\000"
64 /* 417 */ "BUNDLE\000"
65 /* 424 */ "FAKE_USE\000"
66 /* 433 */ "DBG_VALUE\000"
67 /* 443 */ "DBG_INSTR_REF\000"
68 /* 457 */ "DBG_PHI\000"
69 /* 465 */ "DBG_LABEL\000"
70 /* 475 */ "# Sra16 PSEUDO\000"
71 /* 490 */ "# Shl16 PSEUDO\000"
72 /* 505 */ "# Srl16 PSEUDO\000"
73 /* 520 */ "# Select16 PSEUDO\000"
74 /* 538 */ "# Sra8 PSEUDO\000"
75 /* 552 */ "# Shl8 PSEUDO\000"
76 /* 566 */ "# Srl8 PSEUDO\000"
77 /* 580 */ "# Select8 PSEUDO\000"
78 /* 597 */ "# ADDframe PSEUDO\000"
79 /* 615 */ "LIFETIME_START\000"
80 /* 630 */ "DBG_VALUE_LIST\000"
81 /* 645 */ "reti\000"
82 /* 650 */ "j\000"
83 /* 652 */ "# FEntry call\000"
84 /* 666 */ "ret\000"
85};
86#ifdef __GNUC__
87#pragma GCC diagnostic pop
88#endif
89
90 static const uint16_t OpInfo0[] = {
91 0U, // PHI
92 0U, // INLINEASM
93 0U, // INLINEASM_BR
94 0U, // CFI_INSTRUCTION
95 0U, // EH_LABEL
96 0U, // GC_LABEL
97 0U, // ANNOTATION_LABEL
98 0U, // KILL
99 0U, // EXTRACT_SUBREG
100 0U, // INSERT_SUBREG
101 0U, // IMPLICIT_DEF
102 0U, // INIT_UNDEF
103 0U, // SUBREG_TO_REG
104 0U, // COPY_TO_REGCLASS
105 434U, // DBG_VALUE
106 631U, // DBG_VALUE_LIST
107 444U, // DBG_INSTR_REF
108 458U, // DBG_PHI
109 466U, // DBG_LABEL
110 0U, // REG_SEQUENCE
111 0U, // COPY
112 0U, // COPY_LANEMASK
113 418U, // BUNDLE
114 616U, // LIFETIME_START
115 392U, // LIFETIME_END
116 405U, // PSEUDO_PROBE
117 0U, // ARITH_FENCE
118 0U, // STACKMAP
119 653U, // FENTRY_CALL
120 0U, // PATCHPOINT
121 0U, // LOAD_STACK_GUARD
122 0U, // PREALLOCATED_SETUP
123 0U, // PREALLOCATED_ARG
124 0U, // STATEPOINT
125 0U, // LOCAL_ESCAPE
126 0U, // FAULTING_OP
127 0U, // PATCHABLE_OP
128 324U, // PATCHABLE_FUNCTION_ENTER
129 244U, // PATCHABLE_RET
130 370U, // PATCHABLE_FUNCTION_EXIT
131 347U, // PATCHABLE_TAIL_CALL
132 299U, // PATCHABLE_EVENT_CALL
133 275U, // PATCHABLE_TYPED_EVENT_CALL
134 0U, // ICALL_BRANCH_FUNNEL
135 425U, // FAKE_USE
136 0U, // MEMBARRIER
137 0U, // JUMP_TABLE_DEBUG_INFO
138 0U, // RELOC_NONE
139 0U, // CONVERGENCECTRL_ENTRY
140 0U, // CONVERGENCECTRL_ANCHOR
141 0U, // CONVERGENCECTRL_LOOP
142 0U, // CONVERGENCECTRL_GLUE
143 0U, // G_ASSERT_SEXT
144 0U, // G_ASSERT_ZEXT
145 0U, // G_ASSERT_ALIGN
146 0U, // G_ADD
147 0U, // G_SUB
148 0U, // G_MUL
149 0U, // G_SDIV
150 0U, // G_UDIV
151 0U, // G_SREM
152 0U, // G_UREM
153 0U, // G_SDIVREM
154 0U, // G_UDIVREM
155 0U, // G_AND
156 0U, // G_OR
157 0U, // G_XOR
158 0U, // G_ABDS
159 0U, // G_ABDU
160 0U, // G_UAVGFLOOR
161 0U, // G_UAVGCEIL
162 0U, // G_SAVGFLOOR
163 0U, // G_SAVGCEIL
164 0U, // G_IMPLICIT_DEF
165 0U, // G_PHI
166 0U, // G_FRAME_INDEX
167 0U, // G_GLOBAL_VALUE
168 0U, // G_PTRAUTH_GLOBAL_VALUE
169 0U, // G_CONSTANT_POOL
170 0U, // G_EXTRACT
171 0U, // G_UNMERGE_VALUES
172 0U, // G_INSERT
173 0U, // G_MERGE_VALUES
174 0U, // G_BUILD_VECTOR
175 0U, // G_BUILD_VECTOR_TRUNC
176 0U, // G_CONCAT_VECTORS
177 0U, // G_PTRTOINT
178 0U, // G_INTTOPTR
179 0U, // G_BITCAST
180 0U, // G_FREEZE
181 0U, // G_CONSTANT_FOLD_BARRIER
182 0U, // G_INTRINSIC_FPTRUNC_ROUND
183 0U, // G_INTRINSIC_TRUNC
184 0U, // G_INTRINSIC_ROUND
185 0U, // G_INTRINSIC_LRINT
186 0U, // G_INTRINSIC_LLRINT
187 0U, // G_INTRINSIC_ROUNDEVEN
188 0U, // G_READCYCLECOUNTER
189 0U, // G_READSTEADYCOUNTER
190 0U, // G_LOAD
191 0U, // G_SEXTLOAD
192 0U, // G_ZEXTLOAD
193 0U, // G_FPEXTLOAD
194 0U, // G_INDEXED_LOAD
195 0U, // G_INDEXED_SEXTLOAD
196 0U, // G_INDEXED_ZEXTLOAD
197 0U, // G_STORE
198 0U, // G_FPTRUNCSTORE
199 0U, // G_INDEXED_STORE
200 0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS
201 0U, // G_ATOMIC_CMPXCHG
202 0U, // G_ATOMICRMW_XCHG
203 0U, // G_ATOMICRMW_ADD
204 0U, // G_ATOMICRMW_SUB
205 0U, // G_ATOMICRMW_AND
206 0U, // G_ATOMICRMW_NAND
207 0U, // G_ATOMICRMW_OR
208 0U, // G_ATOMICRMW_XOR
209 0U, // G_ATOMICRMW_MAX
210 0U, // G_ATOMICRMW_MIN
211 0U, // G_ATOMICRMW_UMAX
212 0U, // G_ATOMICRMW_UMIN
213 0U, // G_ATOMICRMW_FADD
214 0U, // G_ATOMICRMW_FSUB
215 0U, // G_ATOMICRMW_FMAX
216 0U, // G_ATOMICRMW_FMIN
217 0U, // G_ATOMICRMW_FMAXIMUM
218 0U, // G_ATOMICRMW_FMINIMUM
219 0U, // G_ATOMICRMW_FMAXIMUMNUM
220 0U, // G_ATOMICRMW_FMINIMUMNUM
221 0U, // G_ATOMICRMW_UINC_WRAP
222 0U, // G_ATOMICRMW_UDEC_WRAP
223 0U, // G_ATOMICRMW_USUB_COND
224 0U, // G_ATOMICRMW_USUB_SAT
225 0U, // G_FENCE
226 0U, // G_PREFETCH
227 0U, // G_BRCOND
228 0U, // G_BRINDIRECT
229 0U, // G_INVOKE_REGION_START
230 0U, // G_INTRINSIC
231 0U, // G_INTRINSIC_W_SIDE_EFFECTS
232 0U, // G_INTRINSIC_CONVERGENT
233 0U, // G_INTRINSIC_CONVERGENT_W_SIDE_EFFECTS
234 0U, // G_ANYEXT
235 0U, // G_TRUNC
236 0U, // G_TRUNC_SSAT_S
237 0U, // G_TRUNC_SSAT_U
238 0U, // G_TRUNC_USAT_U
239 0U, // G_CONSTANT
240 0U, // G_FCONSTANT
241 0U, // G_VASTART
242 0U, // G_VAARG
243 0U, // G_SEXT
244 0U, // G_SEXT_INREG
245 0U, // G_ZEXT
246 0U, // G_SHL
247 0U, // G_LSHR
248 0U, // G_ASHR
249 0U, // G_FSHL
250 0U, // G_FSHR
251 0U, // G_ROTR
252 0U, // G_ROTL
253 0U, // G_ICMP
254 0U, // G_FCMP
255 0U, // G_SCMP
256 0U, // G_UCMP
257 0U, // G_SELECT
258 0U, // G_UADDO
259 0U, // G_UADDE
260 0U, // G_USUBO
261 0U, // G_USUBE
262 0U, // G_SADDO
263 0U, // G_SADDE
264 0U, // G_SSUBO
265 0U, // G_SSUBE
266 0U, // G_UMULO
267 0U, // G_SMULO
268 0U, // G_UMULH
269 0U, // G_SMULH
270 0U, // G_UADDSAT
271 0U, // G_SADDSAT
272 0U, // G_USUBSAT
273 0U, // G_SSUBSAT
274 0U, // G_USHLSAT
275 0U, // G_SSHLSAT
276 0U, // G_SMULFIX
277 0U, // G_UMULFIX
278 0U, // G_SMULFIXSAT
279 0U, // G_UMULFIXSAT
280 0U, // G_SDIVFIX
281 0U, // G_UDIVFIX
282 0U, // G_SDIVFIXSAT
283 0U, // G_UDIVFIXSAT
284 0U, // G_FADD
285 0U, // G_FSUB
286 0U, // G_FMUL
287 0U, // G_FMA
288 0U, // G_FMAD
289 0U, // G_FDIV
290 0U, // G_FREM
291 0U, // G_FMODF
292 0U, // G_FPOW
293 0U, // G_FPOWI
294 0U, // G_FEXP
295 0U, // G_FEXP2
296 0U, // G_FEXP10
297 0U, // G_FLOG
298 0U, // G_FLOG2
299 0U, // G_FLOG10
300 0U, // G_FLDEXP
301 0U, // G_FFREXP
302 0U, // G_FNEG
303 0U, // G_FPEXT
304 0U, // G_FPTRUNC
305 0U, // G_FPTOSI
306 0U, // G_FPTOUI
307 0U, // G_SITOFP
308 0U, // G_UITOFP
309 0U, // G_FPTOSI_SAT
310 0U, // G_FPTOUI_SAT
311 0U, // G_FABS
312 0U, // G_FCOPYSIGN
313 0U, // G_IS_FPCLASS
314 0U, // G_FCANONICALIZE
315 0U, // G_FMINNUM
316 0U, // G_FMAXNUM
317 0U, // G_FMINNUM_IEEE
318 0U, // G_FMAXNUM_IEEE
319 0U, // G_FMINIMUM
320 0U, // G_FMAXIMUM
321 0U, // G_FMINIMUMNUM
322 0U, // G_FMAXIMUMNUM
323 0U, // G_GET_FPENV
324 0U, // G_SET_FPENV
325 0U, // G_RESET_FPENV
326 0U, // G_GET_FPMODE
327 0U, // G_SET_FPMODE
328 0U, // G_RESET_FPMODE
329 0U, // G_GET_ROUNDING
330 0U, // G_SET_ROUNDING
331 0U, // G_PTR_ADD
332 0U, // G_PTRMASK
333 0U, // G_SMIN
334 0U, // G_SMAX
335 0U, // G_UMIN
336 0U, // G_UMAX
337 0U, // G_ABS
338 0U, // G_LROUND
339 0U, // G_LLROUND
340 0U, // G_BR
341 0U, // G_BRJT
342 0U, // G_VSCALE
343 0U, // G_INSERT_SUBVECTOR
344 0U, // G_EXTRACT_SUBVECTOR
345 0U, // G_INSERT_VECTOR_ELT
346 0U, // G_EXTRACT_VECTOR_ELT
347 0U, // G_SHUFFLE_VECTOR
348 0U, // G_SPLAT_VECTOR
349 0U, // G_STEP_VECTOR
350 0U, // G_VECTOR_COMPRESS
351 0U, // G_CTTZ
352 0U, // G_CTTZ_ZERO_POISON
353 0U, // G_CTLZ
354 0U, // G_CTLZ_ZERO_POISON
355 0U, // G_CTLS
356 0U, // G_CTPOP
357 0U, // G_BSWAP
358 0U, // G_BITREVERSE
359 0U, // G_CLMUL
360 0U, // G_FCEIL
361 0U, // G_FCOS
362 0U, // G_FSIN
363 0U, // G_FSINCOS
364 0U, // G_FTAN
365 0U, // G_FACOS
366 0U, // G_FASIN
367 0U, // G_FATAN
368 0U, // G_FATAN2
369 0U, // G_FCOSH
370 0U, // G_FSINH
371 0U, // G_FTANH
372 0U, // G_FSQRT
373 0U, // G_FFLOOR
374 0U, // G_FRINT
375 0U, // G_FNEARBYINT
376 0U, // G_ADDRSPACE_CAST
377 0U, // G_BLOCK_ADDR
378 0U, // G_JUMP_TABLE
379 0U, // G_DYN_STACKALLOC
380 0U, // G_STACKSAVE
381 0U, // G_STACKRESTORE
382 0U, // G_STRICT_FADD
383 0U, // G_STRICT_FSUB
384 0U, // G_STRICT_FMUL
385 0U, // G_STRICT_FDIV
386 0U, // G_STRICT_FREM
387 0U, // G_STRICT_FMA
388 0U, // G_STRICT_FSQRT
389 0U, // G_STRICT_FLDEXP
390 0U, // G_STRICT_FCMP
391 0U, // G_STRICT_FCMPS
392 0U, // G_READ_REGISTER
393 0U, // G_WRITE_REGISTER
394 0U, // G_MEMCPY
395 0U, // G_MEMCPY_INLINE
396 0U, // G_MEMMOVE
397 0U, // G_MEMSET
398 0U, // G_BZERO
399 0U, // G_MEMSET_INLINE
400 0U, // G_TRAP
401 0U, // G_DEBUGTRAP
402 0U, // G_UBSANTRAP
403 0U, // G_VECREDUCE_SEQ_FADD
404 0U, // G_VECREDUCE_SEQ_FMUL
405 0U, // G_VECREDUCE_FADD
406 0U, // G_VECREDUCE_FMUL
407 0U, // G_VECREDUCE_FMAX
408 0U, // G_VECREDUCE_FMIN
409 0U, // G_VECREDUCE_FMAXIMUM
410 0U, // G_VECREDUCE_FMINIMUM
411 0U, // G_VECREDUCE_ADD
412 0U, // G_VECREDUCE_MUL
413 0U, // G_VECREDUCE_AND
414 0U, // G_VECREDUCE_OR
415 0U, // G_VECREDUCE_XOR
416 0U, // G_VECREDUCE_SMAX
417 0U, // G_VECREDUCE_SMIN
418 0U, // G_VECREDUCE_UMAX
419 0U, // G_VECREDUCE_UMIN
420 0U, // G_SBFX
421 0U, // G_UBFX
422 1166U, // ADD16mc
423 1166U, // ADD16mi
424 2190U, // ADD16mm
425 3214U, // ADD16mn
426 4238U, // ADD16mp
427 1166U, // ADD16mr
428 17550U, // ADD16rc
429 17550U, // ADD16ri
430 18574U, // ADD16rm
431 19598U, // ADD16rn
432 5262U, // ADD16rp
433 17550U, // ADD16rr
434 1075U, // ADD8mc
435 1075U, // ADD8mi
436 2099U, // ADD8mm
437 3123U, // ADD8mn
438 4147U, // ADD8mp
439 1075U, // ADD8mr
440 17459U, // ADD8rc
441 17459U, // ADD8ri
442 18483U, // ADD8rm
443 19507U, // ADD8rn
444 5171U, // ADD8rp
445 17459U, // ADD8rr
446 1149U, // ADDC16mc
447 1149U, // ADDC16mi
448 2173U, // ADDC16mm
449 3197U, // ADDC16mn
450 4221U, // ADDC16mp
451 1149U, // ADDC16mr
452 17533U, // ADDC16rc
453 17533U, // ADDC16ri
454 18557U, // ADDC16rm
455 19581U, // ADDC16rn
456 5245U, // ADDC16rp
457 17533U, // ADDC16rr
458 1052U, // ADDC8mc
459 1052U, // ADDC8mi
460 2076U, // ADDC8mm
461 3100U, // ADDC8mn
462 4124U, // ADDC8mp
463 1052U, // ADDC8mr
464 17436U, // ADDC8rc
465 17436U, // ADDC8ri
466 18460U, // ADDC8rm
467 19484U, // ADDC8rn
468 5148U, // ADDC8rp
469 17436U, // ADDC8rr
470 598U, // ADDframe
471 39120U, // ADJCALLSTACKDOWN
472 39139U, // ADJCALLSTACKUP
473 1171U, // AND16mc
474 1171U, // AND16mi
475 2195U, // AND16mm
476 3219U, // AND16mn
477 4243U, // AND16mp
478 1171U, // AND16mr
479 17555U, // AND16rc
480 17555U, // AND16ri
481 18579U, // AND16rm
482 19603U, // AND16rn
483 5267U, // AND16rp
484 17555U, // AND16rr
485 1082U, // AND8mc
486 1082U, // AND8mi
487 2106U, // AND8mm
488 3130U, // AND8mn
489 4154U, // AND8mp
490 1082U, // AND8mr
491 17466U, // AND8rc
492 17466U, // AND8ri
493 18490U, // AND8rm
494 19514U, // AND8rn
495 5178U, // AND8rp
496 17466U, // AND8rr
497 1155U, // BIC16mc
498 1155U, // BIC16mi
499 2179U, // BIC16mm
500 3203U, // BIC16mn
501 4227U, // BIC16mp
502 1155U, // BIC16mr
503 17539U, // BIC16rc
504 17539U, // BIC16ri
505 18563U, // BIC16rm
506 19587U, // BIC16rn
507 5251U, // BIC16rp
508 17539U, // BIC16rr
509 1060U, // BIC8mc
510 1060U, // BIC8mi
511 2084U, // BIC8mm
512 3108U, // BIC8mn
513 4132U, // BIC8mp
514 1060U, // BIC8mr
515 17444U, // BIC8rc
516 17444U, // BIC8ri
517 18468U, // BIC8rm
518 19492U, // BIC8rn
519 5156U, // BIC8rp
520 17444U, // BIC8rr
521 1212U, // BIS16mc
522 1212U, // BIS16mi
523 2236U, // BIS16mm
524 3260U, // BIS16mn
525 4284U, // BIS16mp
526 1212U, // BIS16mr
527 17596U, // BIS16rc
528 17596U, // BIS16ri
529 18620U, // BIS16rm
530 19644U, // BIS16rn
531 5308U, // BIS16rp
532 17596U, // BIS16rr
533 1111U, // BIS8mc
534 1111U, // BIS8mi
535 2135U, // BIS8mm
536 3159U, // BIS8mn
537 4183U, // BIS8mp
538 1111U, // BIS8mr
539 17495U, // BIS8rc
540 17495U, // BIS8ri
541 18519U, // BIS8rm
542 19543U, // BIS8rn
543 5207U, // BIS8rp
544 17495U, // BIS8rr
545 1217U, // BIT16mc
546 1217U, // BIT16mi
547 2241U, // BIT16mm
548 3265U, // BIT16mn
549 4289U, // BIT16mp
550 1217U, // BIT16mr
551 7361U, // BIT16rc
552 7361U, // BIT16ri
553 8385U, // BIT16rm
554 9409U, // BIT16rn
555 10433U, // BIT16rp
556 7361U, // BIT16rr
557 1118U, // BIT8mc
558 1118U, // BIT8mi
559 2142U, // BIT8mm
560 3166U, // BIT8mn
561 4190U, // BIT8mp
562 1118U, // BIT8mr
563 7262U, // BIT8rc
564 7262U, // BIT8ri
565 8286U, // BIT8rm
566 9310U, // BIT8rn
567 10334U, // BIT8rp
568 7262U, // BIT8rr
569 55475U, // Bi
570 11443U, // Bm
571 55475U, // Br
572 55454U, // CALLi
573 11422U, // CALLm
574 12446U, // CALLn
575 13470U, // CALLp
576 55454U, // CALLr
577 1188U, // CMP16mc
578 1188U, // CMP16mi
579 2212U, // CMP16mm
580 3236U, // CMP16mn
581 4260U, // CMP16mp
582 1188U, // CMP16mr
583 7332U, // CMP16rc
584 7332U, // CMP16ri
585 8356U, // CMP16rm
586 9380U, // CMP16rn
587 10404U, // CMP16rp
588 7332U, // CMP16rr
589 1097U, // CMP8mc
590 1097U, // CMP8mi
591 2121U, // CMP8mm
592 3145U, // CMP8mn
593 4169U, // CMP8mp
594 1097U, // CMP8mr
595 7241U, // CMP8rc
596 7241U, // CMP8ri
597 8265U, // CMP8rm
598 9289U, // CMP8rn
599 10313U, // CMP8rp
600 7241U, // CMP8rr
601 1165U, // DADD16mc
602 1165U, // DADD16mi
603 2189U, // DADD16mm
604 3213U, // DADD16mn
605 4237U, // DADD16mp
606 1165U, // DADD16mr
607 17549U, // DADD16rc
608 17549U, // DADD16ri
609 18573U, // DADD16rm
610 19597U, // DADD16rn
611 5261U, // DADD16rp
612 17549U, // DADD16rr
613 1074U, // DADD8mc
614 1074U, // DADD8mi
615 2098U, // DADD8mm
616 3122U, // DADD8mn
617 4146U, // DADD8mp
618 1074U, // DADD8mr
619 17458U, // DADD8rc
620 17458U, // DADD8ri
621 18482U, // DADD8rm
622 19506U, // DADD8rn
623 5170U, // DADD8rp
624 17458U, // DADD8rr
625 14987U, // JCC
626 15529U, // JMP
627 1227U, // MOV16mc
628 1227U, // MOV16mi
629 2251U, // MOV16mm
630 3275U, // MOV16mn
631 1227U, // MOV16mr
632 7371U, // MOV16rc
633 7371U, // MOV16ri
634 8395U, // MOV16rm
635 9419U, // MOV16rn
636 20683U, // MOV16rp
637 7371U, // MOV16rr
638 1125U, // MOV8mc
639 1125U, // MOV8mi
640 2149U, // MOV8mm
641 3173U, // MOV8mn
642 1125U, // MOV8mr
643 7269U, // MOV8rc
644 7269U, // MOV8ri
645 8293U, // MOV8rm
646 9317U, // MOV8rn
647 20581U, // MOV8rp
648 7269U, // MOV8rr
649 8293U, // MOVZX16rm8
650 7269U, // MOVZX16rr8
651 55470U, // POP16r
652 55448U, // PUSH16c
653 55448U, // PUSH16i
654 55448U, // PUSH16r
655 55361U, // PUSH8r
656 667U, // RET
657 646U, // RETI
658 11265U, // RRA16m
659 12289U, // RRA16n
660 13313U, // RRA16p
661 55297U, // RRA16r
662 11270U, // RRA8m
663 12294U, // RRA8n
664 13318U, // RRA8p
665 55302U, // RRA8r
666 11400U, // RRC16m
667 12424U, // RRC16n
668 13448U, // RRC16p
669 55432U, // RRC16r
670 11307U, // RRC8m
671 12331U, // RRC8n
672 13355U, // RRC8p
673 55339U, // RRC8r
674 0U, // Rrcl16
675 0U, // Rrcl8
676 11462U, // SEXT16m
677 12486U, // SEXT16n
678 13510U, // SEXT16p
679 55494U, // SEXT16r
680 1138U, // SUB16mc
681 1138U, // SUB16mi
682 2162U, // SUB16mm
683 3186U, // SUB16mn
684 4210U, // SUB16mp
685 1138U, // SUB16mr
686 17522U, // SUB16rc
687 17522U, // SUB16ri
688 18546U, // SUB16rm
689 19570U, // SUB16rn
690 5234U, // SUB16rp
691 17522U, // SUB16rr
692 1037U, // SUB8mc
693 1037U, // SUB8mi
694 2061U, // SUB8mm
695 3085U, // SUB8mn
696 4109U, // SUB8mp
697 1037U, // SUB8mr
698 17421U, // SUB8rc
699 17421U, // SUB8ri
700 18445U, // SUB8rm
701 19469U, // SUB8rn
702 5133U, // SUB8rp
703 17421U, // SUB8rr
704 1143U, // SUBC16mc
705 1143U, // SUBC16mi
706 2167U, // SUBC16mm
707 3191U, // SUBC16mn
708 4215U, // SUBC16mp
709 1143U, // SUBC16mr
710 17527U, // SUBC16rc
711 17527U, // SUBC16ri
712 18551U, // SUBC16rm
713 19575U, // SUBC16rn
714 5239U, // SUBC16rp
715 17527U, // SUBC16rr
716 1044U, // SUBC8mc
717 1044U, // SUBC8mi
718 2068U, // SUBC8mm
719 3092U, // SUBC8mn
720 4116U, // SUBC8mp
721 1044U, // SUBC8mr
722 17428U, // SUBC8rc
723 17428U, // SUBC8ri
724 18452U, // SUBC8rm
725 19476U, // SUBC8rn
726 5140U, // SUBC8rp
727 17428U, // SUBC8rr
728 11372U, // SWPB16m
729 12396U, // SWPB16n
730 13420U, // SWPB16p
731 55404U, // SWPB16r
732 521U, // Select16
733 581U, // Select8
734 491U, // Shl16
735 553U, // Shl8
736 476U, // Sra16
737 539U, // Sra8
738 506U, // Srl16
739 567U, // Srl8
740 1207U, // XOR16mc
741 1207U, // XOR16mi
742 2231U, // XOR16mm
743 3255U, // XOR16mn
744 4279U, // XOR16mp
745 1207U, // XOR16mr
746 17591U, // XOR16rc
747 17591U, // XOR16ri
748 18615U, // XOR16rm
749 19639U, // XOR16rn
750 5303U, // XOR16rp
751 17591U, // XOR16rr
752 1104U, // XOR8mc
753 1104U, // XOR8mi
754 2128U, // XOR8mm
755 3152U, // XOR8mn
756 4176U, // XOR8mp
757 1104U, // XOR8mr
758 17488U, // XOR8rc
759 17488U, // XOR8ri
760 18512U, // XOR8rm
761 19536U, // XOR8rn
762 5200U, // XOR8rp
763 17488U, // XOR8rr
764 7269U, // ZEXT16r
765 };
766
767 // Emit the opcode for the instruction.
768 uint32_t Bits = 0;
769 Bits |= OpInfo0[MI.getOpcode()] << 0;
770 if (Bits == 0)
771 return {nullptr, Bits};
772 return {AsmStrs+(Bits & 1023)-1, Bits};
773
774}
775/// printInstruction - This method is automatically generated by tablegen
776/// from the instruction set description.
777LLVM_NO_PROFILE_INSTRUMENT_FUNCTION
778void MSP430InstPrinter::printInstruction(const MCInst *MI, uint64_t Address, raw_ostream &O) {
779 O << "\t";
780
781 auto MnemonicInfo = getMnemonic(MI: *MI);
782
783 O << MnemonicInfo.first;
784
785 uint32_t Bits = MnemonicInfo.second;
786 assert(Bits != 0 && "Cannot print this instruction.");
787
788 // Fragment 0 encoded into 4 bits for 16 unique commands.
789 switch ((Bits >> 10) & 15) {
790 default: llvm_unreachable("Invalid command number.");
791 case 0:
792 // DBG_VALUE, DBG_VALUE_LIST, DBG_INSTR_REF, DBG_PHI, DBG_LABEL, BUNDLE, ...
793 return;
794 break;
795 case 1:
796 // ADD16mc, ADD16mi, ADD16mr, ADD16rc, ADD16ri, ADD16rr, ADD8mc, ADD8mi, ...
797 printOperand(MI, OpNo: 2, O);
798 O << ", ";
799 break;
800 case 2:
801 // ADD16mm, ADD16rm, ADD8mm, ADD8rm, ADDC16mm, ADDC16rm, ADDC8mm, ADDC8rm...
802 printSrcMemOperand(MI, OpNo: 2, O);
803 O << ", ";
804 break;
805 case 3:
806 // ADD16mn, ADD16rn, ADD8mn, ADD8rn, ADDC16mn, ADDC16rn, ADDC8mn, ADDC8rn...
807 printIndRegOperand(MI, OpNo: 2, O);
808 O << ", ";
809 break;
810 case 4:
811 // ADD16mp, ADD8mp, ADDC16mp, ADDC8mp, AND16mp, AND8mp, BIC16mp, BIC8mp, ...
812 printPostIndRegOperand(MI, OpNo: 2, O);
813 O << ", ";
814 break;
815 case 5:
816 // ADD16rp, ADD8rp, ADDC16rp, ADDC8rp, AND16rp, AND8rp, BIC16rp, BIC8rp, ...
817 printPostIndRegOperand(MI, OpNo: 3, O);
818 O << ", ";
819 printOperand(MI, OpNo: 0, O);
820 return;
821 break;
822 case 6:
823 // ADJCALLSTACKDOWN, ADJCALLSTACKUP, Bi, Br, CALLi, CALLr, POP16r, PUSH16...
824 printOperand(MI, OpNo: 0, O);
825 break;
826 case 7:
827 // BIT16rc, BIT16ri, BIT16rr, BIT8rc, BIT8ri, BIT8rr, CMP16rc, CMP16ri, C...
828 printOperand(MI, OpNo: 1, O);
829 O << ", ";
830 printOperand(MI, OpNo: 0, O);
831 return;
832 break;
833 case 8:
834 // BIT16rm, BIT8rm, CMP16rm, CMP8rm, MOV16rm, MOV8rm, MOVZX16rm8
835 printSrcMemOperand(MI, OpNo: 1, O);
836 O << ", ";
837 printOperand(MI, OpNo: 0, O);
838 return;
839 break;
840 case 9:
841 // BIT16rn, BIT8rn, CMP16rn, CMP8rn, MOV16rn, MOV8rn
842 printIndRegOperand(MI, OpNo: 1, O);
843 O << ", ";
844 printOperand(MI, OpNo: 0, O);
845 return;
846 break;
847 case 10:
848 // BIT16rp, BIT8rp, CMP16rp, CMP8rp
849 printPostIndRegOperand(MI, OpNo: 1, O);
850 O << ", ";
851 printOperand(MI, OpNo: 0, O);
852 return;
853 break;
854 case 11:
855 // Bm, CALLm, RRA16m, RRA8m, RRC16m, RRC8m, SEXT16m, SWPB16m
856 printSrcMemOperand(MI, OpNo: 0, O);
857 return;
858 break;
859 case 12:
860 // CALLn, RRA16n, RRA8n, RRC16n, RRC8n, SEXT16n, SWPB16n
861 printIndRegOperand(MI, OpNo: 0, O);
862 return;
863 break;
864 case 13:
865 // CALLp, RRA16p, RRA8p, RRC16p, RRC8p, SEXT16p, SWPB16p
866 printPostIndRegOperand(MI, OpNo: 0, O);
867 return;
868 break;
869 case 14:
870 // JCC
871 printCCOperand(MI, OpNo: 1, O);
872 O << "\t";
873 printPCRelImmOperand(MI, OpNo: 0, O);
874 return;
875 break;
876 case 15:
877 // JMP
878 printPCRelImmOperand(MI, OpNo: 0, O);
879 return;
880 break;
881 }
882
883
884 // Fragment 1 encoded into 2 bits for 4 unique commands.
885 switch ((Bits >> 14) & 3) {
886 default: llvm_unreachable("Invalid command number.");
887 case 0:
888 // ADD16mc, ADD16mi, ADD16mm, ADD16mn, ADD16mp, ADD16mr, ADD8mc, ADD8mi, ...
889 printSrcMemOperand(MI, OpNo: 0, O);
890 return;
891 break;
892 case 1:
893 // ADD16rc, ADD16ri, ADD16rm, ADD16rn, ADD16rr, ADD8rc, ADD8ri, ADD8rm, A...
894 printOperand(MI, OpNo: 0, O);
895 return;
896 break;
897 case 2:
898 // ADJCALLSTACKDOWN, ADJCALLSTACKUP
899 O << ' ';
900 printOperand(MI, OpNo: 1, O);
901 return;
902 break;
903 case 3:
904 // Bi, Br, CALLi, CALLr, POP16r, PUSH16c, PUSH16i, PUSH16r, PUSH8r, RRA16...
905 return;
906 break;
907 }
908
909}
910
911
912/// getRegisterName - This method is automatically generated by tblgen
913/// from the register set description. This returns the assembler name
914/// for the specified register.
915const char *MSP430InstPrinter::getRegisterName(MCRegister Reg) {
916 unsigned RegNo = Reg.id();
917 assert(RegNo && RegNo < 33 && "Invalid register number!");
918
919
920#ifdef __GNUC__
921#pragma GCC diagnostic push
922#pragma GCC diagnostic ignored "-Woverlength-strings"
923#endif
924 static const char AsmStrs[] = {
925 /* 0 */ "r10\000"
926 /* 4 */ "r0\000"
927 /* 7 */ "r11\000"
928 /* 11 */ "r1\000"
929 /* 14 */ "r12\000"
930 /* 18 */ "r2\000"
931 /* 21 */ "r13\000"
932 /* 25 */ "r3\000"
933 /* 28 */ "r14\000"
934 /* 32 */ "r4\000"
935 /* 35 */ "r15\000"
936 /* 39 */ "r5\000"
937 /* 42 */ "r6\000"
938 /* 45 */ "r7\000"
939 /* 48 */ "r8\000"
940 /* 51 */ "r9\000"
941};
942#ifdef __GNUC__
943#pragma GCC diagnostic pop
944#endif
945
946 static const uint8_t RegAsmOffset[] = {
947 25, 25, 4, 4, 11, 11, 18, 18, 32, 39, 42, 45, 48, 51,
948 0, 7, 14, 21, 28, 35, 32, 39, 42, 45, 48, 51, 0, 7,
949 14, 21, 28, 35,
950 };
951
952 assert (*(AsmStrs+RegAsmOffset[RegNo-1]) &&
953 "Invalid alt name index for register!");
954 return AsmStrs+RegAsmOffset[RegNo-1];
955}
956
957#ifdef PRINT_ALIAS_INSTR
958#undef PRINT_ALIAS_INSTR
959
960bool MSP430InstPrinter::printAliasInstr(const MCInst *MI, uint64_t Address, raw_ostream &OS) {
961 static const PatternsForOpcode OpToPatterns[] = {
962 {.Opcode: MSP430::ADD16mc, .PatternStart: 0, .NumPatterns: 2 },
963 {.Opcode: MSP430::ADD16rc, .PatternStart: 2, .NumPatterns: 2 },
964 {.Opcode: MSP430::ADD8mc, .PatternStart: 4, .NumPatterns: 2 },
965 {.Opcode: MSP430::ADD8rc, .PatternStart: 6, .NumPatterns: 2 },
966 {.Opcode: MSP430::ADDC16mc, .PatternStart: 8, .NumPatterns: 1 },
967 {.Opcode: MSP430::ADDC16rc, .PatternStart: 9, .NumPatterns: 1 },
968 {.Opcode: MSP430::ADDC8mc, .PatternStart: 10, .NumPatterns: 1 },
969 {.Opcode: MSP430::ADDC8rc, .PatternStart: 11, .NumPatterns: 1 },
970 {.Opcode: MSP430::BIC16rc, .PatternStart: 12, .NumPatterns: 4 },
971 {.Opcode: MSP430::BIS16rc, .PatternStart: 16, .NumPatterns: 4 },
972 {.Opcode: MSP430::CMP16mc, .PatternStart: 20, .NumPatterns: 1 },
973 {.Opcode: MSP430::CMP16rc, .PatternStart: 21, .NumPatterns: 1 },
974 {.Opcode: MSP430::CMP8mc, .PatternStart: 22, .NumPatterns: 1 },
975 {.Opcode: MSP430::CMP8rc, .PatternStart: 23, .NumPatterns: 1 },
976 {.Opcode: MSP430::DADD16mc, .PatternStart: 24, .NumPatterns: 1 },
977 {.Opcode: MSP430::DADD16rc, .PatternStart: 25, .NumPatterns: 1 },
978 {.Opcode: MSP430::DADD8mc, .PatternStart: 26, .NumPatterns: 1 },
979 {.Opcode: MSP430::DADD8rc, .PatternStart: 27, .NumPatterns: 1 },
980 {.Opcode: MSP430::MOV16mc, .PatternStart: 28, .NumPatterns: 1 },
981 {.Opcode: MSP430::MOV16rc, .PatternStart: 29, .NumPatterns: 2 },
982 {.Opcode: MSP430::MOV8mc, .PatternStart: 31, .NumPatterns: 1 },
983 {.Opcode: MSP430::MOV8rc, .PatternStart: 32, .NumPatterns: 1 },
984 {.Opcode: MSP430::SUB16mc, .PatternStart: 33, .NumPatterns: 2 },
985 {.Opcode: MSP430::SUB16rc, .PatternStart: 35, .NumPatterns: 2 },
986 {.Opcode: MSP430::SUB8mc, .PatternStart: 37, .NumPatterns: 2 },
987 {.Opcode: MSP430::SUB8rc, .PatternStart: 39, .NumPatterns: 2 },
988 {.Opcode: MSP430::SUBC16mc, .PatternStart: 41, .NumPatterns: 1 },
989 {.Opcode: MSP430::SUBC16rc, .PatternStart: 42, .NumPatterns: 1 },
990 {.Opcode: MSP430::SUBC8mc, .PatternStart: 43, .NumPatterns: 1 },
991 {.Opcode: MSP430::SUBC8rc, .PatternStart: 44, .NumPatterns: 1 },
992 {.Opcode: MSP430::XOR16mc, .PatternStart: 45, .NumPatterns: 1 },
993 {.Opcode: MSP430::XOR16rc, .PatternStart: 46, .NumPatterns: 1 },
994 {.Opcode: MSP430::XOR8mc, .PatternStart: 47, .NumPatterns: 1 },
995 {.Opcode: MSP430::XOR8rc, .PatternStart: 48, .NumPatterns: 1 },
996 };
997
998 static const AliasPattern Patterns[] = {
999 // MSP430::ADD16mc - 0
1000 {.AsmStrOffset: 0, .AliasCondStart: 0, .NumOperands: 3, .NumConds: 3 },
1001 {.AsmStrOffset: 9, .AliasCondStart: 3, .NumOperands: 3, .NumConds: 3 },
1002 // MSP430::ADD16rc - 2
1003 {.AsmStrOffset: 19, .AliasCondStart: 6, .NumOperands: 3, .NumConds: 3 },
1004 {.AsmStrOffset: 26, .AliasCondStart: 9, .NumOperands: 3, .NumConds: 3 },
1005 // MSP430::ADD8mc - 4
1006 {.AsmStrOffset: 34, .AliasCondStart: 12, .NumOperands: 3, .NumConds: 3 },
1007 {.AsmStrOffset: 45, .AliasCondStart: 15, .NumOperands: 3, .NumConds: 3 },
1008 // MSP430::ADD8rc - 6
1009 {.AsmStrOffset: 57, .AliasCondStart: 18, .NumOperands: 3, .NumConds: 3 },
1010 {.AsmStrOffset: 66, .AliasCondStart: 21, .NumOperands: 3, .NumConds: 3 },
1011 // MSP430::ADDC16mc - 8
1012 {.AsmStrOffset: 76, .AliasCondStart: 24, .NumOperands: 3, .NumConds: 3 },
1013 // MSP430::ADDC16rc - 9
1014 {.AsmStrOffset: 85, .AliasCondStart: 27, .NumOperands: 3, .NumConds: 3 },
1015 // MSP430::ADDC8mc - 10
1016 {.AsmStrOffset: 92, .AliasCondStart: 30, .NumOperands: 3, .NumConds: 3 },
1017 // MSP430::ADDC8rc - 11
1018 {.AsmStrOffset: 103, .AliasCondStart: 33, .NumOperands: 3, .NumConds: 3 },
1019 // MSP430::BIC16rc - 12
1020 {.AsmStrOffset: 112, .AliasCondStart: 36, .NumOperands: 3, .NumConds: 3 },
1021 {.AsmStrOffset: 117, .AliasCondStart: 39, .NumOperands: 3, .NumConds: 3 },
1022 {.AsmStrOffset: 122, .AliasCondStart: 42, .NumOperands: 3, .NumConds: 3 },
1023 {.AsmStrOffset: 127, .AliasCondStart: 45, .NumOperands: 3, .NumConds: 3 },
1024 // MSP430::BIS16rc - 16
1025 {.AsmStrOffset: 132, .AliasCondStart: 48, .NumOperands: 3, .NumConds: 3 },
1026 {.AsmStrOffset: 137, .AliasCondStart: 51, .NumOperands: 3, .NumConds: 3 },
1027 {.AsmStrOffset: 142, .AliasCondStart: 54, .NumOperands: 3, .NumConds: 3 },
1028 {.AsmStrOffset: 147, .AliasCondStart: 57, .NumOperands: 3, .NumConds: 3 },
1029 // MSP430::CMP16mc - 20
1030 {.AsmStrOffset: 152, .AliasCondStart: 60, .NumOperands: 3, .NumConds: 3 },
1031 // MSP430::CMP16rc - 21
1032 {.AsmStrOffset: 161, .AliasCondStart: 63, .NumOperands: 2, .NumConds: 2 },
1033 // MSP430::CMP8mc - 22
1034 {.AsmStrOffset: 168, .AliasCondStart: 65, .NumOperands: 3, .NumConds: 3 },
1035 // MSP430::CMP8rc - 23
1036 {.AsmStrOffset: 179, .AliasCondStart: 68, .NumOperands: 2, .NumConds: 2 },
1037 // MSP430::DADD16mc - 24
1038 {.AsmStrOffset: 188, .AliasCondStart: 70, .NumOperands: 3, .NumConds: 3 },
1039 // MSP430::DADD16rc - 25
1040 {.AsmStrOffset: 198, .AliasCondStart: 73, .NumOperands: 3, .NumConds: 3 },
1041 // MSP430::DADD8mc - 26
1042 {.AsmStrOffset: 206, .AliasCondStart: 76, .NumOperands: 3, .NumConds: 3 },
1043 // MSP430::DADD8rc - 27
1044 {.AsmStrOffset: 218, .AliasCondStart: 79, .NumOperands: 3, .NumConds: 3 },
1045 // MSP430::MOV16mc - 28
1046 {.AsmStrOffset: 228, .AliasCondStart: 82, .NumOperands: 3, .NumConds: 3 },
1047 // MSP430::MOV16rc - 29
1048 {.AsmStrOffset: 237, .AliasCondStart: 85, .NumOperands: 2, .NumConds: 2 },
1049 {.AsmStrOffset: 241, .AliasCondStart: 87, .NumOperands: 2, .NumConds: 2 },
1050 // MSP430::MOV8mc - 31
1051 {.AsmStrOffset: 248, .AliasCondStart: 89, .NumOperands: 3, .NumConds: 3 },
1052 // MSP430::MOV8rc - 32
1053 {.AsmStrOffset: 259, .AliasCondStart: 92, .NumOperands: 2, .NumConds: 2 },
1054 // MSP430::SUB16mc - 33
1055 {.AsmStrOffset: 268, .AliasCondStart: 94, .NumOperands: 3, .NumConds: 3 },
1056 {.AsmStrOffset: 277, .AliasCondStart: 97, .NumOperands: 3, .NumConds: 3 },
1057 // MSP430::SUB16rc - 35
1058 {.AsmStrOffset: 287, .AliasCondStart: 100, .NumOperands: 3, .NumConds: 3 },
1059 {.AsmStrOffset: 294, .AliasCondStart: 103, .NumOperands: 3, .NumConds: 3 },
1060 // MSP430::SUB8mc - 37
1061 {.AsmStrOffset: 302, .AliasCondStart: 106, .NumOperands: 3, .NumConds: 3 },
1062 {.AsmStrOffset: 313, .AliasCondStart: 109, .NumOperands: 3, .NumConds: 3 },
1063 // MSP430::SUB8rc - 39
1064 {.AsmStrOffset: 325, .AliasCondStart: 112, .NumOperands: 3, .NumConds: 3 },
1065 {.AsmStrOffset: 334, .AliasCondStart: 115, .NumOperands: 3, .NumConds: 3 },
1066 // MSP430::SUBC16mc - 41
1067 {.AsmStrOffset: 344, .AliasCondStart: 118, .NumOperands: 3, .NumConds: 3 },
1068 // MSP430::SUBC16rc - 42
1069 {.AsmStrOffset: 353, .AliasCondStart: 121, .NumOperands: 3, .NumConds: 3 },
1070 // MSP430::SUBC8mc - 43
1071 {.AsmStrOffset: 360, .AliasCondStart: 124, .NumOperands: 3, .NumConds: 3 },
1072 // MSP430::SUBC8rc - 44
1073 {.AsmStrOffset: 371, .AliasCondStart: 127, .NumOperands: 3, .NumConds: 3 },
1074 // MSP430::XOR16mc - 45
1075 {.AsmStrOffset: 380, .AliasCondStart: 130, .NumOperands: 3, .NumConds: 3 },
1076 // MSP430::XOR16rc - 46
1077 {.AsmStrOffset: 389, .AliasCondStart: 133, .NumOperands: 3, .NumConds: 3 },
1078 // MSP430::XOR8mc - 47
1079 {.AsmStrOffset: 396, .AliasCondStart: 136, .NumOperands: 3, .NumConds: 3 },
1080 // MSP430::XOR8rc - 48
1081 {.AsmStrOffset: 407, .AliasCondStart: 139, .NumOperands: 3, .NumConds: 3 },
1082 };
1083
1084 static const AliasPatternCond Conds[] = {
1085 // (ADD16mc memdst:$dst, 1) - 0
1086 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1087 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1088 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(1)},
1089 // (ADD16mc memdst:$dst, 2) - 3
1090 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1091 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1092 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(2)},
1093 // (ADD16rc GR16:$dst, 1) - 6
1094 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR16RegClassID},
1095 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1096 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(1)},
1097 // (ADD16rc GR16:$dst, 2) - 9
1098 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR16RegClassID},
1099 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1100 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(2)},
1101 // (ADD8mc memdst:$dst, 1) - 12
1102 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1103 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1104 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(1)},
1105 // (ADD8mc memdst:$dst, 2) - 15
1106 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1107 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1108 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(2)},
1109 // (ADD8rc GR8:$dst, 1) - 18
1110 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR8RegClassID},
1111 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1112 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(1)},
1113 // (ADD8rc GR8:$dst, 2) - 21
1114 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR8RegClassID},
1115 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1116 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(2)},
1117 // (ADDC16mc memdst:$dst, 0) - 24
1118 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1119 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1120 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1121 // (ADDC16rc GR16:$dst, 0) - 27
1122 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR16RegClassID},
1123 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1124 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1125 // (ADDC8mc memdst:$dst, 0) - 30
1126 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1127 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1128 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1129 // (ADDC8rc GR8:$dst, 0) - 33
1130 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR8RegClassID},
1131 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1132 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1133 // (BIC16rc SR, 8) - 36
1134 {.Kind: AliasPatternCond::K_Reg, .Value: MSP430::SR},
1135 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1136 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(8)},
1137 // (BIC16rc SR, 1) - 39
1138 {.Kind: AliasPatternCond::K_Reg, .Value: MSP430::SR},
1139 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1140 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(1)},
1141 // (BIC16rc SR, 4) - 42
1142 {.Kind: AliasPatternCond::K_Reg, .Value: MSP430::SR},
1143 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1144 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(4)},
1145 // (BIC16rc SR, 2) - 45
1146 {.Kind: AliasPatternCond::K_Reg, .Value: MSP430::SR},
1147 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1148 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(2)},
1149 // (BIS16rc SR, 8) - 48
1150 {.Kind: AliasPatternCond::K_Reg, .Value: MSP430::SR},
1151 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1152 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(8)},
1153 // (BIS16rc SR, 1) - 51
1154 {.Kind: AliasPatternCond::K_Reg, .Value: MSP430::SR},
1155 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1156 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(1)},
1157 // (BIS16rc SR, 4) - 54
1158 {.Kind: AliasPatternCond::K_Reg, .Value: MSP430::SR},
1159 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1160 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(4)},
1161 // (BIS16rc SR, 2) - 57
1162 {.Kind: AliasPatternCond::K_Reg, .Value: MSP430::SR},
1163 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1164 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(2)},
1165 // (CMP16mc memdst:$dst, 0) - 60
1166 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1167 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1168 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1169 // (CMP16rc GR16:$dst, 0) - 63
1170 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR16RegClassID},
1171 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1172 // (CMP8mc memdst:$dst, 0) - 65
1173 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1174 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1175 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1176 // (CMP8rc GR8:$dst, 0) - 68
1177 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR8RegClassID},
1178 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1179 // (DADD16mc memdst:$dst, 0) - 70
1180 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1181 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1182 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1183 // (DADD16rc GR16:$dst, 0) - 73
1184 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR16RegClassID},
1185 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1186 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1187 // (DADD8mc memdst:$dst, 0) - 76
1188 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1189 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1190 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1191 // (DADD8rc GR8:$dst, 0) - 79
1192 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR8RegClassID},
1193 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1194 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1195 // (MOV16mc memdst:$dst, 0) - 82
1196 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1197 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1198 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1199 // (MOV16rc CG, 0) - 85
1200 {.Kind: AliasPatternCond::K_Reg, .Value: MSP430::CG},
1201 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1202 // (MOV16rc GR16:$dst, 0) - 87
1203 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR16RegClassID},
1204 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1205 // (MOV8mc memdst:$dst, 0) - 89
1206 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1207 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1208 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1209 // (MOV8rc GR8:$dst, 0) - 92
1210 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR8RegClassID},
1211 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1212 // (SUB16mc memdst:$dst, 1) - 94
1213 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1214 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1215 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(1)},
1216 // (SUB16mc memdst:$dst, 2) - 97
1217 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1218 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1219 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(2)},
1220 // (SUB16rc GR16:$dst, 1) - 100
1221 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR16RegClassID},
1222 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1223 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(1)},
1224 // (SUB16rc GR16:$dst, 2) - 103
1225 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR16RegClassID},
1226 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1227 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(2)},
1228 // (SUB8mc memdst:$dst, 1) - 106
1229 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1230 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1231 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(1)},
1232 // (SUB8mc memdst:$dst, 2) - 109
1233 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1234 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1235 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(2)},
1236 // (SUB8rc GR8:$dst, 1) - 112
1237 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR8RegClassID},
1238 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1239 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(1)},
1240 // (SUB8rc GR8:$dst, 2) - 115
1241 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR8RegClassID},
1242 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1243 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(2)},
1244 // (SUBC16mc memdst:$dst, 0) - 118
1245 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1246 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1247 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1248 // (SUBC16rc GR16:$dst, 0) - 121
1249 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR16RegClassID},
1250 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1251 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1252 // (SUBC8mc memdst:$dst, 0) - 124
1253 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1254 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1255 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1256 // (SUBC8rc GR8:$dst, 0) - 127
1257 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR8RegClassID},
1258 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1259 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1260 // (XOR16mc memdst:$dst, -1) - 130
1261 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1262 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1263 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(-1)},
1264 // (XOR16rc GR16:$dst, -1) - 133
1265 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR16RegClassID},
1266 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1267 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(-1)},
1268 // (XOR8mc memdst:$dst, -1) - 136
1269 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1270 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1271 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(-1)},
1272 // (XOR8rc GR8:$dst, -1) - 139
1273 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR8RegClassID},
1274 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1275 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(-1)},
1276 };
1277
1278 static const char AsmStrings[] =
1279 /* 0 */ "inc $\xFF\x01\x01\0"
1280 /* 9 */ "incd $\xFF\x01\x01\0"
1281 /* 19 */ "inc $\x01\0"
1282 /* 26 */ "incd $\x01\0"
1283 /* 34 */ "inc.b $\xFF\x01\x01\0"
1284 /* 45 */ "incd.b $\xFF\x01\x01\0"
1285 /* 57 */ "inc.b $\x01\0"
1286 /* 66 */ "incd.b $\x01\0"
1287 /* 76 */ "adc $\xFF\x01\x01\0"
1288 /* 85 */ "adc $\x01\0"
1289 /* 92 */ "adc.b $\xFF\x01\x01\0"
1290 /* 103 */ "adc.b $\x01\0"
1291 /* 112 */ "dint\0"
1292 /* 117 */ "clrc\0"
1293 /* 122 */ "clrn\0"
1294 /* 127 */ "clrz\0"
1295 /* 132 */ "eint\0"
1296 /* 137 */ "setc\0"
1297 /* 142 */ "setn\0"
1298 /* 147 */ "setz\0"
1299 /* 152 */ "tst $\xFF\x01\x01\0"
1300 /* 161 */ "tst $\x01\0"
1301 /* 168 */ "tst.b $\xFF\x01\x01\0"
1302 /* 179 */ "tst.b $\x01\0"
1303 /* 188 */ "dadc $\xFF\x01\x01\0"
1304 /* 198 */ "dadc $\x01\0"
1305 /* 206 */ "dadc.b $\xFF\x01\x01\0"
1306 /* 218 */ "dadc.b $\x01\0"
1307 /* 228 */ "clr $\xFF\x01\x01\0"
1308 /* 237 */ "nop\0"
1309 /* 241 */ "clr $\x01\0"
1310 /* 248 */ "clr.b $\xFF\x01\x01\0"
1311 /* 259 */ "clr.b $\x01\0"
1312 /* 268 */ "dec $\xFF\x01\x01\0"
1313 /* 277 */ "decd $\xFF\x01\x01\0"
1314 /* 287 */ "dec $\x01\0"
1315 /* 294 */ "decd $\x01\0"
1316 /* 302 */ "dec.b $\xFF\x01\x01\0"
1317 /* 313 */ "decd.b $\xFF\x01\x01\0"
1318 /* 325 */ "dec.b $\x01\0"
1319 /* 334 */ "decd.b $\x01\0"
1320 /* 344 */ "sbc $\xFF\x01\x01\0"
1321 /* 353 */ "sbc $\x01\0"
1322 /* 360 */ "sbc.b $\xFF\x01\x01\0"
1323 /* 371 */ "sbc.b $\x01\0"
1324 /* 380 */ "inv $\xFF\x01\x01\0"
1325 /* 389 */ "inv $\x01\0"
1326 /* 396 */ "inv.b $\xFF\x01\x01\0"
1327 /* 407 */ "inv.b $\x01\0"
1328 ;
1329
1330#ifndef NDEBUG
1331 static struct SortCheck {
1332 SortCheck(ArrayRef<PatternsForOpcode> OpToPatterns) {
1333 assert(std::is_sorted(
1334 OpToPatterns.begin(), OpToPatterns.end(),
1335 [](const PatternsForOpcode &L, const PatternsForOpcode &R) {
1336 return L.Opcode < R.Opcode;
1337 }) &&
1338 "tablegen failed to sort opcode patterns");
1339 }
1340 } sortCheckVar(OpToPatterns);
1341#endif
1342
1343 AliasMatchingData M {
1344 .OpToPatterns: ArrayRef(OpToPatterns),
1345 .Patterns: ArrayRef(Patterns),
1346 .PatternConds: ArrayRef(Conds),
1347 .AsmStrings: StringRef(AsmStrings, std::size(AsmStrings)),
1348 .ValidateMCOperand: nullptr,
1349 };
1350 const char *AsmString = matchAliasPatterns(MI, STI: nullptr, M);
1351 if (!AsmString) return false;
1352
1353 unsigned I = 0;
1354 while (AsmString[I] != ' ' && AsmString[I] != '\t' &&
1355 AsmString[I] != '$' && AsmString[I] != '\0')
1356 ++I;
1357 OS << '\t' << StringRef(AsmString, I);
1358 if (AsmString[I] != '\0') {
1359 if (AsmString[I] == ' ' || AsmString[I] == '\t') {
1360 OS << '\t';
1361 ++I;
1362 }
1363 do {
1364 if (AsmString[I] == '$') {
1365 ++I;
1366 if (AsmString[I] == (char)0xff) {
1367 ++I;
1368 int OpIdx = AsmString[I++] - 1;
1369 int PrintMethodIdx = AsmString[I++] - 1;
1370 printCustomAliasOperand(MI, Address, OpIdx, PrintMethodIdx, O&: OS);
1371 } else
1372 printOperand(MI, OpNo: unsigned(AsmString[I++]) - 1, O&: OS);
1373 } else {
1374 OS << AsmString[I++];
1375 }
1376 } while (AsmString[I] != '\0');
1377 }
1378
1379 return true;
1380}
1381
1382void MSP430InstPrinter::printCustomAliasOperand(
1383 const MCInst *MI, uint64_t Address, unsigned OpIdx,
1384 unsigned PrintMethodIdx,
1385 raw_ostream &OS) {
1386 switch (PrintMethodIdx) {
1387 default:
1388 llvm_unreachable("Unknown PrintMethod kind");
1389 break;
1390 case 0:
1391 printSrcMemOperand(MI, OpNo: OpIdx, O&: OS);
1392 break;
1393 }
1394}
1395
1396#endif // PRINT_ALIAS_INSTR
1397