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_FMAXIMUMNUM
412 0U, // G_VECREDUCE_FMINIMUMNUM
413 0U, // G_VECREDUCE_ADD
414 0U, // G_VECREDUCE_MUL
415 0U, // G_VECREDUCE_AND
416 0U, // G_VECREDUCE_OR
417 0U, // G_VECREDUCE_XOR
418 0U, // G_VECREDUCE_SMAX
419 0U, // G_VECREDUCE_SMIN
420 0U, // G_VECREDUCE_UMAX
421 0U, // G_VECREDUCE_UMIN
422 0U, // G_SBFX
423 0U, // G_UBFX
424 1166U, // ADD16mc
425 1166U, // ADD16mi
426 2190U, // ADD16mm
427 3214U, // ADD16mn
428 4238U, // ADD16mp
429 1166U, // ADD16mr
430 17550U, // ADD16rc
431 17550U, // ADD16ri
432 18574U, // ADD16rm
433 19598U, // ADD16rn
434 5262U, // ADD16rp
435 17550U, // ADD16rr
436 1075U, // ADD8mc
437 1075U, // ADD8mi
438 2099U, // ADD8mm
439 3123U, // ADD8mn
440 4147U, // ADD8mp
441 1075U, // ADD8mr
442 17459U, // ADD8rc
443 17459U, // ADD8ri
444 18483U, // ADD8rm
445 19507U, // ADD8rn
446 5171U, // ADD8rp
447 17459U, // ADD8rr
448 1149U, // ADDC16mc
449 1149U, // ADDC16mi
450 2173U, // ADDC16mm
451 3197U, // ADDC16mn
452 4221U, // ADDC16mp
453 1149U, // ADDC16mr
454 17533U, // ADDC16rc
455 17533U, // ADDC16ri
456 18557U, // ADDC16rm
457 19581U, // ADDC16rn
458 5245U, // ADDC16rp
459 17533U, // ADDC16rr
460 1052U, // ADDC8mc
461 1052U, // ADDC8mi
462 2076U, // ADDC8mm
463 3100U, // ADDC8mn
464 4124U, // ADDC8mp
465 1052U, // ADDC8mr
466 17436U, // ADDC8rc
467 17436U, // ADDC8ri
468 18460U, // ADDC8rm
469 19484U, // ADDC8rn
470 5148U, // ADDC8rp
471 17436U, // ADDC8rr
472 598U, // ADDframe
473 39120U, // ADJCALLSTACKDOWN
474 39139U, // ADJCALLSTACKUP
475 1171U, // AND16mc
476 1171U, // AND16mi
477 2195U, // AND16mm
478 3219U, // AND16mn
479 4243U, // AND16mp
480 1171U, // AND16mr
481 17555U, // AND16rc
482 17555U, // AND16ri
483 18579U, // AND16rm
484 19603U, // AND16rn
485 5267U, // AND16rp
486 17555U, // AND16rr
487 1082U, // AND8mc
488 1082U, // AND8mi
489 2106U, // AND8mm
490 3130U, // AND8mn
491 4154U, // AND8mp
492 1082U, // AND8mr
493 17466U, // AND8rc
494 17466U, // AND8ri
495 18490U, // AND8rm
496 19514U, // AND8rn
497 5178U, // AND8rp
498 17466U, // AND8rr
499 1155U, // BIC16mc
500 1155U, // BIC16mi
501 2179U, // BIC16mm
502 3203U, // BIC16mn
503 4227U, // BIC16mp
504 1155U, // BIC16mr
505 17539U, // BIC16rc
506 17539U, // BIC16ri
507 18563U, // BIC16rm
508 19587U, // BIC16rn
509 5251U, // BIC16rp
510 17539U, // BIC16rr
511 1060U, // BIC8mc
512 1060U, // BIC8mi
513 2084U, // BIC8mm
514 3108U, // BIC8mn
515 4132U, // BIC8mp
516 1060U, // BIC8mr
517 17444U, // BIC8rc
518 17444U, // BIC8ri
519 18468U, // BIC8rm
520 19492U, // BIC8rn
521 5156U, // BIC8rp
522 17444U, // BIC8rr
523 1212U, // BIS16mc
524 1212U, // BIS16mi
525 2236U, // BIS16mm
526 3260U, // BIS16mn
527 4284U, // BIS16mp
528 1212U, // BIS16mr
529 17596U, // BIS16rc
530 17596U, // BIS16ri
531 18620U, // BIS16rm
532 19644U, // BIS16rn
533 5308U, // BIS16rp
534 17596U, // BIS16rr
535 1111U, // BIS8mc
536 1111U, // BIS8mi
537 2135U, // BIS8mm
538 3159U, // BIS8mn
539 4183U, // BIS8mp
540 1111U, // BIS8mr
541 17495U, // BIS8rc
542 17495U, // BIS8ri
543 18519U, // BIS8rm
544 19543U, // BIS8rn
545 5207U, // BIS8rp
546 17495U, // BIS8rr
547 1217U, // BIT16mc
548 1217U, // BIT16mi
549 2241U, // BIT16mm
550 3265U, // BIT16mn
551 4289U, // BIT16mp
552 1217U, // BIT16mr
553 7361U, // BIT16rc
554 7361U, // BIT16ri
555 8385U, // BIT16rm
556 9409U, // BIT16rn
557 10433U, // BIT16rp
558 7361U, // BIT16rr
559 1118U, // BIT8mc
560 1118U, // BIT8mi
561 2142U, // BIT8mm
562 3166U, // BIT8mn
563 4190U, // BIT8mp
564 1118U, // BIT8mr
565 7262U, // BIT8rc
566 7262U, // BIT8ri
567 8286U, // BIT8rm
568 9310U, // BIT8rn
569 10334U, // BIT8rp
570 7262U, // BIT8rr
571 55475U, // Bi
572 11443U, // Bm
573 55475U, // Br
574 55454U, // CALLi
575 11422U, // CALLm
576 12446U, // CALLn
577 13470U, // CALLp
578 55454U, // CALLr
579 1188U, // CMP16mc
580 1188U, // CMP16mi
581 2212U, // CMP16mm
582 3236U, // CMP16mn
583 4260U, // CMP16mp
584 1188U, // CMP16mr
585 7332U, // CMP16rc
586 7332U, // CMP16ri
587 8356U, // CMP16rm
588 9380U, // CMP16rn
589 10404U, // CMP16rp
590 7332U, // CMP16rr
591 1097U, // CMP8mc
592 1097U, // CMP8mi
593 2121U, // CMP8mm
594 3145U, // CMP8mn
595 4169U, // CMP8mp
596 1097U, // CMP8mr
597 7241U, // CMP8rc
598 7241U, // CMP8ri
599 8265U, // CMP8rm
600 9289U, // CMP8rn
601 10313U, // CMP8rp
602 7241U, // CMP8rr
603 1165U, // DADD16mc
604 1165U, // DADD16mi
605 2189U, // DADD16mm
606 3213U, // DADD16mn
607 4237U, // DADD16mp
608 1165U, // DADD16mr
609 17549U, // DADD16rc
610 17549U, // DADD16ri
611 18573U, // DADD16rm
612 19597U, // DADD16rn
613 5261U, // DADD16rp
614 17549U, // DADD16rr
615 1074U, // DADD8mc
616 1074U, // DADD8mi
617 2098U, // DADD8mm
618 3122U, // DADD8mn
619 4146U, // DADD8mp
620 1074U, // DADD8mr
621 17458U, // DADD8rc
622 17458U, // DADD8ri
623 18482U, // DADD8rm
624 19506U, // DADD8rn
625 5170U, // DADD8rp
626 17458U, // DADD8rr
627 14987U, // JCC
628 15529U, // JMP
629 1227U, // MOV16mc
630 1227U, // MOV16mi
631 2251U, // MOV16mm
632 3275U, // MOV16mn
633 1227U, // MOV16mr
634 7371U, // MOV16rc
635 7371U, // MOV16ri
636 8395U, // MOV16rm
637 9419U, // MOV16rn
638 20683U, // MOV16rp
639 7371U, // MOV16rr
640 1125U, // MOV8mc
641 1125U, // MOV8mi
642 2149U, // MOV8mm
643 3173U, // MOV8mn
644 1125U, // MOV8mr
645 7269U, // MOV8rc
646 7269U, // MOV8ri
647 8293U, // MOV8rm
648 9317U, // MOV8rn
649 20581U, // MOV8rp
650 7269U, // MOV8rr
651 8293U, // MOVZX16rm8
652 7269U, // MOVZX16rr8
653 55470U, // POP16r
654 55448U, // PUSH16c
655 55448U, // PUSH16i
656 55448U, // PUSH16r
657 55361U, // PUSH8r
658 667U, // RET
659 646U, // RETI
660 11265U, // RRA16m
661 12289U, // RRA16n
662 13313U, // RRA16p
663 55297U, // RRA16r
664 11270U, // RRA8m
665 12294U, // RRA8n
666 13318U, // RRA8p
667 55302U, // RRA8r
668 11400U, // RRC16m
669 12424U, // RRC16n
670 13448U, // RRC16p
671 55432U, // RRC16r
672 11307U, // RRC8m
673 12331U, // RRC8n
674 13355U, // RRC8p
675 55339U, // RRC8r
676 0U, // Rrcl16
677 0U, // Rrcl8
678 11462U, // SEXT16m
679 12486U, // SEXT16n
680 13510U, // SEXT16p
681 55494U, // SEXT16r
682 1138U, // SUB16mc
683 1138U, // SUB16mi
684 2162U, // SUB16mm
685 3186U, // SUB16mn
686 4210U, // SUB16mp
687 1138U, // SUB16mr
688 17522U, // SUB16rc
689 17522U, // SUB16ri
690 18546U, // SUB16rm
691 19570U, // SUB16rn
692 5234U, // SUB16rp
693 17522U, // SUB16rr
694 1037U, // SUB8mc
695 1037U, // SUB8mi
696 2061U, // SUB8mm
697 3085U, // SUB8mn
698 4109U, // SUB8mp
699 1037U, // SUB8mr
700 17421U, // SUB8rc
701 17421U, // SUB8ri
702 18445U, // SUB8rm
703 19469U, // SUB8rn
704 5133U, // SUB8rp
705 17421U, // SUB8rr
706 1143U, // SUBC16mc
707 1143U, // SUBC16mi
708 2167U, // SUBC16mm
709 3191U, // SUBC16mn
710 4215U, // SUBC16mp
711 1143U, // SUBC16mr
712 17527U, // SUBC16rc
713 17527U, // SUBC16ri
714 18551U, // SUBC16rm
715 19575U, // SUBC16rn
716 5239U, // SUBC16rp
717 17527U, // SUBC16rr
718 1044U, // SUBC8mc
719 1044U, // SUBC8mi
720 2068U, // SUBC8mm
721 3092U, // SUBC8mn
722 4116U, // SUBC8mp
723 1044U, // SUBC8mr
724 17428U, // SUBC8rc
725 17428U, // SUBC8ri
726 18452U, // SUBC8rm
727 19476U, // SUBC8rn
728 5140U, // SUBC8rp
729 17428U, // SUBC8rr
730 11372U, // SWPB16m
731 12396U, // SWPB16n
732 13420U, // SWPB16p
733 55404U, // SWPB16r
734 521U, // Select16
735 581U, // Select8
736 491U, // Shl16
737 553U, // Shl8
738 476U, // Sra16
739 539U, // Sra8
740 506U, // Srl16
741 567U, // Srl8
742 1207U, // XOR16mc
743 1207U, // XOR16mi
744 2231U, // XOR16mm
745 3255U, // XOR16mn
746 4279U, // XOR16mp
747 1207U, // XOR16mr
748 17591U, // XOR16rc
749 17591U, // XOR16ri
750 18615U, // XOR16rm
751 19639U, // XOR16rn
752 5303U, // XOR16rp
753 17591U, // XOR16rr
754 1104U, // XOR8mc
755 1104U, // XOR8mi
756 2128U, // XOR8mm
757 3152U, // XOR8mn
758 4176U, // XOR8mp
759 1104U, // XOR8mr
760 17488U, // XOR8rc
761 17488U, // XOR8ri
762 18512U, // XOR8rm
763 19536U, // XOR8rn
764 5200U, // XOR8rp
765 17488U, // XOR8rr
766 7269U, // ZEXT16r
767 };
768
769 // Emit the opcode for the instruction.
770 uint32_t Bits = 0;
771 Bits |= OpInfo0[MI.getOpcode()] << 0;
772 if (Bits == 0)
773 return {nullptr, Bits};
774 return {AsmStrs+(Bits & 1023)-1, Bits};
775
776}
777/// printInstruction - This method is automatically generated by tablegen
778/// from the instruction set description.
779LLVM_NO_PROFILE_INSTRUMENT_FUNCTION
780void MSP430InstPrinter::printInstruction(const MCInst *MI, uint64_t Address, raw_ostream &O) {
781 O << "\t";
782
783 auto MnemonicInfo = getMnemonic(MI: *MI);
784
785 O << MnemonicInfo.first;
786
787 uint32_t Bits = MnemonicInfo.second;
788 assert(Bits != 0 && "Cannot print this instruction.");
789
790 // Fragment 0 encoded into 4 bits for 16 unique commands.
791 switch ((Bits >> 10) & 15) {
792 default: llvm_unreachable("Invalid command number.");
793 case 0:
794 // DBG_VALUE, DBG_VALUE_LIST, DBG_INSTR_REF, DBG_PHI, DBG_LABEL, BUNDLE, ...
795 return;
796 break;
797 case 1:
798 // ADD16mc, ADD16mi, ADD16mr, ADD16rc, ADD16ri, ADD16rr, ADD8mc, ADD8mi, ...
799 printOperand(MI, OpNo: 2, O);
800 O << ", ";
801 break;
802 case 2:
803 // ADD16mm, ADD16rm, ADD8mm, ADD8rm, ADDC16mm, ADDC16rm, ADDC8mm, ADDC8rm...
804 printSrcMemOperand(MI, OpNo: 2, O);
805 O << ", ";
806 break;
807 case 3:
808 // ADD16mn, ADD16rn, ADD8mn, ADD8rn, ADDC16mn, ADDC16rn, ADDC8mn, ADDC8rn...
809 printIndRegOperand(MI, OpNo: 2, O);
810 O << ", ";
811 break;
812 case 4:
813 // ADD16mp, ADD8mp, ADDC16mp, ADDC8mp, AND16mp, AND8mp, BIC16mp, BIC8mp, ...
814 printPostIndRegOperand(MI, OpNo: 2, O);
815 O << ", ";
816 break;
817 case 5:
818 // ADD16rp, ADD8rp, ADDC16rp, ADDC8rp, AND16rp, AND8rp, BIC16rp, BIC8rp, ...
819 printPostIndRegOperand(MI, OpNo: 3, O);
820 O << ", ";
821 printOperand(MI, OpNo: 0, O);
822 return;
823 break;
824 case 6:
825 // ADJCALLSTACKDOWN, ADJCALLSTACKUP, Bi, Br, CALLi, CALLr, POP16r, PUSH16...
826 printOperand(MI, OpNo: 0, O);
827 break;
828 case 7:
829 // BIT16rc, BIT16ri, BIT16rr, BIT8rc, BIT8ri, BIT8rr, CMP16rc, CMP16ri, C...
830 printOperand(MI, OpNo: 1, O);
831 O << ", ";
832 printOperand(MI, OpNo: 0, O);
833 return;
834 break;
835 case 8:
836 // BIT16rm, BIT8rm, CMP16rm, CMP8rm, MOV16rm, MOV8rm, MOVZX16rm8
837 printSrcMemOperand(MI, OpNo: 1, O);
838 O << ", ";
839 printOperand(MI, OpNo: 0, O);
840 return;
841 break;
842 case 9:
843 // BIT16rn, BIT8rn, CMP16rn, CMP8rn, MOV16rn, MOV8rn
844 printIndRegOperand(MI, OpNo: 1, O);
845 O << ", ";
846 printOperand(MI, OpNo: 0, O);
847 return;
848 break;
849 case 10:
850 // BIT16rp, BIT8rp, CMP16rp, CMP8rp
851 printPostIndRegOperand(MI, OpNo: 1, O);
852 O << ", ";
853 printOperand(MI, OpNo: 0, O);
854 return;
855 break;
856 case 11:
857 // Bm, CALLm, RRA16m, RRA8m, RRC16m, RRC8m, SEXT16m, SWPB16m
858 printSrcMemOperand(MI, OpNo: 0, O);
859 return;
860 break;
861 case 12:
862 // CALLn, RRA16n, RRA8n, RRC16n, RRC8n, SEXT16n, SWPB16n
863 printIndRegOperand(MI, OpNo: 0, O);
864 return;
865 break;
866 case 13:
867 // CALLp, RRA16p, RRA8p, RRC16p, RRC8p, SEXT16p, SWPB16p
868 printPostIndRegOperand(MI, OpNo: 0, O);
869 return;
870 break;
871 case 14:
872 // JCC
873 printCCOperand(MI, OpNo: 1, O);
874 O << "\t";
875 printPCRelImmOperand(MI, OpNo: 0, O);
876 return;
877 break;
878 case 15:
879 // JMP
880 printPCRelImmOperand(MI, OpNo: 0, O);
881 return;
882 break;
883 }
884
885
886 // Fragment 1 encoded into 2 bits for 4 unique commands.
887 switch ((Bits >> 14) & 3) {
888 default: llvm_unreachable("Invalid command number.");
889 case 0:
890 // ADD16mc, ADD16mi, ADD16mm, ADD16mn, ADD16mp, ADD16mr, ADD8mc, ADD8mi, ...
891 printSrcMemOperand(MI, OpNo: 0, O);
892 return;
893 break;
894 case 1:
895 // ADD16rc, ADD16ri, ADD16rm, ADD16rn, ADD16rr, ADD8rc, ADD8ri, ADD8rm, A...
896 printOperand(MI, OpNo: 0, O);
897 return;
898 break;
899 case 2:
900 // ADJCALLSTACKDOWN, ADJCALLSTACKUP
901 O << ' ';
902 printOperand(MI, OpNo: 1, O);
903 return;
904 break;
905 case 3:
906 // Bi, Br, CALLi, CALLr, POP16r, PUSH16c, PUSH16i, PUSH16r, PUSH8r, RRA16...
907 return;
908 break;
909 }
910
911}
912
913
914/// getRegisterName - This method is automatically generated by tblgen
915/// from the register set description. This returns the assembler name
916/// for the specified register.
917const char *MSP430InstPrinter::getRegisterName(MCRegister Reg) {
918 unsigned RegNo = Reg.id();
919 assert(RegNo && RegNo < 33 && "Invalid register number!");
920
921
922#ifdef __GNUC__
923#pragma GCC diagnostic push
924#pragma GCC diagnostic ignored "-Woverlength-strings"
925#endif
926 static const char AsmStrs[] = {
927 /* 0 */ "r10\000"
928 /* 4 */ "r0\000"
929 /* 7 */ "r11\000"
930 /* 11 */ "r1\000"
931 /* 14 */ "r12\000"
932 /* 18 */ "r2\000"
933 /* 21 */ "r13\000"
934 /* 25 */ "r3\000"
935 /* 28 */ "r14\000"
936 /* 32 */ "r4\000"
937 /* 35 */ "r15\000"
938 /* 39 */ "r5\000"
939 /* 42 */ "r6\000"
940 /* 45 */ "r7\000"
941 /* 48 */ "r8\000"
942 /* 51 */ "r9\000"
943};
944#ifdef __GNUC__
945#pragma GCC diagnostic pop
946#endif
947
948 static const uint8_t RegAsmOffset[] = {
949 25, 25, 4, 4, 11, 11, 18, 18, 32, 39, 42, 45, 48, 51,
950 0, 7, 14, 21, 28, 35, 32, 39, 42, 45, 48, 51, 0, 7,
951 14, 21, 28, 35,
952 };
953
954 assert (*(AsmStrs+RegAsmOffset[RegNo-1]) &&
955 "Invalid alt name index for register!");
956 return AsmStrs+RegAsmOffset[RegNo-1];
957}
958
959#ifdef PRINT_ALIAS_INSTR
960#undef PRINT_ALIAS_INSTR
961
962bool MSP430InstPrinter::printAliasInstr(const MCInst *MI, uint64_t Address, raw_ostream &OS) {
963 static const PatternsForOpcode OpToPatterns[] = {
964 {.Opcode: MSP430::ADD16mc, .PatternStart: 0, .NumPatterns: 2 },
965 {.Opcode: MSP430::ADD16rc, .PatternStart: 2, .NumPatterns: 2 },
966 {.Opcode: MSP430::ADD8mc, .PatternStart: 4, .NumPatterns: 2 },
967 {.Opcode: MSP430::ADD8rc, .PatternStart: 6, .NumPatterns: 2 },
968 {.Opcode: MSP430::ADDC16mc, .PatternStart: 8, .NumPatterns: 1 },
969 {.Opcode: MSP430::ADDC16rc, .PatternStart: 9, .NumPatterns: 1 },
970 {.Opcode: MSP430::ADDC8mc, .PatternStart: 10, .NumPatterns: 1 },
971 {.Opcode: MSP430::ADDC8rc, .PatternStart: 11, .NumPatterns: 1 },
972 {.Opcode: MSP430::BIC16rc, .PatternStart: 12, .NumPatterns: 4 },
973 {.Opcode: MSP430::BIS16rc, .PatternStart: 16, .NumPatterns: 4 },
974 {.Opcode: MSP430::CMP16mc, .PatternStart: 20, .NumPatterns: 1 },
975 {.Opcode: MSP430::CMP16rc, .PatternStart: 21, .NumPatterns: 1 },
976 {.Opcode: MSP430::CMP8mc, .PatternStart: 22, .NumPatterns: 1 },
977 {.Opcode: MSP430::CMP8rc, .PatternStart: 23, .NumPatterns: 1 },
978 {.Opcode: MSP430::DADD16mc, .PatternStart: 24, .NumPatterns: 1 },
979 {.Opcode: MSP430::DADD16rc, .PatternStart: 25, .NumPatterns: 1 },
980 {.Opcode: MSP430::DADD8mc, .PatternStart: 26, .NumPatterns: 1 },
981 {.Opcode: MSP430::DADD8rc, .PatternStart: 27, .NumPatterns: 1 },
982 {.Opcode: MSP430::MOV16mc, .PatternStart: 28, .NumPatterns: 1 },
983 {.Opcode: MSP430::MOV16rc, .PatternStart: 29, .NumPatterns: 2 },
984 {.Opcode: MSP430::MOV8mc, .PatternStart: 31, .NumPatterns: 1 },
985 {.Opcode: MSP430::MOV8rc, .PatternStart: 32, .NumPatterns: 1 },
986 {.Opcode: MSP430::SUB16mc, .PatternStart: 33, .NumPatterns: 2 },
987 {.Opcode: MSP430::SUB16rc, .PatternStart: 35, .NumPatterns: 2 },
988 {.Opcode: MSP430::SUB8mc, .PatternStart: 37, .NumPatterns: 2 },
989 {.Opcode: MSP430::SUB8rc, .PatternStart: 39, .NumPatterns: 2 },
990 {.Opcode: MSP430::SUBC16mc, .PatternStart: 41, .NumPatterns: 1 },
991 {.Opcode: MSP430::SUBC16rc, .PatternStart: 42, .NumPatterns: 1 },
992 {.Opcode: MSP430::SUBC8mc, .PatternStart: 43, .NumPatterns: 1 },
993 {.Opcode: MSP430::SUBC8rc, .PatternStart: 44, .NumPatterns: 1 },
994 {.Opcode: MSP430::XOR16mc, .PatternStart: 45, .NumPatterns: 1 },
995 {.Opcode: MSP430::XOR16rc, .PatternStart: 46, .NumPatterns: 1 },
996 {.Opcode: MSP430::XOR8mc, .PatternStart: 47, .NumPatterns: 1 },
997 {.Opcode: MSP430::XOR8rc, .PatternStart: 48, .NumPatterns: 1 },
998 };
999
1000 static const AliasPattern Patterns[] = {
1001 // MSP430::ADD16mc - 0
1002 {.AsmStrOffset: 0, .AliasCondStart: 0, .NumOperands: 3, .NumConds: 3 },
1003 {.AsmStrOffset: 9, .AliasCondStart: 3, .NumOperands: 3, .NumConds: 3 },
1004 // MSP430::ADD16rc - 2
1005 {.AsmStrOffset: 19, .AliasCondStart: 6, .NumOperands: 3, .NumConds: 3 },
1006 {.AsmStrOffset: 26, .AliasCondStart: 9, .NumOperands: 3, .NumConds: 3 },
1007 // MSP430::ADD8mc - 4
1008 {.AsmStrOffset: 34, .AliasCondStart: 12, .NumOperands: 3, .NumConds: 3 },
1009 {.AsmStrOffset: 45, .AliasCondStart: 15, .NumOperands: 3, .NumConds: 3 },
1010 // MSP430::ADD8rc - 6
1011 {.AsmStrOffset: 57, .AliasCondStart: 18, .NumOperands: 3, .NumConds: 3 },
1012 {.AsmStrOffset: 66, .AliasCondStart: 21, .NumOperands: 3, .NumConds: 3 },
1013 // MSP430::ADDC16mc - 8
1014 {.AsmStrOffset: 76, .AliasCondStart: 24, .NumOperands: 3, .NumConds: 3 },
1015 // MSP430::ADDC16rc - 9
1016 {.AsmStrOffset: 85, .AliasCondStart: 27, .NumOperands: 3, .NumConds: 3 },
1017 // MSP430::ADDC8mc - 10
1018 {.AsmStrOffset: 92, .AliasCondStart: 30, .NumOperands: 3, .NumConds: 3 },
1019 // MSP430::ADDC8rc - 11
1020 {.AsmStrOffset: 103, .AliasCondStart: 33, .NumOperands: 3, .NumConds: 3 },
1021 // MSP430::BIC16rc - 12
1022 {.AsmStrOffset: 112, .AliasCondStart: 36, .NumOperands: 3, .NumConds: 3 },
1023 {.AsmStrOffset: 117, .AliasCondStart: 39, .NumOperands: 3, .NumConds: 3 },
1024 {.AsmStrOffset: 122, .AliasCondStart: 42, .NumOperands: 3, .NumConds: 3 },
1025 {.AsmStrOffset: 127, .AliasCondStart: 45, .NumOperands: 3, .NumConds: 3 },
1026 // MSP430::BIS16rc - 16
1027 {.AsmStrOffset: 132, .AliasCondStart: 48, .NumOperands: 3, .NumConds: 3 },
1028 {.AsmStrOffset: 137, .AliasCondStart: 51, .NumOperands: 3, .NumConds: 3 },
1029 {.AsmStrOffset: 142, .AliasCondStart: 54, .NumOperands: 3, .NumConds: 3 },
1030 {.AsmStrOffset: 147, .AliasCondStart: 57, .NumOperands: 3, .NumConds: 3 },
1031 // MSP430::CMP16mc - 20
1032 {.AsmStrOffset: 152, .AliasCondStart: 60, .NumOperands: 3, .NumConds: 3 },
1033 // MSP430::CMP16rc - 21
1034 {.AsmStrOffset: 161, .AliasCondStart: 63, .NumOperands: 2, .NumConds: 2 },
1035 // MSP430::CMP8mc - 22
1036 {.AsmStrOffset: 168, .AliasCondStart: 65, .NumOperands: 3, .NumConds: 3 },
1037 // MSP430::CMP8rc - 23
1038 {.AsmStrOffset: 179, .AliasCondStart: 68, .NumOperands: 2, .NumConds: 2 },
1039 // MSP430::DADD16mc - 24
1040 {.AsmStrOffset: 188, .AliasCondStart: 70, .NumOperands: 3, .NumConds: 3 },
1041 // MSP430::DADD16rc - 25
1042 {.AsmStrOffset: 198, .AliasCondStart: 73, .NumOperands: 3, .NumConds: 3 },
1043 // MSP430::DADD8mc - 26
1044 {.AsmStrOffset: 206, .AliasCondStart: 76, .NumOperands: 3, .NumConds: 3 },
1045 // MSP430::DADD8rc - 27
1046 {.AsmStrOffset: 218, .AliasCondStart: 79, .NumOperands: 3, .NumConds: 3 },
1047 // MSP430::MOV16mc - 28
1048 {.AsmStrOffset: 228, .AliasCondStart: 82, .NumOperands: 3, .NumConds: 3 },
1049 // MSP430::MOV16rc - 29
1050 {.AsmStrOffset: 237, .AliasCondStart: 85, .NumOperands: 2, .NumConds: 2 },
1051 {.AsmStrOffset: 241, .AliasCondStart: 87, .NumOperands: 2, .NumConds: 2 },
1052 // MSP430::MOV8mc - 31
1053 {.AsmStrOffset: 248, .AliasCondStart: 89, .NumOperands: 3, .NumConds: 3 },
1054 // MSP430::MOV8rc - 32
1055 {.AsmStrOffset: 259, .AliasCondStart: 92, .NumOperands: 2, .NumConds: 2 },
1056 // MSP430::SUB16mc - 33
1057 {.AsmStrOffset: 268, .AliasCondStart: 94, .NumOperands: 3, .NumConds: 3 },
1058 {.AsmStrOffset: 277, .AliasCondStart: 97, .NumOperands: 3, .NumConds: 3 },
1059 // MSP430::SUB16rc - 35
1060 {.AsmStrOffset: 287, .AliasCondStart: 100, .NumOperands: 3, .NumConds: 3 },
1061 {.AsmStrOffset: 294, .AliasCondStart: 103, .NumOperands: 3, .NumConds: 3 },
1062 // MSP430::SUB8mc - 37
1063 {.AsmStrOffset: 302, .AliasCondStart: 106, .NumOperands: 3, .NumConds: 3 },
1064 {.AsmStrOffset: 313, .AliasCondStart: 109, .NumOperands: 3, .NumConds: 3 },
1065 // MSP430::SUB8rc - 39
1066 {.AsmStrOffset: 325, .AliasCondStart: 112, .NumOperands: 3, .NumConds: 3 },
1067 {.AsmStrOffset: 334, .AliasCondStart: 115, .NumOperands: 3, .NumConds: 3 },
1068 // MSP430::SUBC16mc - 41
1069 {.AsmStrOffset: 344, .AliasCondStart: 118, .NumOperands: 3, .NumConds: 3 },
1070 // MSP430::SUBC16rc - 42
1071 {.AsmStrOffset: 353, .AliasCondStart: 121, .NumOperands: 3, .NumConds: 3 },
1072 // MSP430::SUBC8mc - 43
1073 {.AsmStrOffset: 360, .AliasCondStart: 124, .NumOperands: 3, .NumConds: 3 },
1074 // MSP430::SUBC8rc - 44
1075 {.AsmStrOffset: 371, .AliasCondStart: 127, .NumOperands: 3, .NumConds: 3 },
1076 // MSP430::XOR16mc - 45
1077 {.AsmStrOffset: 380, .AliasCondStart: 130, .NumOperands: 3, .NumConds: 3 },
1078 // MSP430::XOR16rc - 46
1079 {.AsmStrOffset: 389, .AliasCondStart: 133, .NumOperands: 3, .NumConds: 3 },
1080 // MSP430::XOR8mc - 47
1081 {.AsmStrOffset: 396, .AliasCondStart: 136, .NumOperands: 3, .NumConds: 3 },
1082 // MSP430::XOR8rc - 48
1083 {.AsmStrOffset: 407, .AliasCondStart: 139, .NumOperands: 3, .NumConds: 3 },
1084 };
1085
1086 static const AliasPatternCond Conds[] = {
1087 // (ADD16mc memdst:$dst, 1) - 0
1088 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1089 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1090 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(1)},
1091 // (ADD16mc memdst:$dst, 2) - 3
1092 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1093 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1094 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(2)},
1095 // (ADD16rc GR16:$dst, 1) - 6
1096 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR16RegClassID},
1097 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1098 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(1)},
1099 // (ADD16rc GR16:$dst, 2) - 9
1100 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR16RegClassID},
1101 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1102 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(2)},
1103 // (ADD8mc memdst:$dst, 1) - 12
1104 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1105 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1106 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(1)},
1107 // (ADD8mc memdst:$dst, 2) - 15
1108 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1109 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1110 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(2)},
1111 // (ADD8rc GR8:$dst, 1) - 18
1112 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR8RegClassID},
1113 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1114 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(1)},
1115 // (ADD8rc GR8:$dst, 2) - 21
1116 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR8RegClassID},
1117 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1118 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(2)},
1119 // (ADDC16mc memdst:$dst, 0) - 24
1120 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1121 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1122 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1123 // (ADDC16rc GR16:$dst, 0) - 27
1124 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR16RegClassID},
1125 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1126 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1127 // (ADDC8mc memdst:$dst, 0) - 30
1128 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1129 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1130 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1131 // (ADDC8rc GR8:$dst, 0) - 33
1132 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR8RegClassID},
1133 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1134 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1135 // (BIC16rc SR, 8) - 36
1136 {.Kind: AliasPatternCond::K_Reg, .Value: MSP430::SR},
1137 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1138 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(8)},
1139 // (BIC16rc SR, 1) - 39
1140 {.Kind: AliasPatternCond::K_Reg, .Value: MSP430::SR},
1141 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1142 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(1)},
1143 // (BIC16rc SR, 4) - 42
1144 {.Kind: AliasPatternCond::K_Reg, .Value: MSP430::SR},
1145 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1146 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(4)},
1147 // (BIC16rc SR, 2) - 45
1148 {.Kind: AliasPatternCond::K_Reg, .Value: MSP430::SR},
1149 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1150 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(2)},
1151 // (BIS16rc SR, 8) - 48
1152 {.Kind: AliasPatternCond::K_Reg, .Value: MSP430::SR},
1153 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1154 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(8)},
1155 // (BIS16rc SR, 1) - 51
1156 {.Kind: AliasPatternCond::K_Reg, .Value: MSP430::SR},
1157 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1158 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(1)},
1159 // (BIS16rc SR, 4) - 54
1160 {.Kind: AliasPatternCond::K_Reg, .Value: MSP430::SR},
1161 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1162 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(4)},
1163 // (BIS16rc SR, 2) - 57
1164 {.Kind: AliasPatternCond::K_Reg, .Value: MSP430::SR},
1165 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1166 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(2)},
1167 // (CMP16mc memdst:$dst, 0) - 60
1168 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1169 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1170 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1171 // (CMP16rc GR16:$dst, 0) - 63
1172 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR16RegClassID},
1173 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1174 // (CMP8mc memdst:$dst, 0) - 65
1175 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1176 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1177 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1178 // (CMP8rc GR8:$dst, 0) - 68
1179 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR8RegClassID},
1180 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1181 // (DADD16mc memdst:$dst, 0) - 70
1182 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1183 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1184 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1185 // (DADD16rc GR16:$dst, 0) - 73
1186 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR16RegClassID},
1187 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1188 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1189 // (DADD8mc memdst:$dst, 0) - 76
1190 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1191 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1192 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1193 // (DADD8rc GR8:$dst, 0) - 79
1194 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR8RegClassID},
1195 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1196 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1197 // (MOV16mc memdst:$dst, 0) - 82
1198 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1199 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1200 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1201 // (MOV16rc CG, 0) - 85
1202 {.Kind: AliasPatternCond::K_Reg, .Value: MSP430::CG},
1203 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1204 // (MOV16rc GR16:$dst, 0) - 87
1205 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR16RegClassID},
1206 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1207 // (MOV8mc memdst:$dst, 0) - 89
1208 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1209 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1210 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1211 // (MOV8rc GR8:$dst, 0) - 92
1212 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR8RegClassID},
1213 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1214 // (SUB16mc memdst:$dst, 1) - 94
1215 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1216 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1217 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(1)},
1218 // (SUB16mc memdst:$dst, 2) - 97
1219 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1220 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1221 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(2)},
1222 // (SUB16rc GR16:$dst, 1) - 100
1223 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR16RegClassID},
1224 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1225 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(1)},
1226 // (SUB16rc GR16:$dst, 2) - 103
1227 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR16RegClassID},
1228 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1229 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(2)},
1230 // (SUB8mc memdst:$dst, 1) - 106
1231 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1232 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1233 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(1)},
1234 // (SUB8mc memdst:$dst, 2) - 109
1235 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1236 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1237 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(2)},
1238 // (SUB8rc GR8:$dst, 1) - 112
1239 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR8RegClassID},
1240 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1241 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(1)},
1242 // (SUB8rc GR8:$dst, 2) - 115
1243 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR8RegClassID},
1244 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1245 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(2)},
1246 // (SUBC16mc memdst:$dst, 0) - 118
1247 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1248 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1249 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1250 // (SUBC16rc GR16:$dst, 0) - 121
1251 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR16RegClassID},
1252 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1253 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1254 // (SUBC8mc memdst:$dst, 0) - 124
1255 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1256 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1257 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1258 // (SUBC8rc GR8:$dst, 0) - 127
1259 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR8RegClassID},
1260 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1261 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(0)},
1262 // (XOR16mc memdst:$dst, -1) - 130
1263 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1264 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1265 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(-1)},
1266 // (XOR16rc GR16:$dst, -1) - 133
1267 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR16RegClassID},
1268 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1269 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(-1)},
1270 // (XOR8mc memdst:$dst, -1) - 136
1271 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1272 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1273 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(-1)},
1274 // (XOR8rc GR8:$dst, -1) - 139
1275 {.Kind: AliasPatternCond::K_RegClass, .Value: MSP430::GR8RegClassID},
1276 {.Kind: AliasPatternCond::K_Ignore, .Value: 0},
1277 {.Kind: AliasPatternCond::K_Imm, .Value: uint32_t(-1)},
1278 };
1279
1280 static const char AsmStrings[] =
1281 /* 0 */ "inc $\xFF\x01\x01\0"
1282 /* 9 */ "incd $\xFF\x01\x01\0"
1283 /* 19 */ "inc $\x01\0"
1284 /* 26 */ "incd $\x01\0"
1285 /* 34 */ "inc.b $\xFF\x01\x01\0"
1286 /* 45 */ "incd.b $\xFF\x01\x01\0"
1287 /* 57 */ "inc.b $\x01\0"
1288 /* 66 */ "incd.b $\x01\0"
1289 /* 76 */ "adc $\xFF\x01\x01\0"
1290 /* 85 */ "adc $\x01\0"
1291 /* 92 */ "adc.b $\xFF\x01\x01\0"
1292 /* 103 */ "adc.b $\x01\0"
1293 /* 112 */ "dint\0"
1294 /* 117 */ "clrc\0"
1295 /* 122 */ "clrn\0"
1296 /* 127 */ "clrz\0"
1297 /* 132 */ "eint\0"
1298 /* 137 */ "setc\0"
1299 /* 142 */ "setn\0"
1300 /* 147 */ "setz\0"
1301 /* 152 */ "tst $\xFF\x01\x01\0"
1302 /* 161 */ "tst $\x01\0"
1303 /* 168 */ "tst.b $\xFF\x01\x01\0"
1304 /* 179 */ "tst.b $\x01\0"
1305 /* 188 */ "dadc $\xFF\x01\x01\0"
1306 /* 198 */ "dadc $\x01\0"
1307 /* 206 */ "dadc.b $\xFF\x01\x01\0"
1308 /* 218 */ "dadc.b $\x01\0"
1309 /* 228 */ "clr $\xFF\x01\x01\0"
1310 /* 237 */ "nop\0"
1311 /* 241 */ "clr $\x01\0"
1312 /* 248 */ "clr.b $\xFF\x01\x01\0"
1313 /* 259 */ "clr.b $\x01\0"
1314 /* 268 */ "dec $\xFF\x01\x01\0"
1315 /* 277 */ "decd $\xFF\x01\x01\0"
1316 /* 287 */ "dec $\x01\0"
1317 /* 294 */ "decd $\x01\0"
1318 /* 302 */ "dec.b $\xFF\x01\x01\0"
1319 /* 313 */ "decd.b $\xFF\x01\x01\0"
1320 /* 325 */ "dec.b $\x01\0"
1321 /* 334 */ "decd.b $\x01\0"
1322 /* 344 */ "sbc $\xFF\x01\x01\0"
1323 /* 353 */ "sbc $\x01\0"
1324 /* 360 */ "sbc.b $\xFF\x01\x01\0"
1325 /* 371 */ "sbc.b $\x01\0"
1326 /* 380 */ "inv $\xFF\x01\x01\0"
1327 /* 389 */ "inv $\x01\0"
1328 /* 396 */ "inv.b $\xFF\x01\x01\0"
1329 /* 407 */ "inv.b $\x01\0"
1330 ;
1331
1332#ifndef NDEBUG
1333 static struct SortCheck {
1334 SortCheck(ArrayRef<PatternsForOpcode> OpToPatterns) {
1335 assert(std::is_sorted(
1336 OpToPatterns.begin(), OpToPatterns.end(),
1337 [](const PatternsForOpcode &L, const PatternsForOpcode &R) {
1338 return L.Opcode < R.Opcode;
1339 }) &&
1340 "tablegen failed to sort opcode patterns");
1341 }
1342 } sortCheckVar(OpToPatterns);
1343#endif
1344
1345 AliasMatchingData M {
1346 .OpToPatterns: ArrayRef(OpToPatterns),
1347 .Patterns: ArrayRef(Patterns),
1348 .PatternConds: ArrayRef(Conds),
1349 .AsmStrings: StringRef(AsmStrings, std::size(AsmStrings)),
1350 .ValidateMCOperand: nullptr,
1351 };
1352 const char *AsmString = matchAliasPatterns(MI, STI: nullptr, M);
1353 if (!AsmString) return false;
1354
1355 unsigned I = 0;
1356 while (AsmString[I] != ' ' && AsmString[I] != '\t' &&
1357 AsmString[I] != '$' && AsmString[I] != '\0')
1358 ++I;
1359 OS << '\t' << StringRef(AsmString, I);
1360 if (AsmString[I] != '\0') {
1361 if (AsmString[I] == ' ' || AsmString[I] == '\t') {
1362 OS << '\t';
1363 ++I;
1364 }
1365 do {
1366 if (AsmString[I] == '$') {
1367 ++I;
1368 if (AsmString[I] == (char)0xff) {
1369 ++I;
1370 int OpIdx = AsmString[I++] - 1;
1371 int PrintMethodIdx = AsmString[I++] - 1;
1372 printCustomAliasOperand(MI, Address, OpIdx, PrintMethodIdx, O&: OS);
1373 } else
1374 printOperand(MI, OpNo: unsigned(AsmString[I++]) - 1, O&: OS);
1375 } else {
1376 OS << AsmString[I++];
1377 }
1378 } while (AsmString[I] != '\0');
1379 }
1380
1381 return true;
1382}
1383
1384void MSP430InstPrinter::printCustomAliasOperand(
1385 const MCInst *MI, uint64_t Address, unsigned OpIdx,
1386 unsigned PrintMethodIdx,
1387 raw_ostream &OS) {
1388 switch (PrintMethodIdx) {
1389 default:
1390 llvm_unreachable("Unknown PrintMethod kind");
1391 break;
1392 case 0:
1393 printSrcMemOperand(MI, OpNo: OpIdx, O&: OS);
1394 break;
1395 }
1396}
1397
1398#endif // PRINT_ALIAS_INSTR
1399