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