Line data Source code
1 : /*===- TableGen'erated file -------------------------------------*- C++ -*-===*\
2 : |* *|
3 : |* Assembly Writer Source Fragment *|
4 : |* *|
5 : |* Automatically generated file, do not edit! *|
6 : |* *|
7 : \*===----------------------------------------------------------------------===*/
8 :
9 : /// printInstruction - This method is automatically generated by tablegen
10 : /// from the instruction set description.
11 2483 : void MSP430InstPrinter::printInstruction(const MCInst *MI, raw_ostream &O) {
12 : static const char AsmStrs[] = {
13 : /* 0 */ 'r', 'l', 'a', '.', 'b', 9, 0,
14 : /* 7 */ 'r', 'r', 'a', '.', 'b', 9, 0,
15 : /* 14 */ 's', 'u', 'b', '.', 'b', 9, 0,
16 : /* 21 */ 's', 'u', 'b', 'c', '.', 'b', 9, 0,
17 : /* 29 */ 'a', 'd', 'd', 'c', '.', 'b', 9, 0,
18 : /* 37 */ 'b', 'i', 'c', '.', 'b', 9, 0,
19 : /* 44 */ 'c', 'l', 'r', 'c', 10, 9, 'r', 'r', 'c', '.', 'b', 9, 0,
20 : /* 57 */ 'a', 'd', 'd', '.', 'b', 9, 0,
21 : /* 64 */ 'a', 'n', 'd', '.', 'b', 9, 0,
22 : /* 71 */ 'c', 'm', 'p', '.', 'b', 9, 0,
23 : /* 78 */ 'x', 'o', 'r', '.', 'b', 9, 0,
24 : /* 85 */ 'b', 'i', 's', '.', 'b', 9, 0,
25 : /* 92 */ 'b', 'i', 't', '.', 'b', 9, 0,
26 : /* 99 */ 'm', 'o', 'v', '.', 'b', 9, 0,
27 : /* 106 */ 's', 'w', 'p', 'b', 9, 0,
28 : /* 112 */ 'c', 'a', 'l', 'l', 9, 0,
29 : /* 118 */ 'j', 'm', 'p', 9, 0,
30 : /* 123 */ 'b', 'r', 9, 0,
31 : /* 127 */ 's', 'x', 't', 9, 0,
32 : /* 132 */ 'r', 'l', 'a', '.', 'w', 9, 0,
33 : /* 139 */ 'r', 'r', 'a', '.', 'w', 9, 0,
34 : /* 146 */ 's', 'u', 'b', '.', 'w', 9, 0,
35 : /* 153 */ 's', 'u', 'b', 'c', '.', 'w', 9, 0,
36 : /* 161 */ 'a', 'd', 'd', 'c', '.', 'w', 9, 0,
37 : /* 169 */ 'b', 'i', 'c', '.', 'w', 9, 0,
38 : /* 176 */ 'c', 'l', 'r', 'c', 10, 9, 'r', 'r', 'c', '.', 'w', 9, 0,
39 : /* 189 */ 'a', 'd', 'd', '.', 'w', 9, 0,
40 : /* 196 */ 'a', 'n', 'd', '.', 'w', 9, 0,
41 : /* 203 */ 'p', 'u', 's', 'h', '.', 'w', 9, 0,
42 : /* 211 */ 'c', 'm', 'p', '.', 'w', 9, 0,
43 : /* 218 */ 'p', 'o', 'p', '.', 'w', 9, 0,
44 : /* 225 */ 'x', 'o', 'r', '.', 'w', 9, 0,
45 : /* 232 */ 'b', 'i', 's', '.', 'w', 9, 0,
46 : /* 239 */ 'b', 'i', 't', '.', 'w', 9, 0,
47 : /* 246 */ 'm', 'o', 'v', '.', 'w', 9, 0,
48 : /* 253 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'P', 'a', 't', 'c', 'h', 'a', 'b', 'l', 'e', 32, 'R', 'E', 'T', '.', 0,
49 : /* 284 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'T', 'y', 'p', 'e', 'd', 32, 'E', 'v', 'e', 'n', 't', 32, 'L', 'o', 'g', '.', 0,
50 : /* 308 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'C', 'u', 's', 't', 'o', 'm', 32, 'E', 'v', 'e', 'n', 't', 32, 'L', 'o', 'g', '.', 0,
51 : /* 333 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'E', 'n', 't', 'e', 'r', '.', 0,
52 : /* 356 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'T', 'a', 'i', 'l', 32, 'C', 'a', 'l', 'l', 32, 'E', 'x', 'i', 't', '.', 0,
53 : /* 379 */ '#', 32, 'X', 'R', 'a', 'y', 32, 'F', 'u', 'n', 'c', 't', 'i', 'o', 'n', 32, 'E', 'x', 'i', 't', '.', 0,
54 : /* 401 */ 's', 'u', 'b', '.', 'b', 9, '@', 0,
55 : /* 409 */ 'a', 'd', 'd', '.', 'b', 9, '@', 0,
56 : /* 417 */ 'a', 'n', 'd', '.', 'b', 9, '@', 0,
57 : /* 425 */ 'x', 'o', 'r', '.', 'b', 9, '@', 0,
58 : /* 433 */ 'b', 'i', 's', '.', 'b', 9, '@', 0,
59 : /* 441 */ 'm', 'o', 'v', '.', 'b', 9, '@', 0,
60 : /* 449 */ 's', 'u', 'b', '.', 'w', 9, '@', 0,
61 : /* 457 */ 'a', 'd', 'd', '.', 'w', 9, '@', 0,
62 : /* 465 */ 'a', 'n', 'd', '.', 'w', 9, '@', 0,
63 : /* 473 */ 'x', 'o', 'r', '.', 'w', 9, '@', 0,
64 : /* 481 */ 'b', 'i', 's', '.', 'w', 9, '@', 0,
65 : /* 489 */ 'm', 'o', 'v', '.', 'w', 9, '@', 0,
66 : /* 497 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'E', 'N', 'D', 0,
67 : /* 510 */ 'B', 'U', 'N', 'D', 'L', 'E', 0,
68 : /* 517 */ 'D', 'B', 'G', '_', 'V', 'A', 'L', 'U', 'E', 0,
69 : /* 527 */ 'D', 'B', 'G', '_', 'L', 'A', 'B', 'E', 'L', 0,
70 : /* 537 */ '#', 'A', 'D', 'J', 'C', 'A', 'L', 'L', 'S', 'T', 'A', 'C', 'K', 'D', 'O', 'W', 'N', 0,
71 : /* 555 */ '#', 32, 'S', 'r', 'a', '1', '6', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
72 : /* 570 */ '#', 32, 'S', 'h', 'l', '1', '6', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
73 : /* 585 */ '#', 32, 'S', 'r', 'l', '1', '6', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
74 : /* 600 */ '#', 32, 'S', 'e', 'l', 'e', 'c', 't', '1', '6', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
75 : /* 618 */ '#', 32, 'S', 'r', 'a', '8', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
76 : /* 632 */ '#', 32, 'S', 'h', 'l', '8', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
77 : /* 646 */ '#', 32, 'S', 'r', 'l', '8', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
78 : /* 660 */ '#', 32, 'S', 'e', 'l', 'e', 'c', 't', '8', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
79 : /* 677 */ '#', 32, 'A', 'D', 'D', 'f', 'r', 'a', 'm', 'e', 32, 'P', 'S', 'E', 'U', 'D', 'O', 0,
80 : /* 695 */ '#', 'A', 'D', 'J', 'C', 'A', 'L', 'L', 'S', 'T', 'A', 'C', 'K', 'U', 'P', 0,
81 : /* 711 */ 'L', 'I', 'F', 'E', 'T', 'I', 'M', 'E', '_', 'S', 'T', 'A', 'R', 'T', 0,
82 : /* 726 */ 'r', 'e', 't', 'i', 0,
83 : /* 731 */ 'j', 0,
84 : /* 733 */ '#', 32, 'F', 'E', 'n', 't', 'r', 'y', 32, 'c', 'a', 'l', 'l', 0,
85 : /* 747 */ 'n', 'o', 'p', 0,
86 : /* 751 */ 'r', 'e', 't', 0,
87 : };
88 :
89 : static const uint16_t OpInfo0[] = {
90 : 0U, // PHI
91 : 0U, // INLINEASM
92 : 0U, // CFI_INSTRUCTION
93 : 0U, // EH_LABEL
94 : 0U, // GC_LABEL
95 : 0U, // ANNOTATION_LABEL
96 : 0U, // KILL
97 : 0U, // EXTRACT_SUBREG
98 : 0U, // INSERT_SUBREG
99 : 0U, // IMPLICIT_DEF
100 : 0U, // SUBREG_TO_REG
101 : 0U, // COPY_TO_REGCLASS
102 : 518U, // DBG_VALUE
103 : 528U, // DBG_LABEL
104 : 0U, // REG_SEQUENCE
105 : 0U, // COPY
106 : 511U, // BUNDLE
107 : 712U, // LIFETIME_START
108 : 498U, // LIFETIME_END
109 : 0U, // STACKMAP
110 : 734U, // FENTRY_CALL
111 : 0U, // PATCHPOINT
112 : 0U, // LOAD_STACK_GUARD
113 : 0U, // STATEPOINT
114 : 0U, // LOCAL_ESCAPE
115 : 0U, // FAULTING_OP
116 : 0U, // PATCHABLE_OP
117 : 334U, // PATCHABLE_FUNCTION_ENTER
118 : 254U, // PATCHABLE_RET
119 : 380U, // PATCHABLE_FUNCTION_EXIT
120 : 357U, // PATCHABLE_TAIL_CALL
121 : 309U, // PATCHABLE_EVENT_CALL
122 : 285U, // PATCHABLE_TYPED_EVENT_CALL
123 : 0U, // ICALL_BRANCH_FUNNEL
124 : 0U, // G_ADD
125 : 0U, // G_SUB
126 : 0U, // G_MUL
127 : 0U, // G_SDIV
128 : 0U, // G_UDIV
129 : 0U, // G_SREM
130 : 0U, // G_UREM
131 : 0U, // G_AND
132 : 0U, // G_OR
133 : 0U, // G_XOR
134 : 0U, // G_IMPLICIT_DEF
135 : 0U, // G_PHI
136 : 0U, // G_FRAME_INDEX
137 : 0U, // G_GLOBAL_VALUE
138 : 0U, // G_EXTRACT
139 : 0U, // G_UNMERGE_VALUES
140 : 0U, // G_INSERT
141 : 0U, // G_MERGE_VALUES
142 : 0U, // G_PTRTOINT
143 : 0U, // G_INTTOPTR
144 : 0U, // G_BITCAST
145 : 0U, // G_INTRINSIC_TRUNC
146 : 0U, // G_INTRINSIC_ROUND
147 : 0U, // G_LOAD
148 : 0U, // G_SEXTLOAD
149 : 0U, // G_ZEXTLOAD
150 : 0U, // G_STORE
151 : 0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS
152 : 0U, // G_ATOMIC_CMPXCHG
153 : 0U, // G_ATOMICRMW_XCHG
154 : 0U, // G_ATOMICRMW_ADD
155 : 0U, // G_ATOMICRMW_SUB
156 : 0U, // G_ATOMICRMW_AND
157 : 0U, // G_ATOMICRMW_NAND
158 : 0U, // G_ATOMICRMW_OR
159 : 0U, // G_ATOMICRMW_XOR
160 : 0U, // G_ATOMICRMW_MAX
161 : 0U, // G_ATOMICRMW_MIN
162 : 0U, // G_ATOMICRMW_UMAX
163 : 0U, // G_ATOMICRMW_UMIN
164 : 0U, // G_BRCOND
165 : 0U, // G_BRINDIRECT
166 : 0U, // G_INTRINSIC
167 : 0U, // G_INTRINSIC_W_SIDE_EFFECTS
168 : 0U, // G_ANYEXT
169 : 0U, // G_TRUNC
170 : 0U, // G_CONSTANT
171 : 0U, // G_FCONSTANT
172 : 0U, // G_VASTART
173 : 0U, // G_VAARG
174 : 0U, // G_SEXT
175 : 0U, // G_ZEXT
176 : 0U, // G_SHL
177 : 0U, // G_LSHR
178 : 0U, // G_ASHR
179 : 0U, // G_ICMP
180 : 0U, // G_FCMP
181 : 0U, // G_SELECT
182 : 0U, // G_UADDO
183 : 0U, // G_UADDE
184 : 0U, // G_USUBO
185 : 0U, // G_USUBE
186 : 0U, // G_SADDO
187 : 0U, // G_SADDE
188 : 0U, // G_SSUBO
189 : 0U, // G_SSUBE
190 : 0U, // G_UMULO
191 : 0U, // G_SMULO
192 : 0U, // G_UMULH
193 : 0U, // G_SMULH
194 : 0U, // G_FADD
195 : 0U, // G_FSUB
196 : 0U, // G_FMUL
197 : 0U, // G_FMA
198 : 0U, // G_FDIV
199 : 0U, // G_FREM
200 : 0U, // G_FPOW
201 : 0U, // G_FEXP
202 : 0U, // G_FEXP2
203 : 0U, // G_FLOG
204 : 0U, // G_FLOG2
205 : 0U, // G_FNEG
206 : 0U, // G_FPEXT
207 : 0U, // G_FPTRUNC
208 : 0U, // G_FPTOSI
209 : 0U, // G_FPTOUI
210 : 0U, // G_SITOFP
211 : 0U, // G_UITOFP
212 : 0U, // G_FABS
213 : 0U, // G_GEP
214 : 0U, // G_PTR_MASK
215 : 0U, // G_BR
216 : 0U, // G_INSERT_VECTOR_ELT
217 : 0U, // G_EXTRACT_VECTOR_ELT
218 : 0U, // G_SHUFFLE_VECTOR
219 : 0U, // G_CTTZ
220 : 0U, // G_CTTZ_ZERO_UNDEF
221 : 0U, // G_CTLZ
222 : 0U, // G_CTLZ_ZERO_UNDEF
223 : 0U, // G_CTPOP
224 : 0U, // G_BSWAP
225 : 0U, // G_ADDRSPACE_CAST
226 : 0U, // G_BLOCK_ADDR
227 : 1186U, // ADC16mi
228 : 18594U, // ADC16mm
229 : 1186U, // ADC16mr
230 : 1186U, // ADC16ri
231 : 34978U, // ADC16rm
232 : 1186U, // ADC16rr
233 : 1054U, // ADC8mi
234 : 18462U, // ADC8mm
235 : 1054U, // ADC8mr
236 : 1054U, // ADC8ri
237 : 34846U, // ADC8rm
238 : 1054U, // ADC8rr
239 : 1214U, // ADD16mi
240 : 18622U, // ADD16mm
241 : 1214U, // ADD16mr
242 : 1214U, // ADD16ri
243 : 35006U, // ADD16rm
244 : 3530U, // ADD16rm_POST
245 : 1214U, // ADD16rr
246 : 1082U, // ADD8mi
247 : 18490U, // ADD8mm
248 : 1082U, // ADD8mr
249 : 1082U, // ADD8ri
250 : 34874U, // ADD8rm
251 : 3482U, // ADD8rm_POST
252 : 1082U, // ADD8rr
253 : 678U, // ADDframe
254 : 538U, // ADJCALLSTACKDOWN
255 : 696U, // ADJCALLSTACKUP
256 : 1221U, // AND16mi
257 : 18629U, // AND16mm
258 : 1221U, // AND16mr
259 : 1221U, // AND16ri
260 : 35013U, // AND16rm
261 : 3538U, // AND16rm_POST
262 : 1221U, // AND16rr
263 : 1089U, // AND8mi
264 : 18497U, // AND8mm
265 : 1089U, // AND8mr
266 : 1089U, // AND8ri
267 : 34881U, // AND8rm
268 : 3490U, // AND8rm_POST
269 : 1089U, // AND8rr
270 : 18602U, // BIC16mm
271 : 1194U, // BIC16mr
272 : 34986U, // BIC16rm
273 : 1194U, // BIC16rr
274 : 18470U, // BIC8mm
275 : 1062U, // BIC8mr
276 : 34854U, // BIC8rm
277 : 1062U, // BIC8rr
278 : 1264U, // BIT16mi
279 : 18672U, // BIT16mm
280 : 1264U, // BIT16mr
281 : 4336U, // BIT16ri
282 : 5360U, // BIT16rm
283 : 4336U, // BIT16rr
284 : 1117U, // BIT8mi
285 : 18525U, // BIT8mm
286 : 1117U, // BIT8mr
287 : 4189U, // BIT8ri
288 : 5213U, // BIT8rm
289 : 4189U, // BIT8rr
290 : 6268U, // Bi
291 : 7292U, // Bm
292 : 6268U, // Br
293 : 6257U, // CALLi
294 : 8305U, // CALLm
295 : 6257U, // CALLr
296 : 1236U, // CMP16mi
297 : 1236U, // CMP16mr
298 : 4308U, // CMP16ri
299 : 5332U, // CMP16rm
300 : 4308U, // CMP16rr
301 : 1096U, // CMP8mi
302 : 1096U, // CMP8mr
303 : 4168U, // CMP8ri
304 : 5192U, // CMP8rm
305 : 4168U, // CMP8rr
306 : 9948U, // JCC
307 : 10359U, // JMP
308 : 1271U, // MOV16mi
309 : 18679U, // MOV16mm
310 : 1271U, // MOV16mr
311 : 4343U, // MOV16ri
312 : 5367U, // MOV16rm
313 : 50666U, // MOV16rm_POST
314 : 4343U, // MOV16rr
315 : 1124U, // MOV8mi
316 : 18532U, // MOV8mm
317 : 1124U, // MOV8mr
318 : 4196U, // MOV8ri
319 : 5220U, // MOV8rm
320 : 50618U, // MOV8rm_POST
321 : 4196U, // MOV8rr
322 : 5220U, // MOVZX16rm8
323 : 4196U, // MOVZX16rr8
324 : 748U, // NOP
325 : 1257U, // OR16mi
326 : 18665U, // OR16mm
327 : 1257U, // OR16mr
328 : 1257U, // OR16ri
329 : 35049U, // OR16rm
330 : 3554U, // OR16rm_POST
331 : 1257U, // OR16rr
332 : 1110U, // OR8mi
333 : 18518U, // OR8mm
334 : 1110U, // OR8mr
335 : 1110U, // OR8ri
336 : 34902U, // OR8rm
337 : 3506U, // OR8rm_POST
338 : 1110U, // OR8rr
339 : 6363U, // POP16r
340 : 6348U, // PUSH16r
341 : 752U, // RET
342 : 727U, // RETI
343 : 6284U, // SAR16r1
344 : 6321U, // SAR16r1c
345 : 6152U, // SAR8r1
346 : 6189U, // SAR8r1c
347 : 1178U, // SBC16mi
348 : 18586U, // SBC16mm
349 : 1178U, // SBC16mr
350 : 1178U, // SBC16ri
351 : 34970U, // SBC16rm
352 : 1178U, // SBC16rr
353 : 1046U, // SBC8mi
354 : 18454U, // SBC8mm
355 : 1046U, // SBC8mr
356 : 1046U, // SBC8ri
357 : 34838U, // SBC8rm
358 : 1046U, // SBC8rr
359 : 6272U, // SEXT16r
360 : 6277U, // SHL16r1
361 : 6145U, // SHL8r1
362 : 1171U, // SUB16mi
363 : 18579U, // SUB16mm
364 : 1171U, // SUB16mr
365 : 1171U, // SUB16ri
366 : 34963U, // SUB16rm
367 : 3522U, // SUB16rm_POST
368 : 1171U, // SUB16rr
369 : 1039U, // SUB8mi
370 : 18447U, // SUB8mm
371 : 1039U, // SUB8mr
372 : 1039U, // SUB8ri
373 : 34831U, // SUB8rm
374 : 3474U, // SUB8rm_POST
375 : 1039U, // SUB8rr
376 : 6251U, // SWPB16r
377 : 601U, // Select16
378 : 661U, // Select8
379 : 571U, // Shl16
380 : 633U, // Shl8
381 : 556U, // Sra16
382 : 619U, // Sra8
383 : 586U, // Srl16
384 : 647U, // Srl8
385 : 1250U, // XOR16mi
386 : 18658U, // XOR16mm
387 : 1250U, // XOR16mr
388 : 1250U, // XOR16ri
389 : 35042U, // XOR16rm
390 : 3546U, // XOR16rm_POST
391 : 1250U, // XOR16rr
392 : 1103U, // XOR8mi
393 : 18511U, // XOR8mm
394 : 1103U, // XOR8mr
395 : 1103U, // XOR8ri
396 : 34895U, // XOR8rm
397 : 3498U, // XOR8rm_POST
398 : 1103U, // XOR8rr
399 : 4196U, // ZEXT16r
400 : };
401 :
402 : static const uint8_t OpInfo1[] = {
403 : 0U, // PHI
404 : 0U, // INLINEASM
405 : 0U, // CFI_INSTRUCTION
406 : 0U, // EH_LABEL
407 : 0U, // GC_LABEL
408 : 0U, // ANNOTATION_LABEL
409 : 0U, // KILL
410 : 0U, // EXTRACT_SUBREG
411 : 0U, // INSERT_SUBREG
412 : 0U, // IMPLICIT_DEF
413 : 0U, // SUBREG_TO_REG
414 : 0U, // COPY_TO_REGCLASS
415 : 0U, // DBG_VALUE
416 : 0U, // DBG_LABEL
417 : 0U, // REG_SEQUENCE
418 : 0U, // COPY
419 : 0U, // BUNDLE
420 : 0U, // LIFETIME_START
421 : 0U, // LIFETIME_END
422 : 0U, // STACKMAP
423 : 0U, // FENTRY_CALL
424 : 0U, // PATCHPOINT
425 : 0U, // LOAD_STACK_GUARD
426 : 0U, // STATEPOINT
427 : 0U, // LOCAL_ESCAPE
428 : 0U, // FAULTING_OP
429 : 0U, // PATCHABLE_OP
430 : 0U, // PATCHABLE_FUNCTION_ENTER
431 : 0U, // PATCHABLE_RET
432 : 0U, // PATCHABLE_FUNCTION_EXIT
433 : 0U, // PATCHABLE_TAIL_CALL
434 : 0U, // PATCHABLE_EVENT_CALL
435 : 0U, // PATCHABLE_TYPED_EVENT_CALL
436 : 0U, // ICALL_BRANCH_FUNNEL
437 : 0U, // G_ADD
438 : 0U, // G_SUB
439 : 0U, // G_MUL
440 : 0U, // G_SDIV
441 : 0U, // G_UDIV
442 : 0U, // G_SREM
443 : 0U, // G_UREM
444 : 0U, // G_AND
445 : 0U, // G_OR
446 : 0U, // G_XOR
447 : 0U, // G_IMPLICIT_DEF
448 : 0U, // G_PHI
449 : 0U, // G_FRAME_INDEX
450 : 0U, // G_GLOBAL_VALUE
451 : 0U, // G_EXTRACT
452 : 0U, // G_UNMERGE_VALUES
453 : 0U, // G_INSERT
454 : 0U, // G_MERGE_VALUES
455 : 0U, // G_PTRTOINT
456 : 0U, // G_INTTOPTR
457 : 0U, // G_BITCAST
458 : 0U, // G_INTRINSIC_TRUNC
459 : 0U, // G_INTRINSIC_ROUND
460 : 0U, // G_LOAD
461 : 0U, // G_SEXTLOAD
462 : 0U, // G_ZEXTLOAD
463 : 0U, // G_STORE
464 : 0U, // G_ATOMIC_CMPXCHG_WITH_SUCCESS
465 : 0U, // G_ATOMIC_CMPXCHG
466 : 0U, // G_ATOMICRMW_XCHG
467 : 0U, // G_ATOMICRMW_ADD
468 : 0U, // G_ATOMICRMW_SUB
469 : 0U, // G_ATOMICRMW_AND
470 : 0U, // G_ATOMICRMW_NAND
471 : 0U, // G_ATOMICRMW_OR
472 : 0U, // G_ATOMICRMW_XOR
473 : 0U, // G_ATOMICRMW_MAX
474 : 0U, // G_ATOMICRMW_MIN
475 : 0U, // G_ATOMICRMW_UMAX
476 : 0U, // G_ATOMICRMW_UMIN
477 : 0U, // G_BRCOND
478 : 0U, // G_BRINDIRECT
479 : 0U, // G_INTRINSIC
480 : 0U, // G_INTRINSIC_W_SIDE_EFFECTS
481 : 0U, // G_ANYEXT
482 : 0U, // G_TRUNC
483 : 0U, // G_CONSTANT
484 : 0U, // G_FCONSTANT
485 : 0U, // G_VASTART
486 : 0U, // G_VAARG
487 : 0U, // G_SEXT
488 : 0U, // G_ZEXT
489 : 0U, // G_SHL
490 : 0U, // G_LSHR
491 : 0U, // G_ASHR
492 : 0U, // G_ICMP
493 : 0U, // G_FCMP
494 : 0U, // G_SELECT
495 : 0U, // G_UADDO
496 : 0U, // G_UADDE
497 : 0U, // G_USUBO
498 : 0U, // G_USUBE
499 : 0U, // G_SADDO
500 : 0U, // G_SADDE
501 : 0U, // G_SSUBO
502 : 0U, // G_SSUBE
503 : 0U, // G_UMULO
504 : 0U, // G_SMULO
505 : 0U, // G_UMULH
506 : 0U, // G_SMULH
507 : 0U, // G_FADD
508 : 0U, // G_FSUB
509 : 0U, // G_FMUL
510 : 0U, // G_FMA
511 : 0U, // G_FDIV
512 : 0U, // G_FREM
513 : 0U, // G_FPOW
514 : 0U, // G_FEXP
515 : 0U, // G_FEXP2
516 : 0U, // G_FLOG
517 : 0U, // G_FLOG2
518 : 0U, // G_FNEG
519 : 0U, // G_FPEXT
520 : 0U, // G_FPTRUNC
521 : 0U, // G_FPTOSI
522 : 0U, // G_FPTOUI
523 : 0U, // G_SITOFP
524 : 0U, // G_UITOFP
525 : 0U, // G_FABS
526 : 0U, // G_GEP
527 : 0U, // G_PTR_MASK
528 : 0U, // G_BR
529 : 0U, // G_INSERT_VECTOR_ELT
530 : 0U, // G_EXTRACT_VECTOR_ELT
531 : 0U, // G_SHUFFLE_VECTOR
532 : 0U, // G_CTTZ
533 : 0U, // G_CTTZ_ZERO_UNDEF
534 : 0U, // G_CTLZ
535 : 0U, // G_CTLZ_ZERO_UNDEF
536 : 0U, // G_CTPOP
537 : 0U, // G_BSWAP
538 : 0U, // G_ADDRSPACE_CAST
539 : 0U, // G_BLOCK_ADDR
540 : 0U, // ADC16mi
541 : 0U, // ADC16mm
542 : 0U, // ADC16mr
543 : 1U, // ADC16ri
544 : 0U, // ADC16rm
545 : 1U, // ADC16rr
546 : 0U, // ADC8mi
547 : 0U, // ADC8mm
548 : 0U, // ADC8mr
549 : 1U, // ADC8ri
550 : 0U, // ADC8rm
551 : 1U, // ADC8rr
552 : 0U, // ADD16mi
553 : 0U, // ADD16mm
554 : 0U, // ADD16mr
555 : 1U, // ADD16ri
556 : 0U, // ADD16rm
557 : 0U, // ADD16rm_POST
558 : 1U, // ADD16rr
559 : 0U, // ADD8mi
560 : 0U, // ADD8mm
561 : 0U, // ADD8mr
562 : 1U, // ADD8ri
563 : 0U, // ADD8rm
564 : 0U, // ADD8rm_POST
565 : 1U, // ADD8rr
566 : 0U, // ADDframe
567 : 0U, // ADJCALLSTACKDOWN
568 : 0U, // ADJCALLSTACKUP
569 : 0U, // AND16mi
570 : 0U, // AND16mm
571 : 0U, // AND16mr
572 : 1U, // AND16ri
573 : 0U, // AND16rm
574 : 0U, // AND16rm_POST
575 : 1U, // AND16rr
576 : 0U, // AND8mi
577 : 0U, // AND8mm
578 : 0U, // AND8mr
579 : 1U, // AND8ri
580 : 0U, // AND8rm
581 : 0U, // AND8rm_POST
582 : 1U, // AND8rr
583 : 0U, // BIC16mm
584 : 0U, // BIC16mr
585 : 0U, // BIC16rm
586 : 1U, // BIC16rr
587 : 0U, // BIC8mm
588 : 0U, // BIC8mr
589 : 0U, // BIC8rm
590 : 1U, // BIC8rr
591 : 0U, // BIT16mi
592 : 0U, // BIT16mm
593 : 0U, // BIT16mr
594 : 0U, // BIT16ri
595 : 0U, // BIT16rm
596 : 0U, // BIT16rr
597 : 0U, // BIT8mi
598 : 0U, // BIT8mm
599 : 0U, // BIT8mr
600 : 0U, // BIT8ri
601 : 0U, // BIT8rm
602 : 0U, // BIT8rr
603 : 0U, // Bi
604 : 0U, // Bm
605 : 0U, // Br
606 : 0U, // CALLi
607 : 0U, // CALLm
608 : 0U, // CALLr
609 : 0U, // CMP16mi
610 : 0U, // CMP16mr
611 : 0U, // CMP16ri
612 : 0U, // CMP16rm
613 : 0U, // CMP16rr
614 : 0U, // CMP8mi
615 : 0U, // CMP8mr
616 : 0U, // CMP8ri
617 : 0U, // CMP8rm
618 : 0U, // CMP8rr
619 : 0U, // JCC
620 : 0U, // JMP
621 : 0U, // MOV16mi
622 : 0U, // MOV16mm
623 : 0U, // MOV16mr
624 : 0U, // MOV16ri
625 : 0U, // MOV16rm
626 : 0U, // MOV16rm_POST
627 : 0U, // MOV16rr
628 : 0U, // MOV8mi
629 : 0U, // MOV8mm
630 : 0U, // MOV8mr
631 : 0U, // MOV8ri
632 : 0U, // MOV8rm
633 : 0U, // MOV8rm_POST
634 : 0U, // MOV8rr
635 : 0U, // MOVZX16rm8
636 : 0U, // MOVZX16rr8
637 : 0U, // NOP
638 : 0U, // OR16mi
639 : 0U, // OR16mm
640 : 0U, // OR16mr
641 : 1U, // OR16ri
642 : 0U, // OR16rm
643 : 0U, // OR16rm_POST
644 : 1U, // OR16rr
645 : 0U, // OR8mi
646 : 0U, // OR8mm
647 : 0U, // OR8mr
648 : 1U, // OR8ri
649 : 0U, // OR8rm
650 : 0U, // OR8rm_POST
651 : 1U, // OR8rr
652 : 0U, // POP16r
653 : 0U, // PUSH16r
654 : 0U, // RET
655 : 0U, // RETI
656 : 0U, // SAR16r1
657 : 0U, // SAR16r1c
658 : 0U, // SAR8r1
659 : 0U, // SAR8r1c
660 : 0U, // SBC16mi
661 : 0U, // SBC16mm
662 : 0U, // SBC16mr
663 : 1U, // SBC16ri
664 : 0U, // SBC16rm
665 : 1U, // SBC16rr
666 : 0U, // SBC8mi
667 : 0U, // SBC8mm
668 : 0U, // SBC8mr
669 : 1U, // SBC8ri
670 : 0U, // SBC8rm
671 : 1U, // SBC8rr
672 : 0U, // SEXT16r
673 : 0U, // SHL16r1
674 : 0U, // SHL8r1
675 : 0U, // SUB16mi
676 : 0U, // SUB16mm
677 : 0U, // SUB16mr
678 : 1U, // SUB16ri
679 : 0U, // SUB16rm
680 : 0U, // SUB16rm_POST
681 : 1U, // SUB16rr
682 : 0U, // SUB8mi
683 : 0U, // SUB8mm
684 : 0U, // SUB8mr
685 : 1U, // SUB8ri
686 : 0U, // SUB8rm
687 : 0U, // SUB8rm_POST
688 : 1U, // SUB8rr
689 : 0U, // SWPB16r
690 : 0U, // Select16
691 : 0U, // Select8
692 : 0U, // Shl16
693 : 0U, // Shl8
694 : 0U, // Sra16
695 : 0U, // Sra8
696 : 0U, // Srl16
697 : 0U, // Srl8
698 : 0U, // XOR16mi
699 : 0U, // XOR16mm
700 : 0U, // XOR16mr
701 : 1U, // XOR16ri
702 : 0U, // XOR16rm
703 : 0U, // XOR16rm_POST
704 : 1U, // XOR16rr
705 : 0U, // XOR8mi
706 : 0U, // XOR8mm
707 : 0U, // XOR8mr
708 : 1U, // XOR8ri
709 : 0U, // XOR8rm
710 : 0U, // XOR8rm_POST
711 : 1U, // XOR8rr
712 : 0U, // ZEXT16r
713 : };
714 :
715 2483 : O << "\t";
716 :
717 : // Emit the opcode for the instruction.
718 : uint32_t Bits = 0;
719 2483 : Bits |= OpInfo0[MI->getOpcode()] << 0;
720 2483 : Bits |= OpInfo1[MI->getOpcode()] << 16;
721 : assert(Bits != 0 && "Cannot print this instruction.");
722 2483 : O << AsmStrs+(Bits & 1023)-1;
723 :
724 :
725 : // Fragment 0 encoded into 4 bits for 11 unique commands.
726 2483 : switch ((Bits >> 10) & 15) {
727 0 : default: llvm_unreachable("Invalid command number.");
728 : case 0:
729 : // DBG_VALUE, DBG_LABEL, BUNDLE, LIFETIME_START, LIFETIME_END, FENTRY_CAL...
730 : return;
731 : break;
732 1097 : case 1:
733 : // ADC16mi, ADC16mr, ADC16ri, ADC16rr, ADC8mi, ADC8mr, ADC8ri, ADC8rr, AD...
734 1097 : printOperand(MI, 2, O);
735 1097 : break;
736 44 : case 2:
737 : // ADC16mm, ADC16rm, ADC8mm, ADC8rm, ADD16mm, ADD16rm, ADD8mm, ADD8rm, AN...
738 44 : printSrcMemOperand(MI, 2, O);
739 44 : O << ", ";
740 44 : break;
741 5 : case 3:
742 : // ADD16rm_POST, ADD8rm_POST, AND16rm_POST, AND8rm_POST, OR16rm_POST, OR8...
743 5 : printOperand(MI, 3, O);
744 5 : O << "+, ";
745 5 : printOperand(MI, 0, O);
746 5 : return;
747 : break;
748 371 : case 4:
749 : // BIT16ri, BIT16rr, BIT8ri, BIT8rr, CMP16ri, CMP16rr, CMP8ri, CMP8rr, MO...
750 371 : printOperand(MI, 1, O);
751 371 : O << ", ";
752 371 : printOperand(MI, 0, O);
753 371 : return;
754 : break;
755 325 : case 5:
756 : // BIT16rm, BIT8rm, CMP16rm, CMP8rm, MOV16rm, MOV8rm, MOVZX16rm8
757 325 : printSrcMemOperand(MI, 1, O);
758 325 : O << ", ";
759 325 : printOperand(MI, 0, O);
760 325 : return;
761 : break;
762 288 : case 6:
763 : // Bi, Br, CALLi, CALLr, POP16r, PUSH16r, SAR16r1, SAR16r1c, SAR8r1, SAR8...
764 288 : printOperand(MI, 0, O);
765 288 : return;
766 : break;
767 2 : case 7:
768 : // Bm
769 2 : printSrcMemOperand(MI, 0, O);
770 2 : return;
771 : break;
772 0 : case 8:
773 : // CALLm
774 0 : printSrcMemOperand(MI, 0, O, "mem");
775 0 : return;
776 : break;
777 52 : case 9:
778 : // JCC
779 52 : printCCOperand(MI, 1, O);
780 52 : O << "\t";
781 52 : printPCRelImmOperand(MI, 0, O);
782 52 : return;
783 : break;
784 7 : case 10:
785 : // JMP
786 7 : printPCRelImmOperand(MI, 0, O);
787 7 : return;
788 : break;
789 : }
790 :
791 :
792 : // Fragment 1 encoded into 2 bits for 4 unique commands.
793 1141 : switch ((Bits >> 14) & 3) {
794 0 : default: llvm_unreachable("Invalid command number.");
795 1097 : case 0:
796 : // ADC16mi, ADC16mr, ADC16ri, ADC16rr, ADC8mi, ADC8mr, ADC8ri, ADC8rr, AD...
797 1097 : O << ", ";
798 : break;
799 27 : case 1:
800 : // ADC16mm, ADC8mm, ADD16mm, ADD8mm, AND16mm, AND8mm, BIC16mm, BIC8mm, BI...
801 27 : printSrcMemOperand(MI, 0, O);
802 27 : return;
803 : break;
804 17 : case 2:
805 : // ADC16rm, ADC8rm, ADD16rm, ADD8rm, AND16rm, AND8rm, BIC16rm, BIC8rm, OR...
806 17 : printOperand(MI, 0, O);
807 17 : return;
808 : break;
809 0 : case 3:
810 : // MOV16rm_POST, MOV8rm_POST
811 0 : O << "+, ";
812 0 : printOperand(MI, 0, O);
813 0 : return;
814 : break;
815 : }
816 :
817 :
818 : // Fragment 2 encoded into 1 bits for 2 unique commands.
819 1097 : if ((Bits >> 16) & 1) {
820 : // ADC16ri, ADC16rr, ADC8ri, ADC8rr, ADD16ri, ADD16rr, ADD8ri, ADD8rr, AN...
821 246 : printOperand(MI, 0, O);
822 246 : return;
823 : } else {
824 : // ADC16mi, ADC16mr, ADC8mi, ADC8mr, ADD16mi, ADD16mr, ADD8mi, ADD8mr, AN...
825 851 : printSrcMemOperand(MI, 0, O);
826 851 : return;
827 : }
828 :
829 : }
830 :
831 :
832 : /// getRegisterName - This method is automatically generated by tblgen
833 : /// from the register set description. This returns the assembler name
834 : /// for the specified register.
835 2012 : const char *MSP430InstPrinter::getRegisterName(unsigned RegNo) {
836 : assert(RegNo && RegNo < 33 && "Invalid register number!");
837 :
838 : static const char AsmStrs[] = {
839 : /* 0 */ 'r', '1', '0', 0,
840 : /* 4 */ 'r', '0', 0,
841 : /* 7 */ 'r', '1', '1', 0,
842 : /* 11 */ 'r', '1', 0,
843 : /* 14 */ 'r', '1', '2', 0,
844 : /* 18 */ 'r', '2', 0,
845 : /* 21 */ 'r', '1', '3', 0,
846 : /* 25 */ 'r', '3', 0,
847 : /* 28 */ 'r', '1', '4', 0,
848 : /* 32 */ 'r', '4', 0,
849 : /* 35 */ 'r', '1', '5', 0,
850 : /* 39 */ 'r', '5', 0,
851 : /* 42 */ 'r', '6', 0,
852 : /* 45 */ 'r', '7', 0,
853 : /* 48 */ 'r', '8', 0,
854 : /* 51 */ 'r', '9', 0,
855 : };
856 :
857 : static const uint8_t RegAsmOffset[] = {
858 : 25, 25, 32, 32, 4, 4, 11, 11, 18, 18, 39, 42, 45, 48,
859 : 51, 0, 7, 14, 21, 28, 35, 39, 42, 45, 48, 51, 0, 7,
860 : 14, 21, 28, 35,
861 : };
862 :
863 : assert (*(AsmStrs+RegAsmOffset[RegNo-1]) &&
864 : "Invalid alt name index for register!");
865 2012 : return AsmStrs+RegAsmOffset[RegNo-1];
866 : }
867 :
868 : #ifdef PRINT_ALIAS_INSTR
869 : #undef PRINT_ALIAS_INSTR
870 :
871 : bool MSP430InstPrinter::printAliasInstr(const MCInst *MI, raw_ostream &OS) {
872 : return false;
873 : }
874 :
875 : #endif // PRINT_ALIAS_INSTR
|