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